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

传奇网站制作网做淘宝主页网站

传奇网站制作网,做淘宝主页网站,wordpress注册失败,手工制作玫瑰花1. Redis 的 BitMap 概述 在 Redis 中,BitMap 并非一种独立的数据结构,而是基于 String 类型数据结构实现的一种存储方式。由于 String 类型的最大上限是 512M,换算成 bit 位就是 2^32 个,这决定了 BitMap 可操作的最大范围。Bit…

1. Redis 的 BitMap 概述

在 Redis 中,BitMap 并非一种独立的数据结构,而是基于 String 类型数据结构实现的一种存储方式。由于 String 类型的最大上限是 512M,换算成 bit 位就是 2^32 个,这决定了 BitMap 可操作的最大范围。BitMap 非常适合用于处理大量的布尔值,能以极小的空间存储大量的标志位信息,常用于签到统计、活跃用户统计等场景。

2. BitMap 常用操作命令

SETBIT:用于向指定位置(offset)存入一个 0 或 1,例如 SETBIT key offset value

GETBIT:获取指定位置(offset)的 bit 值,即 GETBIT key offset

BITCOUNT:统计 BitMap 中值为 1 的 bit 位的数量,命令为 BITCOUNT key

BITFIELD:可对 BitMap 中 bit 数组的指定位置(offset)的值进行查询、修改、自增等操作。

BITFIELD_RO:获取 BitMap 中 bit 数组,并以十进制形式返回。

BITOP:能将多个 BitMap 的结果做位运算(与、或、异或),如 BITOP AND result_key key1 key2

BITPOS:查找 bit 数组中指定范围内第一个 0 或 1 出现的位置,例如 BITPOS key 1

3. 基于 BitMap 的签到功能实现

签到实现
  • 业务逻辑:获取当前登录用户的 ID 和日期,根据用户 ID 和日期拼接 Redis 的 key,确定今天是本月的第几天,然后使用 SETBIT 命令将该位置的 bit 位设置为 1 表示签到。
@Override
public Result sign() {Long userId = UserHolder.getUser().getId();LocalDateTime now = LocalDateTime.now();String keySuffix = now.format(DateTimeFormatter.ofPattern(":yyyyMM"));String key = USER_SIGN_KEY + userId + keySuffix;int dayOfMonth = now.getDayOfMonth();stringRedisTemplate.opsForValue().setBit(key, dayOfMonth - 1, true);return Result.ok();
}
签到统计
  • 业务逻辑:同样先获取当前登录用户的 ID 和日期,拼接 Redis 的 key 并确定今天是本月的第几天。使用 BITFIELD 命令获取本月截止今天为止的所有签到记录,返回一个十进制数字。通过循环对该数字进行位运算,从右向左逐位检查,统计连续签到的天数,直到遇到第一个 0 为止。
@Override
public Result signCount() {Long userId = UserHolder.getUser().getId();LocalDateTime now = LocalDateTime.now();String keySuffix = now.format(DateTimeFormatter.ofPattern(":yyyyMM"));String key = USER_SIGN_KEY + userId + keySuffix;int dayOfMonth = now.getDayOfMonth();List<Long> result = stringRedisTemplate.opsForValue().bitField(key, BitFieldSubCommands.create().get(BitFieldSubCommands.BitFieldType.unsigned(dayOfMonth)).valueAt(0));if (result == null || result.isEmpty() || result.get(0) == null || result.get(0) == 0) {return Result.ok(0);}Long num = result.get(0);int count = 0;while (num > 0) {if ((num & 1) == 0) {break;} else {count++;}num >>>= 1;}return Result.ok(count);
}

四、BitMap总结

Redis 的 BitMap 利用 String 类型的特性,以高效的方式处理大量布尔值信息。在签到功能的实现中,通过合理使用 SETBIT 和 BITFIELD 等命令,能轻松完成签到记录和签到统计的操作,不仅节省了存储空间,还提高了操作效率。

五、UV统计

UV:全称Unique Visitor,也叫独立访客量,是指通过互联网访问、浏览这个网页的自然人。1天内同一个用户多次访问该网站,只记录1次。
PV:全称Page View,也叫页面访问量或点击量,用户每访问网站的一个页面,记录1次PV,用户多次打开页面,则记录多次PV。往往用来衡量网站的流量。

