Redis
雾岛风起时43
这个作者很懒,什么都没留下…
展开
-
Redis的数据过期策略
3.如果业务中有置顶的需求,可以使用volatile-lru策略,同时置顶数据不设置过期时间,这些数据就-一直不被删除,会淘汰其他设置过期时间的数据。如果业务有明显的冷热数据区分,建议使用。2.如果业务中数据访问频率差别不大,没有明显冷热数据区分,建议使用allkeys-random,随机选择淘汰。4.如果业务中有短时高频访问的数据,可以使用allkeys-lfu 或volatile-lfu策略。使用allkeys-lru(挑选最近最少使用的数据淘汰)淘汰策略,留下来的都是经常访问的热点数据。原创 2023-05-26 23:29:59 · 545 阅读 · 1 评论 -
Redis缓存持久化
RDB因为是二进制文件,在保存的时候体积也是比较小的,它恢复的比较快,但是它有可能会丢数据,我们通常在项目中也会使用AOF来恢复数据,虽然AOF恢复的速度慢-一些,但是它丢数据的。AOF的含义是追加文件,当redis操作写 命令的时候,都会存储这个文件中,当redis实 例宕机恢复数据的时候,会从这个文件中再次执行一遍命令来恢复数据。Redis处理的每一个写命令都会记录在AOF文件, 可以看做是命令日志文件。RDB是一个快照文件,它是把redis内存存储的数据写到磁盘上,当redis实 例宕机恢复数据的。原创 2023-05-26 23:24:41 · 129 阅读 · 0 评论 -
Redis双写一致
②利用canal中间件, 不需 要修改业务代码,伪装为mysq|的一个从节点, canal通过读取binlog数据更新缓存。②排他锁:独占锁writeLock也叫,加锁之后,阻塞其他线程读写操作。①共享锁:读锁readLock,加锁之后,其他线程可以共享读操作。①使用MQ中间中间件, 更新数据之后,通知缓存删除。强一致性的,采用Redisson提供的读写锁。●允许延时一 致的业务,采用异步通知。原创 2023-05-26 23:19:19 · 134 阅读 · 0 评论 -
Redis缓存雪崩及解决办法
1.缓存雪崩是指在同- -时段大量的缓存key同时失效或者Redis服务宕机,导致大量请求到。◆给缓存业务添加降级限流策略 降级可做为系统的保底策略, 适用于穿透、击穿、雪崩。穿透无中生有key,布隆过滤null隔离。◆利用Redis集群提高服务的可用性。缓存击穿过期key,锁与非期解难题。雪崩大量过期key,过期时间要随机。◆给不同的Key的TTL添加随机值。缓存必考三兄弟,可用限流来保底。达数据库,带来巨大压力。◆给业务添加多级缓存。原创 2023-05-26 22:31:32 · 1290 阅读 · 0 评论 -
Redis缓存击穿及解决问题
第一可以使用互斥锁:当缓存失效时,不立即去load db,先使用如Redis的setnx去设置一个互斥锁, 当操作成功返回时再进行load db的操作并回设缓存,否则重试get缓存的方法。Key有大量的并发请求过来,这些请求发现缓存过期- -般都会从后端DB加载数据并回设到缓存,这个时候大并发的请求可能会瞬间把DB压垮。①:在设置key的时候,设置一个过期时间字段一 块存 入缓存中,不给当前key设置过期时间。如果选择数据的强一致性,建议使用分布式锁的方案,性能上可能没那么高,锁需要等,也有可能。原创 2023-05-26 22:26:16 · 1653 阅读 · 0 评论 -
Redis缓存穿透及解决方法
可以使用的是redisson实现的布隆过滤器。它的底层主要是先去初始化一个比较大数组,里面存放的二进制0或1。在一开始都是0, 当一个key来了之后经过3次hash计算,模于数组长度找到数据的下标然后把数组中原来的0改为1,这样的话,三个数组的位置就能标明一个key的存在。当然是有缺点的,布隆过滤器有可能会产生一定的误判, 我们一-般可以设置这个误判率,大概不会超过5%,其实这个误判是必然存在的,要不就得增加数组的长度,其实已经算是很划分了,5%以内的误判率一般的项目也能接受,不至于高并发下压倒数据库。原创 2023-05-21 15:34:53 · 102 阅读 · 0 评论