Redis的过滤器(SCAN)功能

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

主要参考这两篇:

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

http://redis.io/commands/scan

实验如下:

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

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

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

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

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

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

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

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

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

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

http://redis.io/commands/scan

时间: 2024-11-03 16:13:35

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

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

转载于:http://www.itxuexiwang.com/a/shujukujishu/redis/2016/0216/144.html 移动互联网增进了人与人之间的联系,其中基于位置信息的服务(Location Based Service,LBS)起到很重要的促进作用.在移动互联网的大环境下,每个手机都变成了一个位置追踪设备,为人们提供了非常丰富的位置服务.无论是附近的人,还是摇一摇等耳熟能详的应用都需要LBS在后台的支撑.但是,目前位置信息的使用过程中存在诸多挑战如相邻计算不准确等.由于

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

原文来自于:http://www.infoq.com/cn/news/2015/07/redis-geo 移动互联网增进了人与人之间的联系,其中基于位置信息的服务(Location Based Service,LBS)起到很重要的促进作用.在移动互联网的大环境下,每个手机都变成了一个位置追踪设备,为人们提供了非常丰富的位置服务.无论是附近的人,还是摇一摇等耳熟能详的应用都需要LBS在后台的支撑.但是,目前位置信息的使用过程中存在诸多挑战如相邻计算不准确等.由于经常面对海量数据请求,通常位置服务的

Redis的Keyspace notifications功能初探

本文出处:http://blog.csdn.net/chaijunkun/article/details/27361453,转载请注明.由于本人不定期会整理相关博文,会对相应内容作出完善.因此强烈建议在原始出处查看此文. 最近在做一套系统,其中要求若干个Worker服务器将心跳信息都上报给中央服务器.当一定时间中央服务器没有得到心跳信息时则认为该Worker失效了,发出告警. 满足这种需求的解决方法多种多样,我开始想到了memcache,上报一次心跳信息就刷新一次缓存,当缓存内心跳信息对象超时被

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

通过Keepalived实现Redis Failover自动故障切换功能[实践分享] 参考资料: http://patrick-tang.blogspot.com/2012/06/redis-keepalived-failover-system.html http://deidara.blog.51cto.com/400447/302402 目前,Redis还没有一个类似于MySQL Proxy或Oracle RAC的官方HA方案.Redis作者有一个名为Redis Sentinel的计划(ht

Python操作redis的订阅发布功能

安装redis-server yum -y install gcc gcc-c++    #安装编译工具 cd /opt wget -c http://download.redis.io/releases/redis-3.0.5.tar.gz   #下载包 tar xf redis-3.0.5.tar.gz     #解压 cd redis-3.0.5 make MALLOC=libc  #编译 make PREFIX=/usr/local/redis install  #安装 echo 'PA

【新功能】MaxCompoute禁止Full Scan功能开放

摘要: 2018年1月10日,MaxCompute禁止Full Scan功能开放.对于新创建的project默认情况下执行sql时,针对该project里的分区表不允许全表扫描,必须有分区条件指定需要扫描的分区. 点此查看原文:http://click.aliyun.com/m/41850/ [发布功能]: 2018年1月10日,MaxCompute禁止Full scan功能开放. 对于新project(注意:是新project,老用户创建的新project也适用该功能),默认情况下执行sql时

redis实现音乐排行榜功能

sorted_set类型 新的存储需求:数据排序有利于数据的有效展示,需要提供一种可以根据自身特征进行排序的方式 需要的存储结构:新的存储模型,可以保存可排序的数据 sorted_set类型:在set的存储结构基础上添加可排序字段 基本操作 添加数据 zadd key score1 member1 [score2 member2] 获取全部数据 zrange key start stop [WITHSCORES] zrevrange key start stop [WITHSCORES] 删除数

Redis学习——常用小功能

一.慢查询分析(查询日志:所谓慢查询日志就是系统在命令执行前后计算每条命令的执行时间,当超过预设阀值,就将这条命令的相关信息(例如:发生时间,耗时,命令的详细信息)记录下来,Redis也提供了类似的功能.) Redis客户端执行一条命令分为如下4个部分:1)发送命令  2)命令排队  3)命令执行  4)返回结果 (需要注意,慢查询只统计步骤3的时间,所以没有慢查询并不代表客户端没有超时问题.) 1.慢查询参数配置: ·预设阀值怎么设置?(slowlog-log-slower-than) (它的

redis技巧--自动完成功能实现

自动完成功能一般都伴随搜索框出现,就是用户在输入时帮助其自动补全. 比如对成语进行补全,现有如下成语:一心一意,一心二用,一帆风顺. 两种实现方式: 实现方式一: 为每个成语的每个前缀都使用一个集合类型键来存储该前缀对应的成语名,并且为了实现排序,我们使用有序集合,并score都为0,这样就按元素值的字典序排序.如果想要实现按照词的热度排序,需要再创建一个有序集合,存放词和score,最后把查询结果和这个集合做交集即可,这样可以避免更新一个词的热度需要更新多个集合的情况,因为一个词会出现在多个集