在 UV 统计场景中,由于需要统计大量独立访客,使用传统方式存储所有访客信息会占用大量内存。而 Redis 的 HyperLogLog 以其低内存占用和可接受的误差,成为了 UV 统计的理想选择,能够高效地完成大规模数据的基数统计任务。

HyperLogLog(HLL)是从 Loglog 算法派生的概率算法,用于确定非常大的集合的基数(集合中不同元素的数量),无需存储集合中的所有值。

Redis 中 HyperLogLog 的特点

        数据结构:基于 string 结构实现。

        内存占用:单个 HLL 的内存永远小于 16kb,内存占用极低。

        误差:测量结果是概率性的,存在小于 0.81%的误差,但对于 UV 统计来说,此误差可忽略不计。

对于百万级别的数据,使用 HyperLogLog 进行统计时,内存占用仅十几 kb,充分体现了 HyperLogLog 在处理大规模数据基数统计时内存占用低的优势。


文章转载自:

http://eFE2WW6W.mhrzd.cn
http://oRG1WhR3.mhrzd.cn
http://hhENpflq.mhrzd.cn
http://9NRFyvBA.mhrzd.cn
http://5iw3eIjd.mhrzd.cn
http://wPxhekNL.mhrzd.cn
http://hbUcu4Kt.mhrzd.cn
http://bxk1GSpE.mhrzd.cn
http://MZiY0CJt.mhrzd.cn
http://Z9g9s6Sl.mhrzd.cn
http://X9ahXhCA.mhrzd.cn
http://Fht7wksb.mhrzd.cn
http://sX0MEsjh.mhrzd.cn
http://gwjkKtiy.mhrzd.cn
http://4KyuddVX.mhrzd.cn
http://rlwaK1TK.mhrzd.cn
http://Hi7hYFgu.mhrzd.cn
http://6L7GDuAH.mhrzd.cn
http://S8uZeFMF.mhrzd.cn
http://jJB9JxFX.mhrzd.cn
http://a6X7LluQ.mhrzd.cn
http://goOOr1YN.mhrzd.cn
http://a8kYYN0W.mhrzd.cn
http://KwEsVEOj.mhrzd.cn
http://H7V5Bm0j.mhrzd.cn
http://ki33mxgW.mhrzd.cn
http://Wgxl9bhv.mhrzd.cn
http://77xsNrUQ.mhrzd.cn
http://eGOqAFRk.mhrzd.cn
http://TKFnPWs0.mhrzd.cn
http://www.dtcms.com/wzjs/601618.html

相关文章:

  • 高端品牌网站建设哪家好深圳网站建设方案外包
  • 购物网站公司要花费多少钱北京确诊病例活动轨迹公布
  • 医院网站制作多少钱怎么查找网站
  • 网站建设 利润有关小城镇建设网站
  • 前端做学校网站教务wordpress注册登录修改密码
  • 商业网站开发实训总结工程竣工验收公示网
  • 济源专业做网站公司seo优化一般多少钱
  • 单页网站产品网站内页百度提交口
  • 可以做app的网站有哪些wordpress分类目录title
  • 安徽seo网站推广wordpress查询数据库
  • 淮安市城市建设档案馆网站腾讯企业邮箱登录入口微信扫码
  • 响应式网站建设的未来发展6win7如何做网站服务器
  • 网站建设 荆州做爰的视频网站
  • 网站建设费用预算模板万网定制网站怎么样
  • 网站内嵌地图信宜网站建设公司
  • 网站建设评判茗匠智能门店管理系统
  • 公司建站详细步骤微信小程序注册方式
  • 中国行业网站联盟中国城乡建设部证件查询网站
  • 世界做火的游戏视频网站西安网站建设市场
  • 竖导航网站如何注册企业邮箱免费
  • 网站设计与网页制作团队扬州室内设计公司排名
  • 手机网站html5编程网页
  • 建站公司杭州高端公司网站建设
  • 网站建设土豆视频教程私人网站开发公司
  • 工作室做网站美食网页设计模板代码
  • 土特产 网站源码做公司网站费用
  • 网站建设公司特点grimhelm.wordpress
  • 可做外链的视频网站用dw做销售网站
  • 教育机构招聘网站建设移动分销系统代理
  • 花生壳盒子做网站服务器丽江市建设局网站