当前位置: 首页 > 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://www.lryc.cn/news/586441.html

相关文章:

  • Agent 设计模式
  • 卫星通信终端天线的5种对星模式之二:DVB跟踪
  • Mamba架构的模型 (内容由deepseek辅助汇总)
  • 关于赛灵思的petalinux zynqmp.dtsi文件的理解
  • C++ Primer(第5版)- Chapter 7. Classes -001
  • Web学习笔记3
  • Windows环境下JS计时器精度差异揭秘
  • Qt:QCustomPlot类介绍
  • LangChain极速入门:用Python构建AI应用的新范式
  • zcbus使用数据抽取相当数据量实况
  • Scrapy爬虫中间件核心技术解析:定制化爬虫的神经中枢
  • CCS-MSPM0G3507-2-基础篇-定时器中断
  • 69 局部变量的空间分配
  • 通俗范畴论13 鸡与蛋的故事番外篇
  • C++类模板继承部分知识及测试代码
  • Golang操作MySQL json字段优雅写法
  • Hap包引用的Hsp报签名错误怎么解决
  • 【数据分析】03 - Matplotlib
  • LangChain 内存(Memory)
  • Java 大视界 -- Java 大数据机器学习模型在电商用户复购行为预测与客户关系维护中的应用(343)
  • C语言基础知识--动态内存管理
  • AD芯片(模数转换器)的有效位数(ENOB)
  • scrapy项目开发流程
  • C++中的容斥原理
  • Springboot aop面向切面编程
  • 虚拟商品交易维权指南:数字经济时代的消费者权益保护
  • Boost.Asio 中的定时器类 steady_timer
  • python如何把两张图片拼成一张
  • Gitee Push 失败 7 日谈:每天一个踩坑故事
  • Java中的方法传参机制