redis知识总结

一.常用数据类型

String set zset list hash

二. redis 缓存穿透,雪崩,击穿
穿透: 访问数据库不存在的数据, 这类请求不会返回任何结果,但是会大量消耗数据库的资源
解决: 对于查询不到的key, 也放入缓存, 可以设置较短的过期时间,或者预先做好key的过滤规则

雪崩: 统一时间大量的key过期,导致同一时间大量的请求直接访问数据库,导致数据库崩溃
解决: 尽量分散key的过期时间

击穿: 某一个key的并发量很高的时候,这个key突然过期了,导致大量请求访问数据库
解决: 如果某一些key的访问量很大,可以把这类key的过期时间设置为永久

三. redis的删除策略
1.及时删除: key一旦过期,就从缓存中删除这个key,
优点: 不占多余的内存,
缺点: 如果cpu很忙的时候,也要立即删除key,对cpu不太友好.
2.惰性删除: key过期的时候不做任何处理,当下一次访问的时候,如果发现已经过期了,此时再删除
优点: 对cpu比较友好
缺点: 过期的key没有及时删除,会造成内存浪费
3.定期删除: 定期对expire 字典中的key 遍历,删除过期的key
这是对上面两种方案的这种,

四.redis架构
1.单机: 个人开发使用,不适合生产环境
2.主从: 扩展了redis读的能力,但是写的压力还是在一台master服务器上,没有实现高可用,如果主机宕机了,需要人为把从机设置为主机
3.哨兵+主从: 解放了人力,当主机宕机的时候,由哨兵推选新的主机,一定程度上增加了高可用行,但是写的能力并没有扩展
4.集群+哨兵: 及扩展读和写的能力,并且实现了高可用,适合分布式,
分为hash分区和顺序分区,
顺序分区: 首先算出key的hash值,然后对节点数量N取余,算出所属的节点
hash分区: 首先将0-2^32 的hash值围成一个圆,将节点均匀分布在上面, 当key访问的时候,先计算hash值,然后顺时针找到第一个节点,这就是这个key对应的节点服务器.

hash分区的优点: 改变节点个数很方便,只需要迁移少量的key即可,节点分区的方式,一旦节点数量发生变化,多有的key必须重新计算,并且移入到相应的新节点中去

五.redis 持久化
aof: 只记录用户的修改和新增操作,不记录具体数据
rdb: 按照设置的规则,保存缓存中的所有数据
save 900 1 900s内,如果有一次修改,那么就保存一次
哪些操作会触发redis持久化:
1. 触发规则
2. save(阻塞) 和 bgsave (非阻塞)
3. flushall
4. 复制操作(master–>slave 同步数据)

六. redis 分布式锁
使用while(jedis.setnx(key,key)){ Thead.sleep(10)} jedis.expire(key,300)
设置过期时间5分钟,防止程序异常,导致,一直占用锁

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值