分布式缓存redis相关概念

一.redis基本概念

1.redis支持的类型:String 各种List 各种Hash等等

2.redis:单线程模型,处理业务比较方便

二.为什么用缓存

高并发下的分布式缓存

  1. .如果客户端并发量,访问量比较大,后端服务器就要接收考验(Tomcat服务器以及mysql数据库), 如果数据库访问量到达一个瓶颈,客户端访问效率降低,访问速度变慢,用户体验不好, 想要解决这种弊端就需要添加缓存
  2. 加了缓存如何解决数据库瓶颈问题?
    可以把经常查询的数据(热点数据)存储在redis缓存中,当要去数据库中拿数据的时候,先去redis中找,如果redis中有,则直接返回,这时就不需要再去数据库中查询了,这样的话,redis就会阻挡一部分接触数据库mysql的请求
  3. 如果热点数据太多怎么办?(因为redis是一个内存数据库,内存很昂贵)
    可以采用多台数据库,这就相当于是redis集群了,也就是我们所说的分布式缓存.

三.redis集群有两个模式:

主从副本模式:
主从副本模式
切片模式:
切片规则a::key-value切片规则
a.1 缺点
a.1.1 不利于集群扩展
a.1.2 导致集群中的redis发生网络IO,进而不能对外提供数据服务)

key value切片规则
切片规则b::一致性Hash算法
b.1 优点
b.1.1 对集群扩展非常有利
b.1.2 不会出现泛洪问题
b.2 缺点
b.2.1 会出现数据倾斜问题(解决数据倾斜可以多虚拟几个服务器)

一致性hash算法

四.小记

1 什么是数据倾斜问题?
存储框架:大部分数据存储在少量的服务器上
计算框架:大部分数据由少量的服务器计算

2 什么是缓存穿透?
redis中没有需要查找的数据,需要直接去数据库查(缓存穿透不可怕,可怕的是大量的缓存穿透)

3 如何避免缓存穿透现象?
可以添加一个过滤器,如果请求(携带id)去redis中没有找到数据,首先经过过滤器,过滤器会保存mysql中所有的id号,每次查询都是通过id号查询,如何过滤器中有该id号,则去数据库中查询,如果没有,则将这条请求过滤掉. 随着mysql中数据量越来越大,过滤器会越来越大,会占用大量内存,请求效率也会降低,用户体验不好.

4 如何解决5.3中过滤器越来越大的问题?
可以用布隆算法来降低过滤器对内存的占用,布隆算法是通过错误率来换取空间的占用

5 布隆算法:(数据存在,实际情况不一定存在,数据不存在,那么实际情况一定不存在)
布隆算法

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值