Redis位图bitmap操作

 更新时间:2022年08月10日 15:17:05   作者:码农的秃头之旅  
本文主要介绍了Redis位图bitmap操作,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧

定义

1、位图不是真正的数据类型,它是定义在字符串类型中
2、一个字符串类型的值最多能存储512M字节的内容,位上限:2^32

# 1MB = 1024KB
# 1KB = 1024Byte(字节)
# 1Byte = 8bit(位)

强势点

可以实时的进行统计,极其节省空间。官方在模拟1亿2千8百万用户的模拟环境下,在一台MacBookPro上,典型的统计如“日用户数”的时间消耗小于50ms, 占用16MB内存

SETBIT 命令

  • 说明:设置某位置上的二进制值
  • 语法:SETBIT key offset value
  • 参数:offset - 偏移量 从0开始

​ value - 0或者1

示例:

# 默认扩展位以0填充
127.0.0.1:6379> SET mykey ab
OK
127.0.0.1:6379> GET mykey
"ab"
127.0.0.1:6379> SETBIT mykey 0 1
(integer) 0
127.0.0.1:6379> GET mykey
"\xe1b"
127.0.0.1:6379> 

GETBIT 命令

  • 说明:获取某一位上的值
  • 语法:GETBIT key offset

示例:

127.0.0.1:6379> GETBIT mykey 3
(integer) 0
127.0.0.1:6379> GETBIT mykey 0
(integer) 1
127.0.0.1:6379> 

BITCOUNT 命令

  • 说明:统计键所对应的值中有多少个 1
  • 语法:BITCOUNT key start end
  • 参数:start/end 代表的是 字节索引

示例:

127.0.0.1:6379> SET mykey1 ab
OK
127.0.0.1:6379[4]> BITCOUNT mykey
(integer) 6
127.0.0.1:6379[4]> BITCOUNT mykey 0 0
(integer) 3

应用场景案例

# 网站用户的上线次数统计(寻找活跃用户)
    用户名为key,上线的天作为offset,上线设置为1
# 示例
    用户名为 user1:login 的用户,今年第1天上线,第30天上线
    SETBIT user1:login 0 1 
    SETBIT user1:login 29 1
    BITCOUNT user1:login

到此这篇关于Redis位图bitmap操作的文章就介绍到这了,更多相关Redis位图操作内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家!

相关文章

  • Redis内存碎片产生原因及Pipeline管道原理解析

    Redis内存碎片产生原因及Pipeline管道原理解析

    这篇文章主要为大家介绍了Redis内存碎片产生原因及Pipeline管道原理解析,有需要的朋友可以借鉴参考下,希望能够有所帮助,祝大家多多进步,早日升职加薪
    2023-03-03
  • 压缩列表牺牲速度来节省内存,Redis是膨胀了吗

    压缩列表牺牲速度来节省内存,Redis是膨胀了吗

    这篇文章主要给大家解释了Redis 当中的 ziplist(压缩列表)牺牲速度来节省内存的原因,希望大家能够喜欢
    2021-02-02
  • redis缓存延时双删的原因分析

    redis缓存延时双删的原因分析

    延时双删就是在增删改某实体类的时候,要对该实体类的缓存进行清空,清空的位置在数据库操作方法的前后,这篇文章主要介绍了redis缓存为什么要延时双删,需要的朋友可以参考下
    2022-08-08
  • Redisson延时队列RedissonDelayed的具体使用

    Redisson延时队列RedissonDelayed的具体使用

    定时调度基本是每个项目都会遇到的业务场景,一般地,都会通过任务调度工具执行定时任务完成,但是会有一定的缺点,本文主要介绍了Redisson延时队列RedissonDelayed的具体使用,感兴趣的可以了解一下
    2024-02-02
  • redis慢查询日志的访问和管理方式

    redis慢查询日志的访问和管理方式

    这篇文章主要介绍了redis慢查询日志的访问和管理方式,具有很好的参考价值,希望对大家有所帮助。如有错误或未考虑完全的地方,望不吝赐教
    2022-12-12
  • 使用redis实现延迟通知功能(Redis过期键通知)

    使用redis实现延迟通知功能(Redis过期键通知)

    这篇文章主要介绍了使用redis实现延迟通知功能(Redis过期键通知)的相关知识,本文通过实例代码图文相结合给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友参考下吧
    2021-09-09
  • Redis性能大幅提升之Batch批量读写详解

    Redis性能大幅提升之Batch批量读写详解

    这篇文章主要给大家介绍了关于Redis性能大幅提升之Batch批量读写的相关资料,文中介绍的非常详细,对大家具有一定的参考学习价值,需要的朋友们下面来跟着小编一起来学习学习吧。
    2017-06-06
  • Redis中Hash类型的使用

    Redis中Hash类型的使用

    本文主要介绍了Redis中Hash类型的使用,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2023-06-06
  • Redis集群Lettuce主从切换问题解决方案

    Redis集群Lettuce主从切换问题解决方案

    这篇文章主要为大家介绍了Redis集群Lettuce主从切换问题解决方案,有需要的朋友可以借鉴参考下,希望能够有所帮助,祝大家多多进步,早日升职加薪
    2023-07-07
  • 解决linux下redis数据库overcommit_memory问题

    解决linux下redis数据库overcommit_memory问题

    这篇文章介绍了解决linux下redis数据库overcommit_memory问题的方法,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2022-02-02

最新评论