通过这篇文章你会知道如下:
- 键过期时间如何设置成毫秒级?时间戳形式?
- 如何显示键的剩余时间为毫秒级?
- 如何通过通配符遍历键 ?
- 如果是字符串的类型的键,set会将过期时间清除
- 如何清除键的过期时间
键的过期
expire key seconds: 键在seconds秒后过期。
expireat key timestamp: 键在秒级时间戳timestamp后过期。
ttl与pttl区别
毫秒级
清除键的过期时间
persist key
对字符串类型的键set会清除设置的过期时间
遍历键
通过keys 后面可以接pattern,pattern使用的是glob风格的通配符
*代表匹配任意字符。
?代表匹配一个字符。
[]代表匹配部分字符, 例如[1, 3]代表匹配1, 3, [1-10]代表匹配1到10
的任意数字。
·\x用来做转义, 例如要匹配星号、 问号需要进行转义。
glob语法
删除以video开头的键
redis-cli keys video* | xargs redis-cli del
渐进式遍历键
scan cursor [match pattern] [count number]
- cursor是必需参数, 实际上cursor是一个游标, 第一次遍历从0开始, 每次scan遍历完都会返回当前游标的值, 直到游标值为0, 表示遍历结束。
- match pattern是可选参数, 它的作用的是做模式的匹配, 这点和keys的模式匹配很像。
- count number是可选参数, 它的作用是表明每次要遍历的键个数, 默认值是10, 此参数可以适当增大
- 返回结果分为两个部分: 第一个部分6就是下次scan需要的cursor, 第二个部分是10个键
- 不足
渐进式遍历可以有效的解决keys命令可能产生的阻塞问题, 但是scan并非完美无瑕, 如果在scan的过程中如果有键的变化(增加、 删除、 修改) ,164那么遍历效果可能会碰到如下问题: 新增的键可能没有遍历到, 遍历出了重复的键等情况, 也就是说scan并不能保证完整的遍历出来所有的键, 这些是我们在开发时需要考虑的
网友评论