一:Redis的介绍
1 redis的概念和作用:是一个开源的,基于内存的数据结构存储系统(支持多种类型的数据结构),可以用作缓存,消息中间件和数据库。
2redis的应用场景:
2.1热点数据的缓存,
由于redis访问速度块、支持的数据类型比较丰富,所以redis很适合用来存储热点数据,另外结合expire,我们可以设置过期时间然后再进行缓存更新操作,这个功能最为常见,我们几乎所有的项目都有所运用。
2.2 限时业务的应用,比如淘宝秒杀,
使用expir命令设置一个键的生存时间,到时间后redis会删除它
2.3 计数器相关问题
redis由于incrby命令可以实现原子性的递增,所以可以运用于高并发的秒杀活动、分布式序列号的生成、具体业务还体现在比如限制一个手机号发多少条短信、一个接口一分钟限制多少请求、一个接口一天限制调用多少次等等。
3.4 排行榜相关问题,进行热点数据的排序,
关系型数据库在排行榜方面查询速度普遍偏慢,所以可以借助redis的SortedSet进行热点数据的排序。
2.5 点赞,好友相互关系的存储
在redis中用set存储,数据会自动去重,可以解决数据重复的问题
3,关于缓存的介绍
redis主要是用来解决数据缓存的问题,那么我们先介绍一下缓存的定义,作用和分类
3.1缓存主要遇到的问题分类和解决方案
3.1.1 缓存击穿:
场景:主要指高并发访问的热点数据没有存在缓存中胡哦这key刚好过期,造成key没有被命中,大量请求穿透到数据库服务器中
解决方案:延长热点数据的过期时间。使用互拆锁,同一时间只允许一条数据访问,访问完成之后在释放锁
3.1.2 缓存雪崩
场景:大量缓存在同一时间失效,或者缓存服务器宕机;大量请求落到后端DB上;
解决方案:设置不同的失效时间,尽量分布均匀,使用高可用的分布式缓存集群,确保缓存的高可用性;做二级缓存,A1为原始缓存,A2为拷贝缓存,A1失效时,可以访问A2。
3.1.3缓存穿透
场景:频繁访问一定不存在的key,造成数据库频繁被访问,流量大时db会挂掉
解决方案:布隆过滤器,在访问存储系统之前,先通过布隆过滤器把不存在的key屏蔽掉
访问key在数据库中没有的key可以将空值写在缓存中,设置较短的过期时间