在写另一篇文章( link )的时候,涉及到过滤器(filter)功能。以前没有接触过,整理如下。

主要参考这两篇:

http://blog.csdn.net/u011510825/article/details/51859656

http://redis.io/commands/scan

实验如下:

$ redis-cli  -h [host] -p
> smembers myset
) "one"
) "two"
> sscan myset o*
(error) ERR invalid cursor
> sscan myset match o*
) ""
) ) "one"
> sscan myset match *
) ""
) ) "one"
) "two"
> sscan myset match * count
) ""
) ) "one"
> sscan myset1 match "{'i': '[1-9][0-9][0-9]*'}"
) ""
) ) "{'i': '990', 'i2': '991'}"

上面有几点需要解释一下。

1. 获取set的命令需要使用 smember。更多的命令列表参考:

http://www.runoob.com/redis/redis-sets.html

Redis 集合命令
下表列出了 Redis 集合基本命令:
序号 命令及描述
SADD key member1 [member2]
向集合添加一个或多个成员
SCARD key
获取集合的成员数
SDIFF key1 [key2]
返回给定所有集合的差集
SDIFFSTORE destination key1 [key2]
返回给定所有集合的差集并存储在 destination 中
SINTER key1 [key2]
返回给定所有集合的交集
SINTERSTORE destination key1 [key2]
返回给定所有集合的交集并存储在 destination 中
SISMEMBER key member
判断 member 元素是否是集合 key 的成员
SMEMBERS key
返回集合中的所有成员
SMOVE source destination member
将 member 元素从 source 集合移动到 destination 集合
SPOP key
移除并返回集合中的一个随机元素
SRANDMEMBER key [count]
返回集合中一个或多个随机数
SREM key member1 [member2]
移除集合中一个或多个成员
SUNION key1 [key2]
返回所有给定集合的并集
SUNIONSTORE destination key1 [key2]
所有给定集合的并集存储在 destination 集合中
SSCAN key cursor [MATCH pattern] [COUNT count]
迭代集合中的元素

2. 可以看到sscan的返回结果,有两部分,第一部分是一个数字,基本是0,有时候是正数。第二部分是结果。

其实第一部分代表一个游标。scan就是以游标为基础,每次使用scan(包括sscan),以游标0开始,然后命令会返回一个新的游标;如果新的游标不是0,表示遍历还没有结束,要使用新的游标作为参数,继续输入获得后面的结果。

比如下面这个 count 1的时候,遍历没有结束,就会返回非0的游标。后续要使用新的游标来运行命令。

> smembers myset
) "one"
) "two"
> sscan myset match * count
) ""
) ) "one"
> sscan myset match * count
) ""
) ) "two"
> sscan myset match * count
) ""
) (empty list or set)

官网的解释可以查看这里:

http://redis.io/commands/scan

Redis的过滤器(SCAN)功能的更多相关文章

  1. Redis Geo: Redis新增位置查询功能

    转载于:http://www.itxuexiwang.com/a/shujukujishu/redis/2016/0216/144.html 移动互联网增进了人与人之间的联系,其中基于位置信息的服务( ...

  2. 通过Keepalived实现Redis Failover自动故障切换功能

    通过Keepalived实现Redis Failover自动故障切换功能[实践分享] 参考资料: http://patrick-tang.blogspot.com/2012/06/redis-keep ...

  3. 利用redis分布式锁的功能来实现定时器的分布式

    文章来源于我的 iteye blog http://ak478288.iteye.com/blog/1898190 以前为部门内部开发过一个定时器程序,这个定时器很简单,就是配置quartz,来实现定 ...

  4. 转:Redis Geo: Redis新增位置查询功能

    原文来自于:http://www.infoq.com/cn/news/2015/07/redis-geo 移动互联网增进了人与人之间的联系,其中基于位置信息的服务(Location Based Ser ...

  5. Redis实现世界杯排行榜功能(实战)

    转载请注明出处:https://www.cnblogs.com/wenjunwei/p/9754346.html 需求 前段时间,做了一个世界杯竞猜积分排行榜.对世界杯64场球赛胜负平进行猜测,猜对+ ...

  6. Redis命令:scan实现模糊查询

    转: Redis命令:scan实现模糊查询 2017年12月31日 16:54:33 琦彦 阅读数:22893 标签: redis数据库Redis命令scan模糊查询 更多 个人分类: Redis 所 ...

  7. 【springboot】【redis】springboot+redis实现发布订阅功能,实现redis的消息队列的功能

    springboot+redis实现发布订阅功能,实现redis的消息队列的功能 参考:https://www.cnblogs.com/cx987514451/p/9529611.html 思考一个问 ...

  8. Redis安装和主要功能简介

    Redis安装和主要功能简介   Redis(https://redis.io/), 是一个内存中的数据结构存储系统,它可以用作数据库.缓存和消息中间件. 安装Redis 我很少在开发机中直接装各种数 ...

  9. SpringBoot(18)---通过Lua脚本批量插入数据到Redis布隆过滤器

    通过Lua脚本批量插入数据到布隆过滤器 有关布隆过滤器的原理之前写过一篇博客: 算法(3)---布隆过滤器原理 在实际开发过程中经常会做的一步操作,就是判断当前的key是否存在. 那这篇博客主要分为三 ...

随机推荐

  1. delete错误

    今天找了半天delete错误,后来才知道是MTd和MDd模式的问题,MTd的内存申请和释放必须在同一个模块里面,接口上面不能使用stl等,MDd可以使用.改成MDd就可以了

  2. 一些实用的 jQuery 技巧

    jQuery如今已经成为Web开发中最流行的JavaScript库,通过jQuery和大量的插件,你可以轻松实现各种绚丽的效果. 本文将为你介绍一些实用的技巧,希望可以帮助你更加高效地使用jQuery ...

  3. 偶然发现的一个地图网站mapbox

    https://www.mapbox.com/ 可以自定义地图,并放到dropbox中.时间有限,更多功能有待发现 可以用他的切片 http://a.tiles.mapbox.com/v3/jambo ...

  4. Long型070000L前面0去掉比较大小,token,mysql innodb,properties,switch匹配空字符串对象

    public class TestJava { //定义获取资源文件 private static final ResourceBundle bundle = initBundle(); privat ...

  5. UITableView多选删除

    设置一个在编辑状态下点击可改变图片的cell FileItemTableCell.h #import <UIKit/UIKit.h> @interface FileItemTableCel ...

  6. Java script 看看黑客怎么写的

    在2011年的BlackHat DC 2011大会上Ryan Barnett给出了一段关于XSS的示例java script 代码: ($=[$=[ ] ] [(__=!$+$)[_=-~-~-~$] ...

  7. 数据库链接 mysql,sqlserver

    1.生成对象工厂 /// <summary> /// 生成对象工厂 /// </summary> public class DBFactory { /// <summar ...

  8. Linux网络编程4——个人总结

    TCP与UDP通信流程 TCP通信的基本步骤如下: 服务端:socket---bind---listen---while(1){---accept---recv---send---close---}- ...

  9. Linux 删除文件夹和文件的命令

    linux删除目录很简单,很多人还是习惯用rmdir,不过一旦目录非空,就陷入深深的苦恼之中,现在使用rm -rf命令即可.直接rm就可以了,不过要加两个参数-rf 即:rm -rf 目录名字-r 就 ...

  10. iOS开发--动画篇之layout动画深入

    "不得不说,单单是文章的标题,可能不足以说明本文的内容.因此,在继续讲述约束动画之前,我先放上本文要实现的动画效果." 编辑:Bison投稿:Sindri的小巢 约束动画并不是非常 ...