分享免费的编程资源和教程

网站首页 > 技术教程 正文

软件架构设计(五)-缓存 软件系统缓存

goqiw 2024-10-15 12:15:09 技术教程 21 ℃ 0 评论

分布式缓存:在高并发情况下,为了减轻数据库的压力和提高应用系统的性能,在应用系统和数据库之间加了一层缓存。

缓存和数据库的数据一致性问题:

  • 数据读取:
  1. 根据key先从缓存读取
  2. 若缓存中没有,则从数据库读取
  3. 读取数据后更新缓存
  • 数据插入:
  1. 根据key更新数据库
  2. 根据key更新缓存(或者更新缓存)

缓存技术对比【Memcache与Redis】

Redis分布式存储方案:

  1. 主从:一主多从,一个实例节点充当主节点,其余节点充当从节点,主节点负责写和读取数据,从节点负责从主节点复制数据实现数据冗余,并且只处理读操作。主节点出现故障时,需要手动切换主节点。
  2. 哨兵:引入监控和故障转移机制。当主节点发生故障时会主动选择新的主节点。
  3. 集群:分节点对等集群。不在依赖单个节点处理所有的读写操作,将数据分布到多个节点,每个主节点只负责部分数据的存储和处理。

Redis集群分片常见的方式:

  1. 客户端分片:客户端负责通过key的hash值对应到不同的服务器
  2. 中间件分片:客户端将请求发送到中间件,借助中间件实现Redis分片路由选择
  3. 客户端服务端协作分片:客户端采用一致性哈希,服务端提供错误节点的重定向服务

Redis数据分片的方案:

  1. 范围分片
  2. 哈希分片
  3. 一致性哈希分片

Redis数据类型:

Redis持久化:

Redis常见问题

  • 缓存雪崩:大部分缓存失效,大量请求访问数据库
  1. 加锁
  2. 为key设置不同的失效时间
  3. 二级缓存
  • 缓存穿透:访问不存在的值,直接查询数据库
  1. 数据库查询结果为空,可以设置一个默认值到缓存,并且设置一个有效期
  2. 布隆过滤器。将存在的数据哈希到一个足够大的bitmap中,一个一定不存在的值会被这个bitmap拦截掉,从而避免对底层存储系统的压力

布隆过滤器的优点:

  1. 数据查询效率高
  2. 占用内存小
  3. 不需要存储数据元素本身

布隆过滤器的缺点:

  1. 不能存储数据本身
  2. 具有一定的误判率
  3. 不能从布隆过滤器删除元素

Tags:

本文暂时没有评论,来添加一个吧(●'◡'●)

欢迎 发表评论:

最近发表
标签列表