redis学习记录,比较全

附上学习资料
在这里插入图片描述

是一个高性能的 key-value 数据库

key都是字符串,不同类型的数据结构的差异就在于 value的结构不一样

  • string 可以存放字符串,数字,二进制
  • set 无序的唯一的
  • list 存放多个字符串
  • hash 键值对结构
  • zsort 有序 分数

布隆过滤器
判断对象是否存在的数据结构
由大型的位数组和几个不一样的无偏 hash 函数组成

缓存雪崩
在这里插入图片描述

解决方法:
1、将缓存可以时间分散
2、使用锁或队列机制:使用锁或队列保证不会有大量线程一次性对数据库进行读写。该方法不适用于高并发情况。

缓存击穿:
在这里插入图片描述
解决方案:
1、预先设置热门数据:在 redis 高峰访问之前,把一些热门数据提前存入到 redis 里面,加大这些热门数据 key 的时长。
2、对于热点key设置永不过期。

缓存穿透:
在这里插入图片描述
解决方案:
1、缓存空对象
2、采用布隆过滤器

bitmap
geo
//
keys
o(n),一次性,没有limit
scan
游标分步,有limit(单次遍历的字典槽位数量)
管道 :增加存取效率
事务 multi exec discard 不满足原子性 只满足隔离性
watch 乐观锁 结合事务指令进行 当exec时发现变量改变了,执行失败

Aof(定期重写) rdb 区别

  • 增量数据/全量数据(两次持久化间的增量数据丢失)
  • 重放慢(重写)/重放快
  • 数据量大/数据量较小 数据集大的时候,比 rdb 启动效率低
  • 指令记录文本/二进制

在这里插入图片描述

过期策略

惰性策略:就是在客户端访问这个 key 的时候,redis 对 key 的过期时间进行检查,如果过期了就立即删除。
+
定时扫描策略
在这里插入图片描述

淘汰策略
内存达到最大值,处理机制
在这里插入图片描述

集群
单实例的内存和cpu受限 ,集群可扩容

  • codis 代理中间件 每个redis实例都会分到一部分槽位 1024 crc32
  • cluster 去中心化 16384 每个节点都有槽位信息 包括客户端 crc32 可以给每个主节点设置从节点 ,需要手动迁移
    在这里插入图片描述

sentinel 实现主从高可用 集群 主从切换

主从同步:
在这里插入图片描述
分布式锁:
1、setnx 与设置超时时间的原子性

2、删除自己拿到的锁,与删除锁时对比是不是自己拿到的锁与删除锁的原子性问题

3、续约问题 redission看门狗 。默认锁30秒,每隔10秒检查一下,如果客户端还持有锁key,那么就会不断的延长锁key的生存时间,默认每次续命又从30秒新开始

4、主从复制的问题
在这里插入图片描述
Redlock redission 也提供了解决方案
在这里插入图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值