Redis相关知识点整理

1、Redis 是用 C 语言写的,开源的高性能key-value非关系缓存数据库
2、支持存储类型string(字符串)、list(链表)、set(集合)、zset(有序集合)和 hash(哈希类型)
3、Redis 是单进程单线程的, redis 利用队列技术将并发访问变为串行访问, 消除了传统数据库串行控制的开销
3、使用 Redis 有哪些好处?
(1) 速度快,因为数据存在内存中,类似于HashMap,HashMap的优势就是查找和操作的时间复杂度都很低
(2)支持丰富数据类型,支持string,list,set,sorted set,hash
(3) 支持事务,操作都是原子性,所谓的原子性就是对数据的更改要么全部执行,要么全部不执行
4、Redis 的持久化机制是什么?各自的优缺点?
Redis 提供两种持久化机制 RDB(默认) 和 AOF 机制:

5、缓存穿透及解决方案
定义 :客户端请求的数据不仅在缓存没有查到,而且数据库中也没有;导致每次的请求的数据都能打到数据库中去,进行的无效的查询,不仅穿过了redis层也穿mysql层
场景 :恶意的请求数据、根本就不存在的值uuid,(-1,woshilaji)恶意值等
方案: 1. 把恶意的数据用另一个redis存储起来,当请求在redis未命中时可以再查询下无缓存数据的key值,假如数据库中有新值增加,可能会带来判断误差,
可以把恶意数据的key值设置的时间稍微短一些,根据实际的场景应用情况合理的设置缓存的失效时间
           2. 布隆过滤器
缓存击穿及解决方案
定义 :缓存击穿是指缓存中没有但数据库中有的数据(一般是值一个热点key缓存时间到期),这时由于并发用户特别多,同时读缓存没有数据,接着去数据库去取数据,引起数据库压力瞬间增大,造成过大压力
场景 :当一个key失效时,同时有大量并发请求到数据库,造成还没来得及缓存数据,都去数据库中查询数据了
方案:高并发的key时设置一个永不过期的key
使用redis的互斥锁,注意增加锁的默认失效时防止释放锁失败导致不能重置key值
接口限流 与熔断 ,降级 。重要的接口一定要做好限流策略,防止用户恶意刷接口,同时要降级准备,当接口中的某些 服务 不可用时候,进行熔断,
失败快速返回机制。
缓存雪崩及解决方案
定义 :缓存雪崩是指缓存中数据大批量到过期时间,而查询数据量巨大,引起数据库压力过大,和缓存击穿不同的是, 缓存击穿是同一个key,
           缓存雪崩不同key同时过期,很多数据都查不到从而查数据库。
场景 :网页首页的基本数据信息,同一时间设置缓存,几乎同一时间失效。
方案:可以把缓存数据的有效期进行随机化,防止出现同一时间大量数据过期现象发生。
         把一些数据可以设置永久不过期,当有改动时主动删除并且设置缓存数据


 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值