redis拾趣(客户端连接,keys命令,数据备份,缓存有效期等)
1.客户端连接
为了安全保护,redis支持绑定IP跟端口,这个通过conf配置文件中的bind跟port来设置。
绑定后登录client控制台时就需要写明ip(或者hostname)跟端口了,如:
./redis_cli -h 10.137.19.19 -p 6389
redis_cli客户端支持远程登录,所以在集群环境中我们不需要切换机器,直接
./redis_cli -h hostname -p 端口 就可以登录到任何一台主机。
另外它还带有循环执行命令等各种有用的功能,可以./redis-cli --help看到
2.用keys命令查找
我们知道keys * ,是显示当前库下所有的keys。
另外keys命令还支持模糊查询:
如:
keys 28*43
会显示如下的key列表
1) "285143"
2) "286043"
keys 2??3??
显示如下:
1) "295313"
2) "295328"
3) "295332"
4) "295375"
5) "287360"
?是长度匹配,*是全局匹配。
另外想知道key的数量我们可以输入:
dbsize
3.redis的数据备份
redis是自带备份功能的,原先是通过设置配置文件中的:
save 900 1
save 300 10
save 60 10000
这样我们就可以把redis当成一个数据库来用。
但是目前为了性能需要,取消了自动备份数据功能,完全当做一个缓存数据库来用。
这样给性能测试带来也很多不便,每次都要刷数据,好在redis自带了数据备份功能:
在redis客户端上输:SAVE或者BGSAVE即可完成备份。
推荐使用BGSAVE,redis会启动一个单独的线程完成备份,而SAVE命令则不会。
数据会备份在redis的db目录下。这个是通过设置conf中的dbfilename参数来指定的。
这样下次redis重启时所有的数据都不会丢失,redis会自动去目录下读取备份文件启动。
实测了一下,启动时redis读取3G的备份文件只需要十秒左右,还是相当快的。
4.缓存有效期的设置
我们通过expire命令设置一对k—v的有效期,如:
EXPIRE key seconds
然后通过TTL命令就可以看到这个key还有多久就过期了:
TTL key
如果想这个key没有过期时间,可以这样:
PERSIST key
当然,当数据满时,redis会根据算法剔除相应的键值对,目前支持这么多方式剔除:
# volatile-lru -> remove the key with an expire set using an LRU algorithm
# allkeys-lru -> remove any key accordingly to the LRU algorithm
# volatile-random -> remove a random key with an expire set
# allkeys->random -> remove a random key, any key
# volatile-ttl -> remove the key with the nearest expire time (minor TTL)
# noeviction -> don't expire at all, just return an error on write operations
xmpp目前采用allkeys-lru,这个通过设置maxmemory-policy来确定。
5.info命令
客户端输info能显示redis目前的运行情况。
是监测时常用的一个命令。通常跟
redis_cli -r 循环次数 -i 循环时间
配合使用
如需要监视redis每秒有多少对KV由于内存满了被驱逐出去,可以这样写:
./redis-cli -r 10 -i 1 info | grep evicted_keys
6.redis内存占用
redis的内存占用在info里面可以看到:
used_memory:8536027504
used_memory_human:7.95G
used_memory_rss:8537772032
mem_fragmentation_ratio:1.00
use_tcmalloc:0
used_memory代表redis占用内存。包括redis自身程序占用的内存。
used_memory_human代表KV数据占据的内存。
used_memory_rss代表涵盖内存碎片的内存。
redis在分配内存的时候采用了malloc,类似于java的new。
目前支持三种内存分配器:tcmalloc,jemalloc和libc
对于2.2.14版本来说如果没有安装tcmalloc,jemalloc就会默认使用libc。
这个可以通过use_tcmalloc来看到使用了哪种。
mem_fragmentation_ratio则代表了分配器碎片率。(原来使用C也会产生内存碎片。。。。。。。。)
通过这几个参数基本能看到目前redis的内存情况,但是这个不是最准确的,最准确的话还是结合shell命令(如ps,top)看比较好,不过通常没有太大误差。
redis拾趣(客户端连接,keys命令,数据备份,缓存有效期等)的更多相关文章
- Redis客户端连接以及持久化数据(三)
0.Redis目录结构 1)Redis介绍及部署在CentOS7上(一) 2)Redis指令与数据结构(二) 3)Redis客户端连接以及持久化数据(三) 4)Redis高可用之主从复制实践(四) 5 ...
- Redis 千万不要乱用KEYS命令,不然会挨打的
Redis现如今使用的场景越来越多?如何批量删除key呢? 有人说用KEYS命令,刚开始学Redis的时候就是用这个命令列出库中键. KEYS命令要谨慎使用. 为何?客观别急,我们先一步步来看. KE ...
- Mysql数据库常用的命令 数据备份 恢复 远程
远程数据库 格式: mysql -h主机地址 -u用户名 -p用户密码数据库 mysql -h 42.51.150.68 -u yang -p discuz mysql设置密码 mysql>us ...
- Redis 的 KEYS 命令不能乱用啊
KESY 命令 时间复杂度: O(N) , 假设Redis中的键名和给定的模式的长度有限的情况下,N为数据库中key的个数. Redis Keys 命令用于查找所有符合给定模式 pattern 的 k ...
- redis基础操作~~数据备份与恢复、数据安全、性能测试、客户端连接、分区
数据备份与恢复 数据备份redis save 命令用于创建当前数据库的备份. redis 127.0.0.1:6379> SAVE OK 该命令将在 redis 安装目录中创建dump.rdb文 ...
- Redis 数据备份与恢复,安全,性能测试,客户端连接,管道技术,分区(四)
Redis 数据备份与恢复 Redis SAVE 命令用于创建当前数据库的备份. 语法 redis Save 命令基本语法如下: redis 127.0.0.1:6379> SAVE 实例 re ...
- 【Azure Redis 缓存】Azure Redis出现了超时问题后,记录一步一步的排查出异常的客户端连接和所执行命令的步骤
问题描述 Azure Redis在使用的过程中,多次无规律的出现超时问题.抓取到客户端的异常错误后,想进一步的分析是何原因导致了如下异常呢? Timeout awaiting response (ou ...
- Zookeeper命令行操作(常用命令;客户端连接;查看znode路径;创建节点;获取znode数据,查看节点内容,设置节点内容,删除节点;监听znode事件;telnet连接zookeeper)
8.1.常用命令 启动ZK服务 bin/zkServer.sh start 查看ZK服务状态 bin/zkServer.sh status 停止ZK服务 bin/zkServer.sh stop 重启 ...
- Redis的KEYS命令引起宕机事件
摘要: 使用 Redis 的开发者必看,吸取教训啊! 原文:Redis 的 KEYS 命令引起 RDS 数据库雪崩,RDS 发生两次宕机,造成几百万的资金损失 作者:陈浩翔 Fundebug经授权转载 ...
随机推荐
- CAN总线中节点ID相同会怎样?
CAN-bus网络中原则上不允许两个节点具有相同的ID段,但如果两个节点ID段相同会怎样呢? 实验前,我们首先要对CAN报文的结构组成.仲裁原理有清晰的认识. 一.CAN报文结构 目前使用最广泛的CA ...
- 洛谷 P1417烹调方案
题目大意: 一共有n件食材,每件食材有三个属性,ai,bi和ci,如果在t时刻完成第i样食材则得到ai-t*bi的美味指数,用第i件食材做饭要花去ci的时间. 求最大美味指数之和. 分析: 显然的0/ ...
- A1084. Broken Keyboard
On a broken keyboard, some of the keys are worn out. So when you type some sentences, the characters ...
- Java:判断当前操作系统界面采用的主题是windows经典样式还是xp样式
想起两三年前,发现写Java界面的时候,如果将当前界面的layout设为null,由于windows的不同主题界面下,标题栏的高度不一致,导致当前界面表现也不一致. 当时就想找到一个办法先判断当前用户 ...
- CodeForces911D 逆序对
http://codeforces.com/problemset/problem/911/D 题意 给你一个长度为N的序列,有M次操作.每次翻转[l,r]的区间,每次操作后询问序列逆序对个数的奇偶性 ...
- 5个强大的Java分布式缓存框架
在开发中大型Java软件项目时,很多Java架构师都会遇到数据库读写瓶颈,如果你在系统架构时并没有将缓存策略考虑进去,或者并没有选择更优的缓存策略,那么到时候重构起来将会是一个噩梦.本文主要是分享了5 ...
- scala面向对象.高阶函数,柯里化,Actor编程简介
1.定义一个类 class Person{ //用val修饰的变量是只读属性,有getter但是没有setter val id ="111" //用var修饰的变量既有getter ...
- Calendar 日历类的时间操作
我们经常会涉及到对时间的处理,例如登陆网站,我们会看到网站首页显示XXX,欢迎您!今天是XXXX年....某些网站会记录下用户登陆的时间,比如银行的一些网站,对于这些经常需要处理的问题,Java中提供 ...
- 转--python 面试题
# 每一题都值得好好琢磨钻透 [原文地址](http://www.cnblogs.com/Allen-rg/p/7693394.html)1.Python是如何进行内存管理的? 答:从三个方面来说,一 ...
- JAVA实现具有迭代器的线性表(单链表)
一,迭代器的基本知识: 1,为什么要用迭代器?(迭代:即对每一个元素进行一次“问候”) 比如说,我们定义了一个ADT(抽象数据类型),作为ADT的一种实现,如单链表.而单链表的基本操作中,大部分需要用 ...