Redis各类型应用场景

Redis的六种特性

,重要消息的,然后工作线程可以选择按

ret = r.zincrby("login:login_times", 1, uid)

//那么如何获得登录次数最多的用户呢,逆序排列取得排名前N的用户

ret = r.zrevrange("login:login_times", 0, N-1)

-20和30-40

A_start 10, A_end 20

B_start 30, B_end 40

我们将这两个范围的起始位置存在Redis的Sorted Sets数据结构中,基本范围起始值作为score,范围名加start和end为其value值:

redis 127.0.0.1:6379> zadd ranges 10 A_start

(integer) 1

redis 127.0.0.1:6379> zadd ranges 20 A_end

(integer) 1

redis 127.0.0.1:6379> zadd ranges 30 B_start

(integer) 1

redis 127.0.0.1:6379> zadd ranges 40 B_end

(integer) 1

这样数据在插入Sorted Sets后,相当于是将这些起始位置按顺序排列好了。

现在我需要查找15这个值在哪一个范围中,只需要进行如下的zrangbyscore查找:

redis 127.0.0.1:6379> zrangebyscore ranges (15 +inf LIMIT 0 1

1) "A_end"

这个命令的意思是在Sorted Sets中查找大于15的第一个值。(+inf在Redis中表示正无穷大,15前面的括号表示>15而非>=15)

查找的结果是A_end,由于所有值是按顺序排列的,所以可以判定15是在A_start到A_end区间上,也就是说15是在A这个范围里。至此大功告成。

当然,如果你查找到的是一个start,比如咱们用25,执行下面的命令

redis 127.0.0.1:6379> zrangebyscore ranges (25 +inf LIMIT 0 1

1) "B_start"

返回结果表明其下一个节点是一个start节点,也就是说25这个值不处在任何start和end之间,不属于任何范围。

Pub/Sub

Pub/Sub 从字面上理解就是发布(Publish)与订阅(Subscribe),在Redis中,你可以设定对某一个key值进行消息发布及消息订阅,当一个key值上进行了消息发布后,所有订阅它的客户端都会收到相应的消息。这一功能最明显的用法就是用作实时消息系统,比如普通的即时聊天,群聊等功能。

案例:

Qlocenter 下发策略

使用场景

Pub/Sub构建实时消息系统

Redis的Pub/Sub系统可以构建实时的消息系统

比如很多用Pub/Sub构建的实时聊天系统的例子。

上一篇:WinForm/Silverlight多线程编程中如何更新UI控件的值


下一篇:rpm软件包类型