- 重命名键
127.0.0.1:6379> get test
"test1"
127.0.0.1:6379> RENAME test newtest
OK
127.0.0.1:6379> get test
(nil)
127.0.0.1:6379> get newtest
"test1"
如果原来的key已经存在,则会覆盖已经存在的值
127.0.0.1:6379> get test3
"3"
127.0.0.1:6379> rename newtest test3
OK
127.0.0.1:6379> get test3
"test1"
127.0.0.1:6379> get newtest
(nil)
renamenx 原来的key不存在才会重命名成功
127.0.0.1:6379> set test4 112121kk
OK
127.0.0.1:6379> RENAMENX test3 test4
(integer) 0
127.0.0.1:6379> dbsize
(integer) 13
127.0.0.1:6379> randomkey
"test_inter"
127.0.0.1:6379> expire test4 600
(integer) 1
127.0.0.1:6379> ttl test4
(integer) 592
127.0.0.1:6379> expire test4 -2
(integer) 1
127.0.0.1:6379> ttl test4
(integer) -2
127.0.0.1:6379> PERSIST test4
(integer) 0
127.0.0.1:6379> ttl test4
(integer) -2
迁移:
move key db
用于redis内部多个数据库之间的迁移
dump与restore
dump key (可以正则)
restore key ttl value
可以在不同实例间迁移
dump会将键值序列化,使用rdb格式
restore反序列化导入redis, ttl=0 时表示没有过期时间
dump test3
操作系统中查看到如下文件:
-rw-r--r-- 1 root root 91 Apr 22 09:40 dump.rdb
127.0.0.1:6379> dump test3
"\x00\x05test1\a\x00\xdf\xfaM5\xb8q?["
127.0.0.1:6379> RESTORE test4 0 "\x00\x05test1\a\x00\xdf\xfaM5\xb8q?["
OK
127.0.0.1:6379>
127.0.0.1:6379> get test4
"test1"
migrate迁移
migrate 用于实例间的迁移, 实际就是将dump restore del进行组合,整个过程是原子性的,
直接在源和目标redis上进行,不需要开启客户端, 迁移restore完成后,发生ok消息,来判断是否进行del操作
MIGRATE host port key| destination-db timeout [COPY] [REPLACE] [KEYS key]
遍历:
keys 正则
例如
keys *
keys test*
当使用keys * 时可能会造成阻塞
scan提供一种非阻塞的渐进式遍历方式, 缺点就是数据可能不准确
127.0.0.1:6379> SCAN 0
1) "11"
2) 1) "testm2"
2) "count"
3) "test4"
4) "counter:__rand_int__"
5) "test2"
6) "key:__rand_int__"
7) "test3"
8) "test1"
9) "myset:__rand_int__"
10) "testm"
127.0.0.1:6379>
127.0.0.1:6379> SCAN 11
1) "0"
2) 1) "test_inter"
2) "user"
3) "mylist"
127.0.0.1:6379>
切换db
select dbindex db序列号
如select 2
清除db数据
FLUSHDB
该命令只清除当前db的数据
FLUSHALL
清除所有db的数据