Redis命令之KEYS与SCAN

Redis中有两种用来遍历key的数据的命令,它们分别是KEYS和SCAN。

KEYS:

KEYS命令的速度虽然非常快,但是因为它是一次将所有满足条件的数据都会找到并返回,所以当redis中的key非常多时对于内存的消耗和redis服务器是一种隐患,Redis2.8版本以上提供了一种更优的遍历 key 的命令就是 SCAN来解决这个问题。

 

SCAN:

SCAN命令的基本格式:SCAN cursor [MATCH pattern] [COUNT count]

  • SCAN 命令用于迭代当前数据库中的数据库键
  • SSCAN 命令用于迭代集合键中的元素
  • HSCAN 命令用于迭代哈希键中的键值对
  • ZSCAN 命令用于迭代有序集合中的元素(包括元素成员和元素分值)

SCAN 命令是一个基于游标的迭代器(cursor based iterator): SCAN 命令每次被调用之后, 都会给用户返回一个新的游标, 用户在下次迭代时需要使用这个新游标作为 SCAN 命令的游标参数, 以此来延续之前的迭代过程。当 SCAN 命令的游标参数被设置为 0 时, 服务器将开始一次新的迭代, 而当服务器向用户返回值为 0 的游标时, 表示迭代已结束。SCAN命令从完整遍历开始直到完整遍历结束期间, 一直存在于数据集内的所有元素都会被完整遍历返回。

SSCAN / HSCAN /ZSCAN 与SCAN命令除命令格式有细微不同以及在非哈希表实现下的遍历方式不同外,其他均类似。

 

SCAN命令的缺点:

(1)同一个元素可能会被返回多次;

(2)如果一个元素是在迭代过程中被添加到数据集的,又或者是在迭代过程中从数据集中被删除的, 那么这个元素可能会被返回, 也可能不会, 这是不确定的。

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值