redis知识点整理

一、数据结构

string、list、hash、set、zset

二、管道

一次发送多个命令,节约往返时间

三、发布订阅

多个订阅,比如聊天,发布消息,订阅1用于实时展示,订阅2用户如kafka然后持久化mysql,订阅3存zset用于历史消息

四、穿透、击穿、雪崩

1、缓存穿透

缓存穿透:key对应的数据在数据源并不存在,每次针对此key的请求从缓存获取不到,请求都会到数据源,从而可能压垮数据源。
在这里插入图片描述

布隆过滤器可以使用redis的bitmap实现,多种hash算法标识

2、缓存击穿

缓存击穿:key对应的数据存在,但在redis中过期,此时若有大量并发请求过来,这些请求发现缓存过期一般都会从后端DB加载数据并回设到缓存,这个时候大并发的请求可能会瞬间把后端DB压垮。
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-aFknPXsN-1634102402867)(media/16330510918827/redis%E7%9B%B8%E5%85%B3-%E5%87%BB%E7%A9%BF-1.png)]

互斥锁:获取锁成功回源db,获取锁失败sleep后再尝试获取锁。

3、缓存雪崩

缓存雪崩:与缓存击穿的区别在于这里针对很多key缓存
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-GiM53p87-1634102402878)(media/16330510918827/redis%E7%9B%B8%E5%85%B3-%E9%9B%AA%E5%B4%A9.png)]

1、随机缓存的失效时间,治标不治本
2、加锁排队,体验较差
3、二级缓存,比如hbase等
4、缓存标识,缓存标识失效时间小于数据失效时间,标识没有就进队列,异步更新

五、相关策略

1、缓存删除策略

定时删除、惰性删除、主动删除

2、缓存淘汰策略

当内存不足时Redis会选择一些缓存元素进行删除
1、no-enviction:禁止驱逐数据,新写入操作会报错
2、volatile-lru:从已设置过期时间的数据集选择最近最少使用的数据淘汰
3、volatile-ttl:从已设置过期时间的数据集选择将要过期的数据淘汰
4、volatile-random:从已设置过期时间的数据集选择任意的数据淘汰
5、allkeys-lru:从数据集选择最近最少使用的数据淘汰
6、allkeys-random:从数据集选择任意的数据淘汰

3、集群策略

主从、sentinel、cluster

六、持久化

RDB:全量dump
AOF:采用日志形式记录每一次写操作,追加。

RDB原理

采用操作系统的api:fork()。fork()出来的进程共享其父类的内存数据。仅仅是共享fork()出子进程的那一刻的内存数据,后期主进程修改数据对子进程不可见,同理,子进程修改的数据对主进程也不可见。

七、主从数据同步原理

1、全量同步

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-xZgx8JSY-1634102402881)(media/16330510918827/redis%E7%9B%B8%E5%85%B3-%E4%B8%BB%E4%BB%8E%E5%A4%8D%E5%88%B6%EF%BC%88%E5%85%A8%E9%87%8F%EF%BC%89.png)]

2、断点重续

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-uvPTP66u-1634102402883)(media/16330510918827/redis%E7%9B%B8%E5%85%B3-%E4%B8%BB%E4%BB%8E%E5%A4%8D%E5%88%B6%EF%BC%88%E9%83%A8%E5%88%86%EF%BC%89.png)]

八、redis分片算法

hash算法 -> 一致性hash算法 -> redis cluster,hash slot算法

1、hash算法

hash值再对分片数取模,如果有一个master宕机,分片数发生变化,导致大量的key无法取到有效缓存,都穿透到数据库中。

2、一致性hash算法

计算缓存服务器的hash值,放到0~2的32次方的圆上,将key值计算hash值在0~2的32次方的圆上找到对应的值,然后顺时针找最近的缓存缓存服务器,这样只影响宕机的master上面的key,只有这些key才会穿透到数据库中,添加服务器的话,也只是影响添加的服务器的hash值逆时针到最近节点的key值。
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-SeBxoriD-1634102402891)(media/16330510918827/redis%E7%9B%B8%E5%85%B3-%E4%B8%80%E8%87%B4%E6%80%A7hash%E7%AE%97%E6%B3%95.png)]

3、hash slot算法

默认16384个槽,通过CRC16(key) % 16384得到槽位。key和槽是多对一,槽和缓存节点是多对一。
在这里插入图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值