一、发布订阅
Redis发布订阅是一种消息通信模式,发布者(pub)发送消息,订阅者(sub)接收消息。Redis客户端可以订阅任意数量的频道
SUBSCRIBE 频道名
订阅一个频道PUBLISH 频道名 message
向一个频道发布信息。所有订阅该频道的都能收到
二、Bitmaps
Bitmaps本身不是一种数据类型,实际上它就是字符串(key-value),但是它可以对字符串的位进行操作。bitmaps就像一个整数数组,每一位只能存储0和1,数组下标就叫做偏移量。
setbit <key> <offset> <value>
设置Bitmaps中某个偏移量的值(0或1)getbit <key> <offset>
获取Bitmaps中某个偏移量的值bitcount <key>
查看key中被设置为1的数量bitop and/or/not/xor <destkey> <key>
求多个Bitmaps的交集,并集,非,异或操作并将结果保存在destkey中。
Bitmaps与set对比
加入网站有1亿用户,但是每天访问用户有5千万,那么用集合类型和Bitmaps分别存储活跃用户对比:
数据类型 | 存储一个用户所需空间 | 需要存储用户量 | 内存量 |
---|---|---|---|
Set | 64位 | 5千万 | 64*5千万 = 400MB |
Bitmaps | 1位 | 1亿 | 1*1亿 = 12.5MB |
可以看出bitmaps可以节省空间,但是如果活跃用户比较少,用bitmaps就不太合适了。应为比如一天只有1个用户访问,这个用户的id是第1千万,那么bitmaps就得存储前1千万的数据。而set只用存一个。
三、HyperLogLog
HyperLogLog主要就是用来不重复统计计数的,不关心具体某一个数据。
pfadd <key> <element>
添加知道元素到key中pfcount <key>
计算key数,可以同时计算多个key的总和pfmerge <destkey> <sourcekey> <sourcekey>
将一个或多个key合并后结果存在destkey中