美文网首页分布式架构&系统设计todo
5.redis缓存击穿、redis事务、删除策略、淘汰策略

5.redis缓存击穿、redis事务、删除策略、淘汰策略

作者: Junma_c631 | 来源:发表于2020-11-16 10:05 被阅读0次

1.缓存击穿是什么?当某个缓存失效后,多个线程同时访问,同时判断缓存是失效的,那就会多个线程都
访问数据库查询,并多次放入缓存,不但给数据库造成压力,多次访问缓存也给性能带来开销。缓存击穿问题可以
通过加分布式锁得到解决。
2.redis事务
a.开启事务 multi
b.set k1 v1 set k2 v2 这些都会放入到一个QUEUED队列中提交事务后,按顺序执行。
c.exec :执行,提交事务。
d. discard :取消事务。
e.开启事务后执行命令如果有语法错误,在提交事务exec时,全部不会设置时成功。


image.png

f.语法没报错,编译通过了但是执行的时候有部分错误,这时候执行成功的就成功,执行不成功的就不成功。


image.png

3.redis的watch机制 必须是开启事务之前对某个key进行监控,当执行exec提交事务时,如果其他的客户端对这个key改动过了,那么这个key就会失效。

4.redis发布订阅模式 taibai(相当于是个通道)
订阅消息> subscribe taibai
发布消息> publish taibai "aaaaa"
通配符订阅> psubcribe taibai*
发布消息> publish taibai1 "aaaaa"
发布消息> publish taibai2 "aaaaa"

5.删除策略
setex taibai 5 12213 //设置太白的值12213,5秒钟后过期,默认情况下过期后redis里面其实有可能没有被删除,过期后 get taibai 时才确定被删除
定时删除---以CPU时间换redis内存


image.png

惰性删除-----》已redis时间换cpu空间
get时判断超时,超时才删除

定期删除


image.png

6.淘汰策略 当服务器内存达到最大值时,删除哪些键值对,这个就是淘汰策略。
a.逐出算法

maxmemory: 最大可使用内存,占用物理内存的比例,默认值为0,,表示不限制。生产环境一般根据需求设置,通常50%以上
maxmemory-policy: 达到最大内存后,对挑选出来的数据进行删除策略
#1)volatile-lru:从已设置过期时间的数据集(server.db[i].expires)中挑选最长时间没有被使用的数据,淘汰
#2)allkeys-lru:从数据集(server.db[i].dict)中挑选最长时间没有被使用的数据淘汰
#3)volatile-ttl:从已设置过期时间的数据集(server.db[i].expires)中挑选将要过期的数据淘汰
#4)volatile-lfu:从已设置过期时间的数据集(server.db[i].expires)中挑选最近使用次数最少的数据淘汰
#5)allkeys-lfu:从数据集(server.db[i].dict)中挑选最近使用次数最少的数据淘汰
#6)volatile-random:从已设置过期时间的数据集(server.db[i].expires)中随机选择数据淘汰
#7)allkeys-random:从数据集(server.db[i].dict)中随机选择数据淘汰
#8)noeviction(不驱逐),禁止驱逐数据,直接返回报错。
maxmemory-samples: 每次选取待删除数据的个数,选取数据时并不会全库扫描,采用随机获取数据的方式作为待检测删除数据

相关文章

  • 5.redis缓存击穿、redis事务、删除策略、淘汰策略

    1.缓存击穿是什么?当某个缓存失效后,多个线程同时访问,同时判断缓存是失效的,那就会多个线程都访问数据库查询,并多...

  • Redis追命连环问,你能回答到第几问?(下)

    上次的Redis连环问问到了Redis是什么,Redis支持的数据类型,缓存雪崩缓存穿透缓存击穿,内存淘汰策略和持...

  • Redis的缓存淘汰策略LRU与LFU

    前言 Redis缓存淘汰策略与Redis键的过期删除策略并不完全相同,前者是在Redis内存使用超过一定值的时候(...

  • Redis过期键删除策略和淘汰机制

    前言 Redis缓存淘汰策略与Redis键的过期删除策略并不完全相同,前者是在Redis内存使用超过一定值的时候(...

  • Redis几种常见问题

    1.Redis的过期策略以及内存淘汰机制 Redis采用的是定期删除+惰性删除策略+内存淘汰机制。 定期删除,Re...

  • [缓存系列] redis那点事

    本文,你将阅读到以下内容: 如何应对缓存击穿和缓存雪崩的问题; Redis 的过期策略以及内存淘汰机制; 1.如何...

  • redis_内存淘汰策略

    redis_内存淘汰策略 介绍 Redis的内存淘汰策略是指在Redis的用于缓存的内存不足时,怎么处理需要新写入...

  • redis过期和淘汰策略

    缓存有效期和淘汰策略 Redis的数据已经设置了TTL,不是过期就已经删除了吗?为什么还存在所谓的淘汰策略呢?这个...

  • redis基础&spark操作redis

    Redis内存淘汰策略 将Redis用作缓存时,如果内存空间用满,就会自动驱逐老的数据。 为什么要使用内存淘汰策略...

  • PHP面试题 之 redis

    Redis的缓存策略和主键失效机制 作为缓存系统都要定期清理无效数据,就需要一个主键失效和淘汰策略。 在Redis...

网友评论

    本文标题:5.redis缓存击穿、redis事务、删除策略、淘汰策略

    本文链接:https://www.haomeiwen.com/subject/oenibktx.html