码迷,mamicode.com
首页 > 其他好文 > 详细

Redis高级数据类型

时间:2020-04-11 23:59:41      阅读:156      评论:0      收藏:0      [点我收藏+]

标签:itop   its   水平   位置   二进制   美团   geohash   set   perl   

Bitmaps:Redis应用于信息状态统计

如果仅仅存储一个状态(Y/N,1/0),可以用二进制位存,用编号/id(范围/max较小最好)作为位置

设置值setbit bits 位置 值

获取值getbit bits 位置

 

扩展操作

对指定key按位进行交、并、非、异或操作,并将结果保存到destKey中

bitop op destKey key1 [key2...]

and:交  or:并  not:非  xor:异或

统计指定key中1的数量

bitcount key [start end]

业务场景 

电影网站:统计每天某一部电影是否被点播;统计每天有多少部电影被点播;统计每周/月/年有多少部电影被点播;统计年度哪部电影没有被点播

 

HyperLogLog:统计不重复数据的数量  Redis应用于独立信息统计

基数统计,基数集合(去重后的集合)

基数是数据集去重后元素个数,HyperLogLog是用来做基数统计的,运用了LogLog的算法

HyperLogLog基本操作

添加数据  pfadd  key  element  [element...]

统计数据  pfcount  key  [key...]

合并数据  pfmerge destkey  sourcekey  [sourcekey...]

 

说明:用于进行基数统计,不是集合,不保存数据,只记录数量而不是具体数据

核心是基数估算算法,最终数值存在一定误差

误差范围:基数估计的结果是一个带有0.81%标准错误的近似值

耗空间极小,每个hyperloglog key占用了12K的内存用于标记基数

pfadd命令不是一次性分配12K内存使用,会随着基数的增加内存逐渐增大

pfmerge命令合并后占用的存储空间为12K,无论合并之前数据量多少

 

 

GEO  Redis用于记录地理位置信息

微信/陌陌  附近的人

美团/饿了吗

携程/马蜂窝

高德/百度      只要和线下有关,位置类的东西

 

基本操作:key是GEO对象名

添加坐标点  geoadd  key  longitude  latitude  member  [longitude  latitude  member...]

获取坐标点  geopos  key  member  [member ...]

计算坐标点距离  geodist  key  member1 member2 [unit]  -->只算水平位置  默认单位是m-->unit

根据坐标求范围内的数据  georadius  key  longitude  latitude  radius  

根据点求范围内数据  georadiusbymember  key  member  radius

获取指定点对应的坐标hash值  geohash  key  member

 

Redis高级数据类型

标签:itop   its   水平   位置   二进制   美团   geohash   set   perl   

原文地址:https://www.cnblogs.com/liushoudong/p/12682887.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!