当前位置: 首页 > news >正文

极简极速-Bitset (bitmap)实现考勤打卡场景

文章目录

  • 1. redis命令行操作bitmap
  • 2. RedisTemplate操作bitmap
  • 3. Java中的Bitset

1. redis命令行操作bitmap

在这里插入图片描述

2. RedisTemplate操作bitmap

bitmap的常见业务场景主要有日活统计(类似的月考勤)、点赞、BloomFilter等,以用户mj考勤统计为例,一个用户一个月的打卡记录用不了32bit(4byte)存储空间,性能也很好:

@Resource
private StringRedisTemplate template;template.opsForValue().setBit("mj",1,true);
template.opsForValue().setBit("mj",2,true);
template.opsForValue().setBit("mj",30,true);       
template.opsForValue().setBit("mj",31,true);
// 查看mj本月第三天是否打卡
Boolean ifArrive= template.opsForValue().getBit("mj", 3);
System.out.println(ifArrive);// false
// 统计本月打卡数
Long count = template.execute((RedisCallback<Long>) connection -> connection.bitCount("mj".getBytes(StandardCharsets.UTF_8), 1, 31));
System.out.println(count); // 4

3. Java中的Bitset

直接使用Java的bitset实现考勤打卡,这里数据集存储DB需要转化,如Bitset#toLongArray(),再转为json进行存储。

 public static void main(String[] args) {// Key一般为userIdMap<String,BitSet> map=new HashMap(1024);BitSet set = map.getOrDefault("mj",new BitSet(32));set.set(1,true);set.set(2,true);set.set(30,true);set.set(31,true);System.out.println(set.get(3));  //  本月第三天打卡:falseSystem.out.println(set.cardinality());// 本地打卡数:4}
http://www.lryc.cn/news/161726.html

相关文章:

  • word如何插入图片?3种常用的方法
  • Python/C API - 模組,型別,Tuple,例外和引用計數
  • 人工智能轨道交通行业周刊-第59期(2023.9.4-9.10)
  • ASP.NET Core 中的 MVC架构
  • C# PSO 粒子群优化算法 遗传算法 随机算法 求解复杂方程的最大、最小值
  • 网络协议从入门到底层原理学习(三)—— 路由
  • 2023/9/6 -- C++/QT
  • python爬虫,多线程与生产者消费者模式
  • WordPress 提示“此站点遇到了致命错误”的解决方法
  • Vue3,Typescript中引用组件路径无法找到模块报错
  • 科技成果鉴定之鉴定测试报告
  • NFTScan 浏览器正式版上线 2 周年!
  • 为什么要使用Token
  • 前端面试的话术集锦第 8 篇:高频考点(JS性能优化 性能优化琐碎事)
  • 【数据分析】Python:处理缺失值的常见方法
  • “批量随机字母命名文件,轻松管理你的文件库“
  • elasticsearch的数据聚合
  • 【网络编程·数据链路层】MAC帧/以太网协议/ARP协议/RARP协议
  • 算法:移除数组中的val的所有元素---双指针[2]
  • Python小知识 - Python爬虫进阶:如何克服反爬虫技术
  • SAP中的新旧事务码
  • day3_C++
  • 力扣题解(73. 矩阵置零),带注释
  • SpringMVC应用
  • 百度输入法全面升级,打造首个基于大模型的输入法原生应用
  • 如何解决GitHub 访问不了?小白教程
  • 龙芯指令集LoongArch——学习笔记(1)
  • ubuntu 20.04 docker安装emqx 最新版本或指定版本
  • 软件测试/测试开发丨学会与 AI 对话,高效提升学习效率
  • CEF内核和高级爬虫知识