redis 使用bitMap实现统计系统在线用户数量

2023-05-16

BitMap,简单来说,其实也就是 byte 数组,用二进制表示,一个bit的值,或者是0,或者是1;也就是说一个bit能存储的最多信息是2。它用一个bit位来标记某个元素对应的Value。因为它采用了Bit为单位来存储数据,可以大大节省存储空间。
小编今天主要介绍一下,redis中对bitmap的应用:
先来了解一下结构图:
在这里插入图片描述redis-bitmap常用指令:

  1. getbit key offset 对key所存储的字符串值,获取指定偏移量上的位(bit)
  2. setbit key offset value 设置偏移量值
  3. bitcount key [start end] 获取位图指定范围中位值为1的个数。如果不指定start与end,默认获取所有值为1的个数。
  4. bitop op destKey key1 [key2…] 做多个BitMap的and(交集)、or(并集)、not(非)、xor(异或)操作并将结果保存在destKey中
  5. bitpos key tartgetBit [start end] 计算位图指定范围第一个偏移量对应的的值等于targetBit的位置找不到返回-1 start与end没有设置,则取全部 targetBit只能取0或者1

小编做了一个统计系统在线人数的小demo:

1.Redis工具类:

	/**
	*设置偏移量值
	**/
	public void setBitMap(String key,Integer userId,boolean flag){
		ValueOperations valueOperations=redisTemplate.opsForValue();
		valueOperations.setBit(key,userId,flag);
	}
	/**
	*进行统计
	**/
	public long bitCount(String key){
		return redisTemplate.execute(new RedisCallback<Long>() {
			@Override
			public Long doInRedis(RedisConnection redisConnection) throws DataAccessException {
				return redisConnection.bitCount(key.getBytes());
			}
		});
	}

2.当用户登陆时,通过setBitMap,记录用户上线。当用户登出时,将偏移量的值设置为0
3.在相关业务代码中通过调用bitCount方法实现 对在线人数的统计。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

