DBA Redis 通用命令
获取帮助
登录shell:
$ redis-cli -h 192.168.0.120
获取相关有2种形式:
HELP 命令
HELP @群组
1)获取GET命令相关帮助:
192.168.0.120:6379> HELP GET
GET key # 命令格式
summary: Get the value of a key # 功能描述
since: 1.0.0 # 出现版本
group: string # 所属群组
2)获取string类型命令相关帮助:
192.168.0.120:6379> HELP @string
APPEND key value
summary: Append a value to a key
since: 2.0.0
BITCOUNT key [start end]
summary: Count set bits in a string
since: 2.6.0
....
key相关操作
基本操作
删除指定key:
del key
移动当前db中的key至指定的db中,默认登录的db为0
move key db
获取key是否存在:
exists key
获取key的类型:
type key
获取键总数:
dbsize
# dbsize 命令在计算键总数时不会遍历所有键,而是直接过去Redis中内置的键总数变量
获取所有key,危险操作!
keys *
# 实际生产中应当禁止大范围查询,如keys \*,这样的操作会使内存压力陡增!造成Redis服务崩溃!
增量式迭代获取key,对于内存占用大的数据非常有用
scan cursor [MATCH pattern] [COUNT count] [TYPE type]
- cursor:游标
- match:匹配指定的key,默认为None,即表示所有的key
- count:每次分配最少获取的个数,默认是None即采用redis默认分片法
高级查询
使用*匹配任意符号,不限数量,使用?配合任意一个符号,使用[]匹配一个指定符号:
keys it* 查询所有以it开头
keys *heima 查询所有以heima结尾
keys ??heima 查询所有前面两个字符任意,后面以heima结尾
keys user:? 查询所有以user:开头,最后一个字符任意
keys u[st]er:1 查询所有以u开头,以er:1结尾,中间包含一个字母,s或t
其他操作
为key更名:
rename key newkey
对所有key排序:
sort
其他key通用操作:
help @generic
时效控制
expire与pexpireat
优惠券活动,如用户获得一个优惠券,你可以使用expire或者pexpireate为其进行设置过期时间。
为指定key设置有效时间
# expire到期时间,以秒为单位
expire key seconds
expireat key timestamp
# pexpire预计时间,以毫秒为单位
pexpire key milliseconds
pexpireat key milliseconds-timestamp
获取key的有效时间:
# expire的获取
ttl key
# pexpireat的获取
pttl key
# 返回结果 +n 代表剩余过期时间
# 返回结果 -1 代表永不过期
# 返回结果 -2 代表键不存在
将key从时效性转换为永久性:
persist key
ttl与操作演示
操作演示:
192.168.0.120:6379> set k1 v1
OK
192.168.0.120:6379> pexpire k1 5
(integer) 1 # 代表成功
192.168.0.120:6379> ttl k1
(integer) 5
192.168.0.120:6379> ttl k1
(integer) 3
192.168.0.120:6379> ttl k1
(integer) 1
192.168.0.120:6379> ttl k1
(integer) 0
192.168.0.120:6379> ttl k1
(integer) -2 # 代表被删除
如果是一个未被设置过期时间的key,则使用ttl获取到的值是-1:
192.168.0.120:6379> SET k1 v1
OK
192.168.0.120:6379> ttl k1
(integer) -1
强烈注意
如果一个被设置了TTL的key对其重新进行赋值,则TTL失效。
如下所示,假如用户有一个优惠券,目前正在倒计时中。
突然领导发话将这个优惠券的额度从100加为200,要注意了,一旦执行该操作该优惠券就会永不过期:
# 本身是100元优惠券
192.168.0.120:6379> set k1 100
OK
# 开始设置过期时间
192.168.0.120:6379> expire k1 100
(integer) 1
# 正常倒计时
192.168.0.120:6379> ttl k1
(integer) 85
192.168.0.120:6379> ttl k1
(integer) 77
# 重新赋值
192.168.0.120:6379> set k1 200
OK
# 永不过期
192.168.0.120:6379> ttl k1
(integer) -1