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

第十八天,7月12日,八股

1、redis中的特殊数据结构Bitmaps

类似一个大数组只存0或1,Bitmap 使用比特位(bit)来表示元素的状态,每个比特位只能是 0 或 1,因此非常适合于统计二值状态,如在线状态(0离线,1在线)、签到记录等,Bitmap 操作通常具有常数时间复杂度(O(1)),使得更新和查询操作非常快速

(1)setbit

(2)getbit

(3)bitcount 

场景:当日网站访问量(user visitor(uv))

假设用户id={2,4,5}访问

setbit  uv:2025:07:12   2 1;

setbit  uv:2025:07:12  4 1;

setbit  uv:2025:07:12   5 1;

注意:用集合或者key-value键值对存储,空间非常大【例如存值为id,long类型则64位,8字节】;Bitmap则 每个数组为1位(0或者1),1/8字节

假设有1亿用户,每天有5千万用户上线,存id(Long类型):集合=8字节*5千万(集合只需要记录在线用户)≈400M(每天);Bitmap=1/8字节*1亿(建立1亿的数组)≈12.5M(每天)

2、布隆过滤器与Bitmaps的关系

布隆过滤器:由一个二进制数组和一个Hash算法组成,判断一个元素是否在一个集合中

不在的一定不在,在的大概率在(hash冲突,优化方案:增大数组,增加hash函数)

解决缓存穿透(key不存在)

实现方法:

(1)自己通过hash和数组实现;

(2)Guava依赖包,可以无redis

 (3)redission.getBoolemFilter

3、HyperLogLog

大型网站的网页访客,HyperLogLog提够不精准的去重的方法,标准误差0.81%,HyperLogLog 的内存消耗固定为 12KB,无论集合中元素数量多大,都不会增加内存需求。

(1)pfadd :添加内容,如pfadd uv:2025:07:12 user1 user2 user3 user1

  (2)    pfcount:统计数量,如 pfcount uv:2025:07:12 返回3,因为有一个重复

(3)pfmerge:并集,将多个HyperLogLog合并成一个

原理:伯努利实验+极大似然估计方法+分桶优化

4、GEO的操作命令

实现地理位置信息

(1)添加内容: geoadd ditu 精度 维度 北京 精度 维度  上海

(2)获取坐标:geopos ditu  北京 上海

(3)计算两个城市之间的距离:geodist ditu 北京上海

(4)以给定的经纬度为中心, 返回键包含的位置元素当中, 与中心的距离不超过给定最大距离的所有位置元素。

georadius ditu  精度 维度  距离  withdist  withcoord

其中距离默认单位是米,withdist 返回位置元素时,距离也一并返回;withcoord位置元素的经纬度也返回

(5)georadiusbymember 根据指定的元素返回指定范围内定位置元素

GEORADIUSBYMEMBER   ditu  北京  100km

暂时完结,重新复习一下,然后更新一些网上面经题目


文章转载自:
http://biunique.wkuuf.cn
http://benmost.wkuuf.cn
http://banting.wkuuf.cn
http://batrachoid.wkuuf.cn
http://ariba.wkuuf.cn
http://aftertaste.wkuuf.cn
http://agave.wkuuf.cn
http://chiao.wkuuf.cn
http://bald.wkuuf.cn
http://adaptable.wkuuf.cn
http://agro.wkuuf.cn
http://anisogamete.wkuuf.cn
http://barbary.wkuuf.cn
http://aerialist.wkuuf.cn
http://cheat.wkuuf.cn
http://advised.wkuuf.cn
http://antipruritic.wkuuf.cn
http://bon.wkuuf.cn
http://chefdoeuvre.wkuuf.cn
http://bora.wkuuf.cn
http://cherup.wkuuf.cn
http://agressire.wkuuf.cn
http://catchweight.wkuuf.cn
http://baseplate.wkuuf.cn
http://autoalarm.wkuuf.cn
http://acciaccatura.wkuuf.cn
http://cairn.wkuuf.cn
http://bronchoconstriction.wkuuf.cn
http://affection.wkuuf.cn
http://alecto.wkuuf.cn
http://www.dtcms.com/a/276293.html

相关文章:

  • 【MySQL笔记】事务的ACID特性与隔离级别
  • 动态规划基本操作
  • AutoGen框架官方文档梳理-完整学习指南
  • Java中的方法传参机制
  • 【工程数学基础】条件极值与拉格朗日乘数法
  • uniapp弹出手机键盘,布局被顶飞,导致页面混乱问题
  • 使用包管理工具CocoaPods、SPM、Carthage的利弊与趋势
  • C#与FX5U进行Socket通信
  • 数据结构之并查集和LRUCache
  • OGC:开放地理空间联盟简介
  • YOLO家族内战!v5/v8/v10谁才是你的真命天子?(附保姆级选择指南)
  • SpringAI实现保存聊天记录到redis中
  • Softmax回归(多类逻辑回归)原理及完整代码示例实现
  • 如何查询服务器的操作系统
  • 算法题(173):枚举排列
  • Arduino 无线通信实战:使用 RadioHead实现 315MHz 433M模块数据传输
  • MS Azure Eventhub 发送 AD log 到cribl
  • 学习笔记 Datewhale MCP Server Task2
  • 免费用Claude code薅羊毛
  • 【模板】最长公共子序列 详细解析
  • FastGPT革命:下一代语言模型的极速进化
  • 集训Demo1
  • 史上最全 MySQL 锁详解:从理论到实战,一篇搞定所有锁机制
  • 接口和抽象方法示例
  • C语言基础知识--联合体
  • Mybatis的一级缓存与二级缓存
  • 电网失真下单相锁相环存在的问题
  • STM32第二十一天定时器TIM
  • docker搭建 与镜像加速器
  • LeetCode经典题解:3、无重复字符的最长子串