redis 使用bitMap实现统计系统在线用户数量 的相关文章

  • 自编译的pytorch出现OSError: libmkl_intel_lp64.so.1: cannot open shared object file: No such file or direct

    我的Pytorch是本机编译安装 运行时出现 xff1a span class token function Traceback span span class token punctuation span most recent call
  • 【深度笔记】模型理论性能计算调研

    定义 1 计算量 FLOP xff1a 浮点运算次数 xff08 Floating Point Operations xff09 MAC xff1a 乘加累积操作数 FLOPs S xff1a 每秒的FLOP xff0c 可视作性能 公式
  • 分布式学习 - MPICH编译与实践

    下载release编译 参考官方README 源码编译 准备工作 xff1a git clone https github com pmodels mpich git bash cd mpich git submodule update i
  • 07誓师大会有感

    07财年的誓师大会如约在中国剧院举行了 xff0c 纪律显得比以往更加严格 xff0c 迟到或者服装不合格者都将予与重罚 开场一段精彩的电影片断 xff0c 然后是高唱神码之歌 林总代表总裁室总结了06财年的营收状况 xff0c 已经07年
  • ROS 进阶之 tf变换

    TF变换 一 http www guyuehome com 355 http www guyuehome com 279 world 坐标系 二 广播TF变换 1 广播tf变换 向系统中广播参考系之间的坐标变换关系 系统中更可能会存在多个不
  • 易扩展的SLAM框架-OpenVSLAM

    本文介绍了一种具有较高可用性和可扩展性的可视化SLAM框架 OpenVSLAM 视觉SLAM系统对于AR设备 机器人和无人机的自主控制等是必不可少的 然而 传统的开源视觉SLAM框架并没有像从第三方程序调用的库那样进行适当的设计 为了克服这
  • GVINS:基于GNSS视觉惯性紧耦合的平滑状态估计方法

    文章 xff1a GVINS Tightly Coupled GNSS Visual Inertial Fusion for Smooth and Consistent State Estimation 作者 xff1a Shaozu Ca
  • opencv中ArUco模块实践(1)

    论文阅读模块将分享点云处理 xff0c SLAM xff0c 三维视觉 xff0c 高精地图相关的文章 公众号致力于理解三维视觉领域相关内容的干货分享 xff0c 欢迎各位加入我 xff0c 我们一起每天一篇文章阅读 xff0c 开启分享之
  • ROS2入门之基本介绍

    论文阅读模块将分享点云处理 SLAM 三维视觉 高精地图相关的文章 公众号致力于理解三维视觉领域相关内容的干货分享 欢迎各位加入我 我们一起每天一篇文章阅读 开启分享之旅 有兴趣的可联系微信dianyunpcl 163 com 前言 201
  • ikd-Tree:增量KD树在机器人中的应用

    文章 xff1a ikd Tree An Incremental K D Tree for Robotic Applications 作者 xff1a Yixi Cai Wei Xu and Fu Zhang 编译 xff1a 点云PCL
  • 视觉SLAM从传统到语义方法的概述

    文章 xff1a An Overview on Visual SLAM From Tradition to Semantic 作者 xff1a Weifeng Chen Guangtao Shang Aihong Ji Chengjun Z
  • Android 11 PackageManagerService源码分析(二):Packages.xml详解

    1 开篇 在上一篇文章中提到Settings类会在PackageManagerService启动过程中对packages xml等一些列xml文件进行解析 那么有以下问题 xff1a 这些文件记录了什么内容 xff1f 为什么需要这些文件
  • 【Python】eval的作用及NameError: name '变量名' is not defined

    在个人Python 的学习中 xff0c 通过记录总结 xff0c 提高自己的知识储备 xff0c 和学习能力 解决和解释三个小问题 xff1a 1 input与raw input 的区别 2 while循环 3 eval 的作用是什么 x
  • 【Python】使用网络调试助手传输数据(UDP协议)

    目录 1 发送与接收数据代码 2 网络调试助手配置 3 网络通信的流程 1 发送与接收数据代码 导入socket模块 import socket 判断程序入口 if name 61 61 39 main 39 创建套接字 xff0c AF
  • 课程设计——学生成绩管理系统 C语言

    课程设计 学生成绩管理系统 基本要求 xff1a 1 程序功能 编程实现一个基础的成绩管理系统 2 设计目的 通过本程序综合掌握结构体类型 指针 函数 文件等知识的综合使用 3 功能要求 可扩充功能 1 实现简单的菜单设计 如下所示 1添加
  • Foxmail登陆失败-NO LOGIN Login error password error

    问题描述 xff1a 因为今天在一个项目中需要用到邮箱的客户端授权码 xff0c 所以我在网易邮箱网页版中设置了授权码 xff0c 但是在后来在Foxmail客户端收取邮件时出现了问题 xff1a 我确定自己没有改过密码 xff0c 所以又
  • 远程登录阿里云服务器时,提示Permission denied, please try again.

    在使用ssh命令 xff0c 远程登录阿里云服务器时 xff0c 提示Permission denied please try again 百分之九十的可能 xff1a 你的密码错了 xff01 你需要注意的是 xff0c 我们的实例有两个
  • 为什么使用token?session与token的区别

    目录 一 session的状态保持及弊端 二 token认证机制 一 session的状态保持及弊端 当用户第一次通过浏览器使用用户名和密码访问服务器时 xff0c 服务器会验证用户数据 xff0c 验证成功后在服务器端写入session数
  • 在线加密解密工具

    http tool oschina net encrypt 一个在线加解密工具 xff0c 界面如图 xff1a
  • Django到底是MVC还是MVT?以及MVC和MVT的区别

    最近一直被一些问题所困惑 xff1a Django是遵循MVC还是MVT xff1f MVC和MVT到底有哪些区别 xff1f MVC可以继续拆分吗 xff1f 在网络上浏览了很多无关痛痒的文章 xff0c 无非是M V C分别代表什么 x

随机推荐

  • 【Python】使用Counter方法统计字符串每个字符出现的次数

    from collections import Counter a 61 34 a lskdh 96 foiegn 96 96 as ldnf asd 121 2ljladsfkja 96 sdijfhaosjlfd gjsdfg as d
  • 【Python】时间戳的格式化输出

    将当前时间按照 2019 02 25 10 xff1a 26 xff1a 55 输出 xff1a import datetime now time 61 datetime datetime now strftime 34 Y m d H M
  • 【Python】输出给定范围内的所有素数

    质数 xff08 prime number xff09 又称素数 xff0c 有无限个 质数定义为在大于1的自然数中 xff0c 除了1和它本身以外不再有其他因数 首先定义一个空列表用来存放所有的素数 sushu 61 遍历给定的范围 xf
  • Java 通过map构造树形结构

    在开发中 xff0c 经常会有将 数据组装成为树形结构的场景 xff0c 除了可以通过递归实现 xff0c 还可以通过map 组装实现 一 xff0c 构造基本数据 import apple laf JRSUIUtils import co
  • 【无标题】es搜索基本操作

    一 xff0c 准备数据 1 创建索引 PUT lagou book 2 创建mapping PUT lagou book doc mapping 34 properties 34 34 description 34 34 type 34
  • ubuntu 环境使用eclipse和JLink对uboot进行调试

    ubuntu 12 04 Jlink v8 Jlink Linux v422a tar gz Linux J Link ARM V4 34 Windows 下载eclipse C C 43 43 版本 http www eclipse or
  • 【ES】常用操作工具

    工欲善其事 xff0c 必先利于器 xff0c es使用过程中 xff0c 有些工具能帮助我们快速的上手和使用 一 es head es head 是一款专门针对 es的客户端工具elasticSearch配置包 是一个基于node js的
  • 【es】基本概念理解

    一 xff0c 初识es 1 是什么 xff1f ElasticSearch 简称es 开源的分布式的全文搜索引擎 xff0c 可以近乎实时的存储检索数据 xff0c es使用java开发 xff0c 并且使用Lucene作为核心实现搜索功
  • 无法安装net framework 3.5 的解决方法

    电脑刚重装了Windows8 1系统 xff0c 然后安装数据库的时候 xff0c 却出现了这样的问题 xff1a 您的电脑上的应用需要使用以下windows功能 问题原因是 xff1a 在安装系统的时候 xff0c NET Framewo
  • 【计算机网络原理】第四章 数据链路层

    今天主要梳理了一下数据链路层的内容 xff0c 如下 一 宏观规划 综合数据链路层的整体 xff0c 分为两大部分 xff0c 第一部分讲解数据链路层的功能 xff0c 第二部分讲解数据链路层的功能 这些协议 xff0c 其实还是为了实现数
  • 【redis】关系型数据库 VS 非关系型数据库

    一 关系型数据库 xff1f 1 概念 关系型数据库是指采用了关系模型来组织数据的数据库 简单来说 xff0c 关系模式就是二维表格模型 主要代表 xff1a SQL Server xff0c Oracle Mysql PostgreSQL
  • resultful风格接口

    一 产生背景 网络应用程序 xff0c 越来越流行前端和后端的分离设计 当前的发展趋势是前端的设计层出不穷 比如 xff1a 各种型号的手机 平板灯其他设计 因为必须要一种统一的机制方便不同的前端和后端进行通信 这就导致了API结构的流行
  • 【kafka】Exception thrown when sending a message with key='null' and payload='lizhenjuan;99' to topic

    今天碰到一个奇怪的问题 xff0c 如下图 xff1a 一 问题 1 问题截图 上午还可以发送消息成功的 xff0c 下午突然就发送不了消息了 我就检查我代码的问题 xff0c 是传递的格式不对 xff0c 还是数据要求不对 网上的资料显示
  • 【mysql】order by多个字段排序

    今天遇到了两个字段排序的问题 xff0c 感觉不是很清晰 xff0c 所有又按照规则查询了下 xff0c 总结下 count都是306的有三个 现在需要同时按照age和count排序 xff0c 测试最后的排序结果 默认都是按照age和co
  • PCB Layout软件分析对比(AD、Pads、Allegro)

    PCB Layout软件分析对比 xff08 AD Pads Allegro xff09 国内的EDA软件市场几乎被三家瓜分 xff0c 分别是Altium Cadence Mentor xff0c 也是我们这次主要分析和比较的软件 除此之
  • 【leetcode学习笔记】leecode是什么?

    在csdn上看到leecode是第二次了 xff0c 之前一直不知道是什么 xff1f 今天在学习linux系统如何将文本登录界面转换为图像登录界面的时候 xff08 出现了运行startx后 xff0c ubuntu密码正确也进不去系统的
  • 相机内参详解

    相机内参详解 以下是一些个人在工作中对相机内参的学习和理解 首先要了解一下数码相机的大致成像原理 1 光聚焦在CCD或CMOS上 2 CCD或CMOS完成光 电转换 3 A D将模拟信号转换成数字信号 4 最后由DSP将数字信号转换成数码图
  • java8使用积累

    1 将List lt T gt 数组转换为String并用逗号隔开 String join 34 34 List 2 idea自动补全代码教程 xff1a https www cnblogs com HF Made p 11417225 h
  • 【java】手动分页工具类

    最近小编遇到一个很绕的问题 xff0c 无法使用mybatis自带的分页插件对符合条件的数据进行分页 xff0c 故收集了一个自动分页的工具类 xff1a public static lt T gt List lt T gt getPage
  • redis 使用bitMap实现统计系统在线用户数量

    BitMap xff0c 简单来说 xff0c 其实也就是 byte 数组 xff0c 用二进制表示 xff0c 一个bit的值 xff0c 或者是0 xff0c 或者是1 xff1b 也就是说一个bit能存储的最多信息是2 它用一个bit