Redis:Key指令
1、命令(在redis-cli下)
命令 |
说明 |
返回值 |
K-V基本设置 |
||
set K V get K |
设置K-V 获取K对应的V |
|
keys * | 查看所有K | 按行列出所有K |
dbsize | K的数量 | |
exists K | 检查某个K是否存在 |
1:K存在 0:K不存在 |
del K1 [K2] [K3] | 删除K |
0:K不存在 数字:成功删除的K的数量 |
expire K n pexpire K n expireat K t pexpireat K t |
设置K在n秒后过期(n为负数立刻删除) 设置K在n毫秒后过期 设置K在秒级时间戳t后过期 设置K在毫秒级时间戳t后过期 |
1:成功设置 0:K不存在 |
persist K |
取消K过期 |
|
ttl K pttl K |
查看K的剩余过期时间(s) 查看K的剩余过期时间(ms) |
≥0:剩余过期时间 -1:无过期时间 -2:K不存在 |
type K | K对应的V的数据类型 |
K存在:string、lis、hash、set、zset K不存在:none |
object encoding K | K对应的V的内部编码(底层源码)实现类型 | embstr、int、linkedlist…… |
rename K K2 | 将K重命名为K2 | OK |
renamenx K K2 | 只有在K2不存在时才能rename成功 |
成功:OK 失败:0 |
randomkey | 随机返回一个K | |
K的迁移 |
||
move K db | 把K从当前db移动到指定db | |
dump+restore dump K restore K ttl V |
不同Redis实例间的数据迁移: 在源redis上,dump将K-V序列化,格式RDB;在目标Redis上,resotre将序列化后的K-V进行复原,ttl代表过期时间 |
dump:序列化后的值 resotre:OK |
migrate |
Redis实例间进行数据迁移,实际上是dump、restore、del命令的组合 |
|
遍历K |
||
keys pattern |
挑选符合pattern的K 这里的pattern并非关键字,而是一种正则规则,比如*代表全部,.代表单个字符,其他正则规则这里都适用,不再多说 |
|
scan cursor [pattern] [count] |
扫描遍历所有K cursor:游标 pattern:模式 count:每次遍历的K个数,默认10 |
两部分: 1)下次遍历时的cursor(当为0时说明遍历完成); 2)本次遍历的count个K |
hscan |
扫描遍历 hash set zset |
|
sscan | ||
zscan |
2、具体命令
1)expire等设置过期的指令
设置了过期expire时,如果再用set重置K-V,会取消过期;
2)keys pattern
keys会遍历所有的键,但是由于Redis是单线程架构,如果Redis包含了大量的K,执行keys会导致Redis阻塞,所以一般不要在生产环境下使用keys,但是如果确实有遍历K的需求,可以有三种方法:
- 在一个不对外提供服务的Redis从节点上执行,这样不会阻塞客户端请求,但会影响主从复制;
- 如果确认K数量确实不多,可以用keys;
- 使用scan渐进式遍历,可以有效防止阻塞。
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】凌霞软件回馈社区,博客园 & 1Panel & Halo 联合会员上线
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】博客园社区专享云产品让利特惠,阿里云新客6.5折上折
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· PowerShell开发游戏 · 打蜜蜂
· 在鹅厂做java开发是什么体验
· 百万级群聊的设计实践
· WPF到Web的无缝过渡:英雄联盟客户端的OpenSilver迁移实战
· 永远不要相信用户的输入:从 SQL 注入攻防看输入验证的重要性