缓存相关知识整理

2 minute

Redis

Redis 通信过程

TODO

Redis 单线程模型效率高的原因

  • 纯内存操作
  • 核心是基于非阻塞的 IO 多路复用机制
  • 单线程反而避免了多线程的频繁上下文切换问题,预防了多线程可能产生的竞争问题

Redis 多线程模型的引入

Redis 6.0 开始引入多线程,Redis 在有些方面,单线程已经不具有优势了。因为读写网络的 Read/Write 系统调用在 Redis 执行期间占用了大部分 CPU 时间,如果把网络读写做成多线程的方式对性能会有很大提升。

Redis 的多线程部分只是用来处理网络数据的读写和协议解析,执行命令仍然是单线程。

Mongo

布隆过滤器

布隆过滤器是一个很长的二进制向量和一系列随机映射函数,用于检索一个元素是否在一个集合中。

它的空间效率和查询时间都远远超过一般的算法,但是有一定的误判率 (函数返回 true , 意味着元素可能存在,函数返回 false ,元素必定不存在)。

布隆过滤器的四个核心属性:

  • k : 哈希函数个数
  • m : 位数组长度
  • n : 插入的元素个数
  • p : 误判率

布隆过滤器无法删除元素,但我们可以通过计数布隆过滤器和定时重新构建布隆过滤器两种方案实现删除元素的效果。

使用场景: