服务器之家:专注于VPS、云服务器配置技术及软件下载分享
分类导航

Mysql|Sql Server|Oracle|Redis|MongoDB|PostgreSQL|Sqlite|DB2|mariadb|Access|数据库技术|

服务器之家 - 数据库 - Redis - Redis位图bitmap操作

Redis位图bitmap操作

2022-08-10 20:44码农的秃头之旅 Redis

本文主要介绍了Redis位图bitmap操作,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧

定义

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

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

强势点

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

SETBIT 命令

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

​ value - 0或者1

示例:

?
1
2
3
4
5
6
7
8
9
10
# 默认扩展位以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

示例:

?
1
2
3
4
5
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 代表的是 字节索引

示例:

?
1
2
3
4
5
6
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

应用场景案例

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

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

原文链接:https://blog.csdn.net/weixin_45185267/article/details/125295063

延伸 · 阅读

精彩推荐
  • RedisRedis教程(六):Sorted-Sets数据类型

    Redis教程(六):Sorted-Sets数据类型

    这篇文章主要介绍了Redis教程(六):Sorted-Sets数据类型,本文讲解了Sorted-Sets数据类型概述、相关命令列表、命令使用示例、应用范围等内容,需要的朋友可以参...

    Redis教程网2512019-10-24
  • RedisRedis集群的离线安装步骤及原理详析

    Redis集群的离线安装步骤及原理详析

    这篇文章主要给大家介绍了关于Redis集群的离线安装步骤及原理的相关资料,文中通过示例代码介绍的非常详细,对大家学习或者使用Redis具有一定的参考学...

    全me村的希望1922019-11-28
  • Redis关于redigo中PubSub的一点小坑分析

    关于redigo中PubSub的一点小坑分析

    这篇文章主要给大家介绍了关于redigo中PubSub的一点小坑的相关资料,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,...

    Chen Jiehua6802019-11-20
  • Redis为什么Redis哨兵集群至少三节点?

    为什么Redis哨兵集群至少三节点?

    Redis哨兵的作用就是解决Redis高可用,而为了提高Redis的吞吐量,Redis提供了Cluster集群解决方案。...

    运维研习社8802022-02-20
  • RedisCentOS Linux系统下安装Redis过程和配置参数说明

    CentOS Linux系统下安装Redis过程和配置参数说明

    这篇文章主要介绍了CentOS Linux系统下安装Redis过程和配置参数说明,需要的朋友可以参考下 ...

    junjie5652019-10-21
  • Redis如何使用Redis实现电商系统的库存扣减

    如何使用Redis实现电商系统的库存扣减

    在日常开发中有很多地方都有类似扣减库存的操作,本文主要介绍了如何使用Redis实现电商系统的库存扣减,具有一定的参考价值,感兴趣的可以了解一下...

    PHP开源社区6172022-02-10
  • Redis基于Redis实现每日登录失败次数限制

    基于Redis实现每日登录失败次数限制

    这篇文章主要介绍了通过redis实现每日登录失败次数限制的问题,通过redis记录登录失败的次数,以用户的username为key,本文给出了实例代码,需要的朋友可以...

    zzzgd_6664912019-11-27
  • Redisredis客户端实现高可用读写分离的方式详解

    redis客户端实现高可用读写分离的方式详解

    基于sentienl 获取和动态感知 master、slaves节点信息的变化,我们的读写分离客户端就能具备高可用+动态扩容感知能力了,接下来通过本文给大家分享redis客户...

    mushishi8652021-08-15