1.键重命名
rename key newkey
- 重命名之前,如果key已经存在则会value值将会被覆盖
- 注意:重命名期间会执行del命名删除旧的键,如果key比较大会导致阻塞,谨慎使用
127.0.0.1:6379> get aa
"hello word"
127.0.0.1:6379> rename aa greeting
OK
127.0.0.1:6379> get aa
(nil)
127.0.0.1:6379> get greeting
"hello word"
2.随机返回一个键
randomkey
127.0.0.1:6379> dbsize
(integer) 21
127.0.0.1:6379> randomkey
"age"
127.0.0.1:6379> randomkey
"user_name"
127.0.0.1:6379> randomkey
"a"
3.键过期
- 无论是使用过期时间还是时间戳,秒级还是毫秒级别,在redis内部都是使用pexpireat
- 不支持二级数据结构(哈希,列表等)内部元素的过期功能
- setex是set+expire的组合,不但是原子执行,同时减少了一次网络通讯的时间
expire key seconds
- 键在seconds秒后过期
- 返回0,说明key不存在
expireat key timestamp
- 键在秒级时间戳timestamp后过期
pexpire key milliseconds
- 毫秒级别过期设置
pexpireat key milliseconds-timestamp
- 毫秒级别时间戳过期设置
127.0.0.1:6379> expire greeting 3600
(integer) 1
127.0.0.1:6379> ttl greeting
(integer) 3594
##key aa 不存在
127.0.0.1:6379> expire aa 3600
(integer) 0
4.清理过期时间
persist key
127.0.0.1:6379> ttl greeting
(integer) 2944
127.0.0.1:6379> persist greeting
(integer) 1
127.0.0.1:6379> ttl greeting
(integer) -1
5.查看key过期剩余时间
ttl key
- 返回键剩余的过期时间
- -1:键没有设置过期时间
- -2:键不存在,说明已经被删除了
6.迁移键
- move:内部数据进行数据迁移
- dump+restore:不同的redis实例之间进行数据迁移
- migrate:实例间进行数据迁移
1)move key db
2)dump key
restore key ttl value
3)migrate host port key|"" destination-db timeout [copy] [replace] [keys key…]
7.遍历键
1).全量遍历键
- keys:字符串
- hgetall:哈希
- smenbers:集合
- zrange:有序集合
ps:
1)keys会导致redis阻塞,生产环境不建议使用。
2)hgetall,smembers,zrange可能产生阻塞问题
keys pattern
127.0.0.1:6379> keys h*
1) "h3"
2) "h5"
3) "h4"
4) "h1"
5) "h2"
6) "hello"
##删除h开头的所有key
redis-cli keys h* | xargs redis-cli del
(integer) 6
2).渐进式遍历
- scan:字符串
- hscan:哈希
- sscan:集合
- zscan:有序集合
scan cursor [match pattern] [count number]
- cursor:第一次遍历从0开始,每次scan变量完返回当前游标值,直到游标值为0,表示遍历结束
- match pattern:模糊匹配
- count number:每次要遍历的键个数,默认10
127.0.0.1:6379> scan 0
1) "17"
2) 1) "mylist"
2) "user_name"
3) "myset"
4) "num"
5) "myhash"
6) "b"
7) "list"
8) "c"
9) "set1"
10) "greeting"
127.0.0.1:6379> scan 17
1) "31"
2) 1) "tmp"
2) "ser2"
3) "set2"
4) "union_set"
5) "set3"
6) "1"
7) "rank"
8) "age"
9) "myhash2"
10) "a"
##当前游标返回0,遍历结束
127.0.0.1:6379> scan 31
1) "0"
2) (empty array)
##设置遍历个数
127.0.0.1:6379> scan 0 match * count 15
1) "3"
2) 1) "mylist"
2) "user_name"
3) "myset"
4) "num"
5) "myhash"
6) "b"
7) "list"
8) "c"
9) "set1"
10) "greeting"
11) "tmp"
12) "ser2"
13) "set2"
14) "union_set"
15) "set3"
16) "1"
127.0.0.1:6379> scan 3 match * count 15
1) "0"
2) 1) "rank"
2) "age"
3) "myhash2"
4) "a"
8.删除键
del key
- 可以删除任何类型的键,del也容易造成阻塞,谨慎使用,如使用del直接删除比较大hash key
- 返回结果为成功删除键的个数
- 如果键不存在,则结果返回0
9.查询键是否存在
exists key
- 存在返回1,不存在返回0
127.0.0.1:6379> exists aa
(integer) 0
10.键总数查询
dbsize
127.0.0.1:6379> dbsize
(integer) 20
11.查询键类型
type key
- 存在返回对应的类型
- 不存在返回none
127.0.0.1:6379> type a
string
127.0.0.1:6379> type myhash
hash
127.0.0.1:6379> type ser2
set
127.0.0.1:6379> type rank
zset
127.0.0.1:6379> type aa
none