个人博客请访问 http://www.x0100.top
平常接触最多的是5个入门级数据结构:String,Hash,List,Set,Sorted Set,本文介绍3个高级数据结构:Bitmaps,Hyperloglogs,GEO。
Bitmaps
bitmaps不是一个真实的数据结构。而是String类型上的一组面向bit操作的集合。由于strings是二进制安全的blob,并且它们的最大长度是512m,所以bitmaps能最大设置2^32个不同的bit。
bit操作被分为两组:
-
恒定时间的单个bit操作,例如把某个bit设置为0或者1。或者获取某bit的值。
-
对一组bit的操作。例如给定范围内bit统计(例如人口统计)。
Bitmaps的最大优点就是存储信息时可以节省大量的空间。例如在一个系统中,不同的用户被一个增长的用户ID表示。40亿(2^32=4*1024*1024*1024≈40亿
)用户只需要512M内存就能记住某种信息,例如用户是否登录过。
Bits设置和获取通过SETBIT 和GETBIT 命令,用法如下:
SETBIT key offset value
GETBIT key offset
使用实例:
127.0.0.1:6380> setbit dupcheck 10 1
(integer) 0
127.0.0.1:6380> getbit dupcheck 10
(integer) 1
SETBIT命令第一个参数是位编号,第二个参数是这个位的值,只能是0或者1。如果bit地址超过当前string长度,会自动增大string。
Bitmaps示意图
GETBIT命令指示返回指定位置bit的值。超过范围(寻址地址在目标key的string长度以外的位)的GETBIT总是返回0。三个操作bits组的命令如下:
-
BITOP 执行两个