三种特殊类型
geospatial
该数据类型是用来存储地理空间的
附近的人,发送定位,分享实时位置,打车的时候的距离计算都可以通过这个实现
我们这里使用这几个城市的经纬度作为测试
城市 | 经度 | 维度 |
---|---|---|
相城区 | 120.64239 | 31.36889 |
吴江区 | 120.638317 | 31.159815 |
太仓 | 121.10891 | 31.4497 |
常熟市 | 120.75225 | 31.65374 |
昆山市 | 120.98074 | 31.38464 |
这里有六个基本命令,我们来一个个看
1 | # geoadd key longitude latitude member [longitude latitude member..] |
geo的底层其实是Zset,我们可以使用Zset的命令去操作geo
1 | 127.0.0.1:6379> zrem Suzhou TaiCang |
Hyperloglog
先来了解一下基数是什么?
基数其实就是一个集合中不重复的元素个数,其实就是一个集合去重后的集合长度
业务场景:
网站的访问量(一个人访问一个网站多次,也算一个人)
传统使用set集合的重复无序的特性,可以保存用户的id,以set集合的长度作为标准。但是,专门使用一个set来保存用户id未免优点奢侈,如果id是分布式的会很复杂,导致set集合很庞大,所以需要一个方法来解决这个问题。
Hyperloglog就是用来解决此问题的算法。
优点:占用很小的内存空间存放2^64个数据,也只占用12kb
瑕疵:会有0.81%的错误率
1 | # pfadd key member [member..] |
Bitmap
位存储,一般使用两种状态的区分
比如统计中国的男子和女子的数目
14亿个二进制数,0代表女子,1代表男
0 0 1 1 1 0 1 …
登录,头像是亮着的,未登录,头像是灰色的。
1 | # setbit key offset value |