redis深度历险06-key和scan

redis深度历险06-keys和scan

keys

keys *     --获得所有的key
keys f*    --获得f开头的key
keys f*f   --获得f开头,f结尾的key

此方法的缺点

  1. 没有分页
  2. 复杂度o(n),造成卡顿

scan --游标遍历

  1. 复杂度o(n),但是通过游标分布,不会阻塞。
  2. 提供limit参数
  3. 提供模式匹配的方式
  4. 服务器不需要保存游标状态,游标的唯一状态就是scan返回给客户端的游标整数
  5. 返回的结果可能重复,需要客户端去重
  6. 遍历过程中如果数据修改,改动后的数据不一定能遍历到。
  7. 单次返回结果是空并不意味着遍历结束,而要看返回的游标值是否为零
scan cursor match f* count 100   --会返回cursor游标和结果值。游标用来下一次比遍历,第一次游标用传0

大key扫描

在平时的业务开发中,尽量避免大key的产生

原理:scan扫描,得到key,判断key类型,通过size或者len得到大小,排序。Redis官方在redis-cli提供了这样的扫描功能。

reis-cli -h 127.0.0.1 -p 7001 --bigkeys

如果担心次命令造成ops提升。可以添加休眠参数

redis-cli -h 127.0.0.1 -p 7001 -i 0.1

你可能感兴趣的