Redis的作用,数据类型,缓存穿透,击穿和雪崩,Redis的索引模式【杭州多测师_王sir】

发布时间 2023-07-20 09:47:45作者: 多测师_王sir

 

一、Redis的作用:
1.缓存数据,存在内存当中,效率非常高,比存储型数据快上千倍
2.计数器,比如用户访问了多少次,点赞数统计
3.可以限制 IP 的访问频率
4.可以设置失效时间,可以用来设置优惠券到期时间
5.任务队列:比如到货通知,内容更新
6.排行榜:redis 的有序集合类型非常适合处理榜单和排序
7.好友关系处理:redis 的集合类型可以处理交集并集,筛选共同好友,共同爱好之类的一些操作

二、Redis的基本数据类型:
string(字符串)
hash(哈希散列)
list(列表)
set(集合)
zset(sorted set:有序集合)

三、redis 的使用会遇到的问题:
1.缓存穿透
缓存穿透:指在redis缓存中不存在数据,这个时候只能去访问持久层数据库(MySQL,断电数据也不会消失),当用户很多时,缓存都没有命中就会造成很大压力
解决方案 :
1)布隆过滤器(对可能查询的数据先用hash存储)
2)缓存空对象:在没有的数据中存一个空,而这些空的对象会设置一个有效期

2.缓存击穿
缓存击穿:指在同一个时间内访问一个请求的请求数过多,而在这个时候缓存某个key失效了,这个时候就会冲向数据库照成缓存击穿
解决方案:
1)设置缓存永远不过期
2)加互斥锁,使用分布式锁,保证每个key只有一个线程去查询后端服务,而其他线程为等待状态。这种模式将压力转到了分布式锁上

3.缓存雪崩
缓存雪崩:在某个时间段,缓存集体过期、redis宕机
解决方案:给key的失效时间设置为随机时间,避免集体过期,双缓存,加互斥锁

四、redis的索引:
redis的索引模式基本是基于sorted set的,因sorted set有数值,数值就是索引,你可以根据它找到其他值。
Redis的索引模式有如下几种:
1.sorted set
2.字典排序
3.地理信息
4.文本查询
5.redis search
6.jredisearch