3.1 键操作命令
3.1.1 用EXISTS命令判断键是否存在
EXISTS命令判断键是否存在EXISTS语法:
EXISTS key功能:判断指定的key是否存在.存在返回1,否则返回0
例:
设置一个名为name的key:
127.0.0.1:6379> SET name "Peter"
OK判断该key是否存在:
127.0.0.1:6379> EXISTS name
(integer) 1判断一个不存在的key:
127.0.0.1:6379> EXISTS grade
(integer) 03.1.2 用KEYS命令查找键
KEYS命令查找键KEYS语法:
KEYS pattern功能:用通配符或正则表达式来查找指定模式的键
例:
添加3个以0开头的键值对:
查找所有以0开头的key:
查找以n开头,n后边有1个任意字符,该字符后边以me结尾的key:
查找所有的key:
3.1.3 用SCAN命令查找键
SCAN命令查找键SCAN语法:
SCAN cursor [MATCH pattern] [COUNT count].其中:cursor:游标,游标起始值一般为0
pattern:指定匹配模式
count:
COUNT选项并不是一个硬性约束,而是一个提示或者建议,表示你希望每次迭代返回的大致结果数量.但实际返回的键数量可能会有所不同.确切的讲,COUNT提供了Redis应该在每次迭代中检查的桶(buckets)数量.担着不表示返回的结果数量一定与COUNT的值相匹配
功能:
SCAN返回一个包含两个元素的数组,第一个元素是用于进行下一次迭代的新游标, 而第二个元素则是一个数组,这个数组中包含了所有被迭代的元素
原因如下:
Redis内部使用哈希表来存储键,而哈希表又基于桶(bucket)来工作
当执行
SCAN命令时,Redis会尝试在每次迭代中检查大约COUNT数量的桶某个桶可能为空,也可能包含多个键
当使用
MATCH选项时,只有匹配该模式的键会被返回.因此,即使一个桶中有多个键,也可能只有一部分键与给定模式匹配
因此,当你指定COUNT 1时,Redis会尝试检查大约1个桶的内容.但根据哈希表的实际状态和MATCH模式,返回的键数量可能会多于或少于COUNT的值
总的来说,应该将COUNT视为一个估计或建议,而不是一个确切的限制.如果你需要准确控制返回的键数量,你可能需要在客户端进行进一步的处理
例:
查看键名以0开头的所有键:
可以看到,以0开头的键共有20个.即001 - 020
使用SCAN命令迭代获取key:
可以看到,即使指定COUNT 1,返回的key也可能不止1个.
可以看到,在迭代的过程中是有可能返回空数组的
遍历结束的标志是cursor再次变为0
注意:
KEYS命令以阻塞的方式来查找并返回键.因此当待查找的键数量很多时,耗时会较长,且在这段时间内无法执行其他命令(Redis是单线程的)SCAN命令以非阻塞的方式查找并返回键.换言之,在大部分场景下SCAN命令能替代KEYS命令.如果待查找的键个数比较少,那么用KEYS命令尚可,否则建议使用SCAN命令
3.1.4 重命名键
RENAME语法:
RENAME key newkey功能:若旧键名不存在,则返回错误;若newkey已存在,则用key对应的值覆盖newkey对应的值
RENAMENX语法:
RENAMENX key newkey功能:若旧键名不存在,则返回错误;若newkey已存在,则返回0,不执行重命名命令
例:使用RENAME重命名键
设置键:
重命名键:
查看旧的key和新的key的存在情况:
可以看到,旧的key已经不存在了
新的key已存在且值为旧的key对应的值
例:使用RENAME覆盖key值
删除并重新设置2个键:
重命名键visitPerson为VIPPerson:
查看覆盖后的VIPPerson:
可以看到,覆盖操作后,VIPPerson的值即为覆盖操作前visitPerson的值
例:使用RENAME重命名一个不存在的键
例:使用RENAMENX重命名一个键
设置一个键:
使用RENAMENX重命名键:
查看重命名结果:
使用RENAMENX重命名一个已有的键名:
设置2个键:
使用RENAMENX重命名:
可以看到,重命名操作没有生效
使用RENAMENX命令重命名一个不存在的键:
可以看到,使用RENAMENX重命名一个不存在的键则报错
3.1.5 用DEL命令删除键
DEL语法:
DEL key [key ...]功能:删除键值对.该命令返回删除的键值对个数
例:
设置一个键:
删除多个键:
可以看到,键notExist是不存在的
可以看到,返回值表示删除了1个键
删除一个不存在的键:
可以看到,返回值为0,表示删除操作失败
3.1.6 关于键生存时间的命令
3.1.6.1 查看键的生存周期
PTTL语法:
PTTL key功能:返回指定key的生存周期,单位:毫秒.若key不存在,则返回-2;若key存在但未设置生存周期
TTL语法:
TTL key功能:返回指定key的生存周期,单位:秒.若key不存在,则返回-2;若key存在但未设置生存周期
例:
设置一个生存周期为300秒的key
查看该key的生存周期:
设置一个无生存周期的key:
查看无生存周期key的生存周期:
查看一个不存在的key的生存周期:
3.1.6.2 设置键的生存周期
EXPIRE语法:
EXPIRE key seconds功能:以秒为单位设置一个key的生存周期.设置成功返回1,否则返回0
PEXPIRE语法:
PEXPIRE key milliseconds功能:以毫秒为单位设置一个key的生存周期.设置成功返回1,否则返回0
例:
设置一个无生存周期的key:
设置该key的生存周期为200秒:
查看该key的生存周期:
设置该key的生存周期为20000毫秒:
查看该key的生存周期:
给一个不存在的key设置生存周期:
3.1.6.3 删除键的生存周期
PERSIST语法:
PERSIST key功能:删除键的生存周期,即该键永不过期.删除操作成功则返回1,否则返回0
例:
设置一个生存周期为200秒的键:
查看该key的生存周期:
删除该key的生存周期:
查看该key的生存周期:
删除一个不存在的key的生存周期:
Last updated