文章目录
键管理
单个键管理
-
键重命名
rename key newkey127.0.0.1:6379> set python jedis OK 127.0.0.1:6379> rename python java OK 127.0.0.1:6379> get python (nil) 127.0.0.1:6379> get java "jedis"
如果在rename 之前,键python 已经存在,那么它的值也将被覆盖
为了防止强行rename,redis 提供了renamenx 命令,确保只有newkey 不存在时才被覆盖,返回结果如果是0,则表示没有完成重命名
注意两点:
1)由于重命名键期间会执行del 命令删除旧的键,如果键对应的值比较大。会存在阻塞redis 的可能性
2)如果rename 和renamenx 中的key 和newkey 如果是相同的,在redis 3.2 和之前会有不同,3.2 之前会提示报错。
-
随机返回一个键
randomkey127.0.0.1:6379> randomkey "boy"
-
键过期
expire key seconds :键在seconds 秒后过期
expireat key timestamp :键在秒级时间戳timestamp 后过期
ttl key 查看键剩余过期时间
pttl key 精确到毫秒
毫秒级键过期
pexpire key milliseconds 单位为毫秒
persist 命令可以将键的过期时间清除
persist key
对于字符串类型键,执行set 命令会去掉过期时间,这一点在开发中很容易被忽视
迁移键
提供三种迁移方式
-
move
move key db
即把key 移动到另外一个数据库,通常在redis内部进行,生成环境不建议使用,了解即可。
-
dump+restore (非原子操作)
dump key
dump key ttl value
这种方式可以实现在不同实例之间进行数据迁移的功能,整个迁移的过程分两步:
1)在源redis 上,dump 命令会将键值序列化,格式采用的是RDB 格式。
2)在目标redis 上,restore命令将上面的序列化的值进行复原。ttl 为过期时间,ttl=0 代表没有过期时间
- migrate
migrate host port key|“” destination-db timeout copy replace key1 key2 …key
host:目标redis IP
port:目标端口
key|"" :redis 3.06版本之前migrate只支持迁移一个键,如果是迁移多个键此处填""
destination-db: 目的数据库索引号
timeout: 迁移的超时时间,单位毫秒
copy:如果添加此选项,迁移后并删除源键
replace: 如果选择此选项,migrate 不管目标redis 是否存在该键都会正常迁移进行数据覆盖
key1...key:迁移的键
127.0.0.1:6379> migrate 127.0.0.16380 "" 0 5000 key1 key2 key3
遍历键
redis 提供两个命令遍历键,分别是keys 和scan
全量遍历键
keys pattern 支持正则
如果键个数比较多,容易造成阻塞,生成环境一般禁用
渐进式遍历
scan cursor [match pattern] [count number]
cursor 是一个游标,第一次遍历从0开始,每次scan 遍历完都会返回当前游标的值
match 可选参数,做模式匹配,类似keys的匹配
count 可选参数。默认10,每次遍历的个数
scan 并不能保证遍历的完整性,当scan 过程中,如果键发生变化,可能导致遍历不到。
数据库
切换数据库
redis 默认16个数据库,用编号来区分0-15,默认使用0号数据库。
select dbindex
清除数据库
flushall 清除所有数据库
flushdb 清除当前数据库
!!!慎用