Redis

Redis

Redis是基于内存运行的高性能、支持数据持久化的key-value NoSql数据库,因为它基于内存运行,不需要读写磁盘,因此它读写速度非常快,被广泛用于缓存方向

主要缺点:数据库容量受到物理内存的限制,适用于较小数据量的高性能操作和运算

适用场景:会话缓存、全页缓存、队列、排行榜/计数器、发布/订阅

支持的数据类型

  • String:String类型数据的最大容量为512M,用于做一些复杂的计数功能的缓存
  •  List:双向链表,关注列表、粉丝列表、消息列表等,List有序,适用于一些时间轴相关的数据的存储
  • Set:全局去重,交集、并集、差集操作,计算共同喜好,全部喜好,独有喜好等
  • Hash:对象存储
  • SortedSet:排行榜、延时任务、范围查找,zset中设置score作为排序规则

过期策略

  • 定期删除:定时随机查看设置过期时间的数据,超时则删除,不全部查看是因为数据量太大,浪费CPU性能
  • 惰性删除:访问的数据已经过期,则删除

淘汰机制

  • allkeys-lru:针对所有键,删除最近最少使用的数据
  • volatile-lru:针对设置过期时间的键,删除最近最少使用的数据
  • allkeys-random:针对所有键,随机删除
  • volatile-random:针对设置过期时间的键,随机删除

持久化

RDB

  • 保存数据快照再持久化到磁盘,数据快照以压缩二进制形式保存
  • 指定时间间隔内将内存中的数据集快照写入磁盘
  • 恢复速度更快,效率更高,但是宕机会导致数据丢失,常用于冷备份和复制传输

AOF

  • 日志的方式完成持久化任务,日志记录所有的写操作,恢复时重新执行所有的写操作
  • Redis默认的持久化方式,可靠性更高一些,可以用于事实更新,但是恢复速率和执行速率会更慢一些

主从复制

  • Master以写为主,Slave以读为主
  • 有效减少单个机器的并发访问数量
  • Master到Slave的更新有延时

缓存穿透&缓存击穿&缓存雪崩

缓存穿透:访问服务器中一定不存在的key,导致服务器宕机

  • 解决:布隆过滤器,过滤请求;缓存中存储该key的value为空

缓存击穿:缓存中不存在但是服务器中存在的key,短时间大量并发访问,会导致数据库服务器宕机

  • 解决:互斥锁,一个线程访问,然后更新到缓存

缓存雪崩:大面积缓存失效,转而访问数据库,导致数据库宕机

  • 解决:集群缓存,主从+哨兵;本地缓存+限流;Redis持久化机制

分布式锁

  • 基于数据库表锁

  • 基于ZooKeeper

  • 基于Redis

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值