Redis scan操作总结

Redis scan操作总结

作者:admin |  时间:2015-04-10 |  浏览:375 |  0 条评论

Redis在2.8.0版本新增了众望所归的scan操作,从此再也不用担心敲入了"keys *", 然后举起双手看着键盘等待漫长的系统卡死了···
Redis的SCAN操作由于其整体的数据设计,无法提供特别准的scan操作,仅仅是一个"can't guarantee, just do my best"的实现,优缺点如下:
优点:
提供键空间的遍历操作,支持游标,复杂度O(1), 整体遍历一遍只需要O(N);
提供结果模式匹配;
支持一次返回的数据条数设置,但仅仅是个hints,有时候返回的会多;
弱状态,所有状态只需要客户端需要维护一个游标;
缺点:
无法提供完整的快照遍历,也就是中间如果有数据修改,可能有些涉及改动的数据遍历不到;
每次返回的数据条数不一定,极度依赖内部实现;
返回的数据可能有重复,应用层必须能够处理重入逻辑;
 
1. redis的SCAN操作能够保证 一直没变动过的元素一定能够在扫描结束的之前返回给客户端,这一点在不同情况下都可以实现;
2. 当发生字典大小缩小的时候,如果接收到一个scan cursor, 游标位于高位为1的部分,那么会被有效位掩码给注释最高位,从而从重新读取之前已经访问过的元素,这种情况下回发生数据重复,但应该有限;
 

整体来看redis的SCAN操作是很不错的,能够在hash的数据结构里面提供比较稳定可靠的SCAN操作。

  

本文标签:

相关推荐

发表评论

电子邮件地址不会被公开。

您可以使用这些HTML标签和属性: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <strike> <strong>