Redis 三大特殊数据类型常见命令

文章介绍了Redis如何利用Geospatial功能处理地理位置数据,包括添加、获取位置、计算距离以及半径查询。同时提到了Hyperloglog在基数统计上的优势,适合大数据场景下的UV计算。此外,Bitmaps被讨论为一种位存储解决方案,适用于记录用户活动状态等二元属性的统计。

Geospatial

朋友的定位,附近的人,打车距离计算

底层是 Zset即可以使用Zset的命令操作Geospatial

Redis3.2 开始支持的

1.添加地理位置

  • 两极无法添加
  • 经度:-180 ~ 180(度)
  • 纬度:-85.05112878 ~ 85.05112878(度)

geoadd key 经度 纬度 名称

2.获取指定位置的地理位置

geopos key 名称

3.返回两个给定位置之间的距离(直线距离)

  • 单位:
    • m :米
    • km :千米
    • mi : 英里
    • ft :英尺

geodist key

4.以给定值为半径,以经度和维度为中心,查找

  • 附近的人(获得所有附近的人的地址(开启定位))通过半径查询

georadius key 经度 纬度 半径 单位

5.以给定值为半径,以成员(城市名)为中心,查找

georadiusbymember key 成员名 半径 单位

6.返回一个或多个位置元素的geohash表示

  • 如果两个字符串越相似,表示两个地方越近

geohash key 成员1 成员2

Hyperloglog

基数统计的算法;

类似 Set 作用,但可以节省大量内存!!

  • 优点
    • 占用内存是固定的2的64次方 个不同的元素的基数,只需要 12KB 的内存。(大数据情况下,有0.81%错误率)

基数:集合中元素的个数(先去重),如{1,2,2,3} 其基数为3(集合去重后为1,2,3 有3个元素)

网页的UV(一个人访问访问一个网站多次,但是还是算作一个人)

传统实现UV:Set保存用户的Id,然后统计 set 中的元素的数量作为标准判断(这种需要保存大量用户的ID,需要大量的内存占用)

Redis2.8.9 开始支持

1.测试

创建一组元素 : pfadd key ele1 ele2 ele3 …

统计对应key的基数:pfcount key1 [key2 …] // 多个key 就是统计这些key并集的基数

合并:pfmerge destkey sourceKey1 sourceKey2 [sourceKey3 …]

Bitmaps

位存储,位图(操作二进制)

统计用户信息,活跃,不活跃!登录、未登录!打卡,365打卡!(只有两个状态的属性都可以使用!!)

1.案例:一周打卡记录

一周过去

setbit key offset bit

查看单天打卡情况

getbit key offset

统计所有打卡的天数

bitcount key

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值