
此类型,可以用来模拟实现“事件传播”的机制
什么是事件?有些操作,我们也不知道它什么时候出现,只能等这个事情出现了之,再采取行动
现在我们准备好了
stream,有事件产生了,我们就把这个事件当做一个元素,插入到这个stream里面。同时另有一些消费者在这里监听这个stream,一旦有事件来了,消费者就感知到了,就立刻采取动作
stream 就是一个队列(阻塞队列)。redis 作为一个消息队列的重要支撑,属于是 list 里面 blpop/brpop 升级版本
XADD:往 stream 里面插入元素XREAD:从 stream 里面取元素XRANGE:展示 stream 里面的元素XLEN:获取 stream 里面的元素个数(地理空间的)
用来存储坐标(经纬度)
存储一些点之后,就可以让用户给定一个坐标,去从刚才存储的点里进行查找(按照半径,矩形区域…)

GEOADD:添加位置坐标GEOSEARCH:在给定的范围里面进行查找应用场景只有一个:估算集合中的元素个数
set 有一个应用场景,统计服务器的 UV(用户访问的次数)
set 当然可以统计 UV,但是最大的问题在于:如果 UV 数据量非常大,set 就会消耗很多的内存空间set 存储 userId,每个 userId 按照 8 个字节算。1 亿 UV >8 亿字节>0.8GB HyperLogLog` 可以最多使用 12 KB 的空间,实现上述效果之所以 set 要消耗这么大的空间,是因为 set 需要存储每个元素。而 HyperLogLog 不存储元素的内容,但是能够记录“元素的特征”,从而在新增元素的时候,能够知道当前新增的元素,是一个已经存在的元素,还是一个第一次出现的元素
HyperLogLog 用来计数(记录出当前集合中有多少个不同的元素),但是不能告诉你这些元素都是什么HyperLogLog 存储元素的时候,提前特征的过程是不可逆的(信息量丢失了)
(位图)
使用 bit 位来表示整数
位图本质上,就还是一个集合,属于是 set 类型针对整数的特化版本
HyperLogLog虽然更省空间,但是它只计数,不存储元素内容,而bitmap存储元素
(位域)
可以理解成一串二进制序列(字节数组),同时可以吧这个字节数组中的某几个位赋予特定的含义,并且可以进行读取/修改/算术运算相关操作
string/hash 来说,还是节省了空间