Redis常用命令集
1、Redis常用命令集
1)连接操作命令
quit:关闭连接(connection)
auth:简单密码认证
help cmd: 查看cmd帮助,例如:help quit
2)持久化
save:将数据同步保存到磁盘
bgsave:将数据异步保存到磁盘
lastsave:返回上次成功将数据保存到磁盘的Unix时戳
shundown:将数据同步保存到磁盘,然后关闭服务
3)远程服务控制
info:提供服务器的信息和统计
monitor:实时转储收到的请求
slaveof:改变复制策略设置
config:在运行时配置Redis服务器
4)对value操作的命令
exists(key):确认一个key是否存在
del(key):删除一个key
type(key):返回值的类型
keys(pattern):返回满足给定pattern的所有key
randomkey:随机返回key空间的一个
keyrename(oldname, newname):重命名key
dbsize:返回当前数据库中key的数目
expire:设定一个key的活动时间(s)
ttl:获得一个key的活动时间
select(index):按索引查询
move(key, dbindex):移动当前数据库中的key到dbindex数据库
flushdb:删除当前选择数据库中的所有key
flushall:删除所有数据库中的所有key
5)String
set(key, value):给数据库中名称为key的string赋予值value
get(key):返回数据库中名称为key的string的value
getset(key, value):给名称为key的string赋予上一次的value
mget(key1, key2,…, key N):返回库中多个string的value
setnx(key, value):添加string,名称为key,值为value
setex(key, time, value):向库中添加string,设定过期时间time
mset(key N, value N):批量设置多个string的值
msetnx(key N, value N):如果所有名称为key i的string都不存在
incr(key):名称为key的string增1操作
incrby(key, integer):名称为key的string增加integer
decr(key):名称为key的string减1操作
decrby(key, integer):名称为key的string减少integer
append(key, value):名称为key的string的值附加value
substr(key, start, end):返回名称为key的string的value的子串
6)List
rpush(key, value):在名称为key的list尾添加一个值为value的元素
lpush(key, value):在名称为key的list头添加一个值为value的 元素
llen(key):返回名称为key的list的长度
lrange(key, start, end):返回名称为key的list中start至end之间的元素
ltrim(key, start, end):截取名称为key的list
lindex(key, index):返回名称为key的list中index位置的元素
lset(key, index, value):给名称为key的list中index位置的元素赋值
lrem(key, count, value):删除count个key的list中值为value的元素
lpop(key):返回并删除名称为key的list中的首元素
rpop(key):返回并删除名称为key的list中的尾元素
blpop(key1, key2,… key N, timeout):lpop命令的block版本。
brpop(key1, key2,… key N, timeout):rpop的block版本。
rpoplpush(srckey, dstkey):返回并删除名称为srckey的list的尾元素,并将该元素添加到名称为dstkey的list的头部
7)Set
sadd(key, member):向名称为key的set中添加元素member
srem(key, member) :删除名称为key的set中的元素member
spop(key) :随机返回并删除名称为key的set中一个元素
smove(srckey, dstkey, member) :移到集合元素
scard(key) :返回名称为key的set的基数
sismember(key, member) :member是否是名称为key的set的元素
sinter(key1, key2,…key N) :求交集
sinterstore(dstkey, (keys)) :求交集并将交集保存到dstkey的集合
sunion(key1, (keys)) :求并集
sunionstore(dstkey, (keys)) :求并集并将并集保存到dstkey的集合
sdiff(key1, (keys)) :求差集
sdiffstore(dstkey, (keys)) :求差集并将差集保存到dstkey的集合
smembers(key) :返回名称为key的set的所有元素
srandmember(key) :随机返回名称为key的set的一个元素
8)Hash
hset(key, field, value):向名称为key的hash中添加元素field
hget(key, field):返回名称为key的hash中field对应的value
hmget(key, (fields)):返回名称为key的hash中field i对应的value
hmset(key, (fields)):向名称为key的hash中添加元素field
hincrby(key, field, integer):将名称为key的hash中field的value增加integer
hexists(key, field):名称为key的hash中是否存在键为field的域
hdel(key, field):删除名称为key的hash中键为field的域
hlen(key):返回名称为key的hash中元素个数
hkeys(key):返回名称为key的hash中所有键
hvals(key):返回名称为key的hash中所有键对应的value
hgetall(key):返回名称为key的hash中所有的键(field)及其对应的value
2、redis-benchmark相关
redis-benchmark-h localhost -p 6379 -c 100 -n 100000
100个并发连接,100000个请求,检测host为localhost 端口为6379的redis服务器性能
./redis-benchmark -n 100000 –c 50
====== –c 50 ======
100000 requests completed in 1.93 seconds (100000个请求完成于 1.93 秒 )
50 parallel clients (每个请求有50个并发客户端)
3 bytes payload (每次写入3字节)
keep alive: 1 (保持1个连接)
58.50% <= 0 milliseconds
99.17% <= 1 milliseconds
99.58% <= 2 milliseconds
99.85% <= 3 milliseconds
99.90% <= 6 milliseconds
100.00% <= 9 milliseconds
(所有请求在62毫秒内完成)
114293.71 requests per second(每秒 114293.71 次查询)
redis-benchmark参数
-h 设置检测主机IP地址,默认为127.0.0.1
-p 设置检测主机的端口号,默认为6379
-s<socket> 服务器套接字(压倒主机和端口)
-c 并发连接数
-n 请求数
-d 测试使用的数据集的大小/字节的值(默认3字节)
-k 1:表示保持连接(默认值)0:重新连接
-r SET/GET/INCR方法使用随机数插入数值,设置10则插入值为rand:000000000000 - rand:000000000009
-P 默认为1(无管道),当网络延迟过长时,使用管道方式通信(请求和响应打包发送接收)
-q 简约信息模式,只显示查询和秒值等基本信息。
--csv 以CSV格式输出信息
-l 无线循环插入测试数据,ctrl+c停止
-t<tests> 只运行<tests>测试逗号分隔的列表命令,如:-t ping,set,get
-I 空闲模式。立即打开50个空闲连接和等待。
例子:
$ redis-benchmark基本测试
$ redis-benchmark -h 192.168.1.1 -p 6379 -n 100000 -c 20
$ redis-benchmark -t set -n 1000000 -r 100000000
$ redis-benchmark -t ping,set,get -n 100000 –csv
$ redis-benchmark -r 10000 -n 10000 lpush mylist ele:rand:000000000000
3.redis-server
Redis服务器的daemon启动程序
redis-server 启动并加装默认配置文件[/path/to/redis.conf]
redis-server /biran/conf/redis.conf启动并加装指定配置文件
redis-server - (read config from stdin) 使用标准输入读取配置为启动参数
redis-server --test-memory 256 检测256MB内存
redis-server –version 查版本号
4.redis-cli
Redis命令行操作工具。当然,你也可以用telnet根据其纯文本协议来操作
可输入redis-cli直接进入命令行操作界面。
redis-cli参数
-h 设置检测主机IP地址,默认为127.0.0.1
-p 设置检测主机的端口号,默认为6379
-s<socket> 服务器套接字(压倒主机和端口)
-a 连接到Master服务器时使用的密码
-r 执行指定的N次命令
-i 执行命令后等待N秒,如–i 0.1 info(执行后等0.1秒)
-n 指定连接N号ID数据库,如–n 3(连接3号数据库)
-x 从控制台输入的信息中读取最后一个参数
-d 定义多个定界符为默认输出格式(默认: \n)
--raw 使用原数据格式返回输出内容
--latency 进入一个不断延时采样的特殊模式
--slave 模拟一个从服务器到主服务器的命令显示反馈
--pipe 使用管道协议模式
--bigkeys 监听显示数据量大的key值,--bigkeys -i 0.1
--help 显示命令行帮助信息
--version 显示版本号
例子:
$ redis-cli进入命令行模式
$ redis-cli -r 3 info 重复执行info命令三次
$ cat testStr.txt | redis-cli -x set testStr读取testStr.txt文件所有内容设置为testStr的值
$ redis-cli -r 100 lpush mylist x
$ redis-cli -r 100 -i 1 info | grep used_memory_human
5.获取服务器的信息和统计
redis-cli info查询系统信息。默认为localhost,端口为6379。
redis-cli -p 6379 info | grep '\<used_memory\>'过滤查询used_memory属性
当used_memory_rss接近maxmemory或者used_memory_peak超过maxmemory时,要加大maxmemory负责性能下降
6.redis TTL键值删除机制
1. 根据hz,定期执行删除动作。这部分就是你发的截图,目标是将要过期的key的百分比降到了25%以下。具体动作是:
1) 随机测试100个设置了过期时间的key
2) 删除所有发现的已过期的key
3) 若删除的key超过25个则重复步骤1
2. 但是根据上面的算法,有可能每次删除动作持续时间长,对系统负载过高。所以又来了个ACTIVE_EXPIRE_CYCLE_SLOW_TIME_PERC(25),表示最多使用25%的cpu时间来执行删除动作。
然后根据:timelimit = 1000000*ACTIVE_EXPIRE_CYCLE_SLOW_TIME_PERC/server.hz/100 算到了每次删除动作最长的执行时间
7.redis冷门命令
以下为redis冷门命令,可自行搜索。
redis-cli -h <ip> --latency-history
redis-cli -h <ip> --latency
redis-cli -h <ip> --stat
redis-cli -h <ip> --slaves
redis-cli -h <ip> --latency-dist
redis-cli -h <ip> -r 5 -i 1 ping