redis的bitmap和geohash经纬度的使用、redis6.0的新特性

Bitmap

BitMap 原本的含义是用一个比特位来映射某个元素的状态。由于一个比特位只能表示 0 和 1 两种状态,所以 BitMap 能映射的状态有限,但是使用比特位的优势是能大量的节省内存空间
可以把 Bitmap 想象成一个以比特位为单位的数组,数组的每个单元只能存储0和1,数组的下标在 Bitmap 中叫做偏移量;
在这里插入图片描述
注意:Redis 其实只支持 5 种数据类型,并没有 BitMap 这种类型,BitMap 底层是基于 Redis 的字符串类型实现的。
Redis 中字符串的最大长度是2^32bit= 512M,C语言中字符串的末尾都要存储一位分隔符,所以实际上 BitMap 的 offset 值上限是2^32 - 1
bitmap的相关命令:
1、设置值,其中value只能是 0 和 1
setbit key offset value
2、获取值
getbit key offset
3、获取指定范围内值为bit位为1的个数(区间统计不建议使用,bitcount用的是byte来计算位数(范围的单位是byte,两者差了8倍),其他setbit和getbit用的是bit),不加范围使用的查询所有
BITCOUNT key [start end]

3、BitMap间的运算:BITOP 支持四种表达式运算: AND(交集), OR(并集), XOR(异或) 和NOT(取非), 用法如下:
BITOP AND destkey srckey1 srckey2 srckey3 … srckeyN
BITOP OR destkey srckey1 srckey2 srckey3 … srckeyN
BITOP XOR destkey srckey1 srckey2 srckey3 … srckeyN
BITOP NOT destkey srckey
result 计算的结果,会存储在该destkey 中,not运算只能一个key

4、BITPOS key bit [start] [end]
返回设置为1或0(bit)的一个字符串中的第一个点的offset位置
bitmap的使用场景:
1、用户签到:
很多网站都提供了签到功能,并且需要展示最近一个月的签到情况,这种情况可以使用 BitMap 来实现。
命令为:setbit userId:2022 (今天是一年中的第几天) % (今年的天数) 1
2、活跃用户统计(用户登陆情况):
使用日期作为 key,然后用户 id 为 offset,如果当日活跃过就设置为1。具体怎么样才算活跃这个标准大家可以自己指定。
命令为:Setbit 2022315 userId 1<

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值