redis
文章平均质量分 84
redis
LallanaLee
这个作者很懒,什么都没留下…
展开
-
redis内存淘汰算法,LRU,LFU
Redis缓存淘汰策略与Redis键的过期删除策略并不完全相同,前者是在Redis内存使用超过一定值的时候(一般这个值可以配置)使用的淘汰策略;而后者是通过定期删除+惰性删除两者结合的方式淘汰内存过期键的。这里参照官方文档的解释重新叙述一遍过期删除策略:当某个key被设置了过期时间之后,客户端每次对该key的访问(读写)都会事先检测该key是否过期,如果过期就直接删除;但有一些键只访问一次,因此需要主动删除,默认情况下redis每秒检测10次,检测的对象是所有设置了过期时间的键集合,每次从这个集合中随机检转载 2021-11-16 11:04:33 · 367 阅读 · 0 评论 -
redis集群(二)
redis单实例的缺点:(1)写并发:Redis单实例读写分离可以解决读操作的负载均衡,但对于写操作,仍然是全部落在了master节点上面,在海量数据高并发场景,一个节点写数据容易出现瓶颈,造成master节点的压力上升。(2)海量数据的存储压力:单实例Redis本质上只有一台Master作为存储,如果面对海量数据的存储,一台Redis的服务器就应付不过来了,而且数据量太大意味着持久化成本高,严重时可能会阻塞服务器,造成服务请求成功率下降,降低服务的稳定性。针对以上的问题,Redis集群转载 2021-04-13 16:42:58 · 99 阅读 · 0 评论 -
多级缓存
本地缓存(又叫进程内缓存)比较:多级缓存方案搭配示例值较小、热度集中、更新不频繁:Caffeine(JVM KV) - Redis(KV) - MySql(DB ROW) 值较大、热度集中、更新不频繁:Caffeine(JVM KV) - MySql(DB ROW) 值较小、热度分散、更新频繁:Redis(KV) - MySql(DB ROW) 值较大、热度分散:MySql(DB ROW) Cluster 基于模糊匹配:ElasticSearch(FS Invert...原创 2021-04-18 21:50:06 · 766 阅读 · 0 评论 -
Redis缓存和数据库的一致性(六)
一:读缓存缓存+数据库读写的模式,就是 -——读的时候,先读缓存,缓存没有的话,就读数据库,然后取出数据后放入缓存,同时返回响应。原因有二:(1)如果是一个数据库写多读少的业务场景求,采用这种方案就会导致,数据压根还没读到,缓存就被频繁的更新,浪费性能。(2)如果你写入数据库的值,并不是直接写入缓存的,而是要经过一系列复杂的计算再写入缓存。那么,每次写入数据库后,都再次计算写入缓存的值,无疑是浪费性能的。显然,删除缓存更为适合。所以采用lazy思想,用到的时候再去查。出现分歧..原创 2021-04-17 17:34:24 · 124 阅读 · 0 评论 -
Redis的缓存雪崩、缓存击穿、缓存穿透与缓存预热、缓存降级(五)
一、缓存雪崩:1、什么是缓存雪崩:如果缓在某一个时刻出现大规模的key失效,那么就会导致大量的请求打在了数据库上面,导致数据库压力巨大,如果在高并发的情况下,可能瞬间就会导致数据库宕机。这时候如果运维马上又重启数据库,马上又会有新的流量把数据库打死。这就是缓存雪崩。2、问题分析:造成缓存雪崩的关键在于同一时间的大规模的key失效,为什么会出现这个问题,主要有两种可能:第一种是Redis宕机,第二种可能就是采用了相同的过期时间。搞清楚原因之后,那么有什么解决方案呢?3、解决方案:(1)事转载 2021-04-16 19:27:34 · 158 阅读 · 0 评论 -
redis过期策略和内存淘汰策略(四)
过期策略我们在使用 redis 时,一般会设置一个过期时间,当然也有不设置过期时间的,也就是永久不过期。当我们设置了过期时间,redis 是如何判断是否过期,以及根据什么策略来进行删除的。Redis采用的是定期删除 + 懒惰删除策略。过期策略常用的有以下三种:定时删除含义:在设置 key 的过期时间的同时,为该 key 创建一个定时器,让定时器在 key 的过期时间来临时,对 key 进行删除 优点:保证内存被尽快释放 缺点:若过期 key 很多,删除这些 key 会占用很多的.原创 2021-04-16 16:24:32 · 244 阅读 · 0 评论 -
redis线程模型(三)
速度根据官方的 benchmark,通常来说,在一台普通硬件配置的 Linux 机器上跑单个 Redis 实例,处理简单命令(时间复杂度 O(N) 或者 O(log(N))),QPS 可以达到 8w+速度快的原因完全基于内存,绝大部分请求是纯粹的内存操作,非常快速。 数据结构简单,对数据操作也简单,如哈希表、跳表都有很高的性能。 采用单线程,避免了不必要的上下文切换和竞争条件,也不存在多进程或者多线程导致的切换而消耗 CPU,不用去考虑同步情况下的锁问题 使用I/O多路复用模型..原创 2021-04-14 11:07:24 · 108 阅读 · 1 评论 -
redis(一)
简介Redis是用C语言开发的一个开源的高性能,键值对(key-value)非关系型数据库。是一种NoSQL(not-only sql,泛指非关系型数据库)的数据库。使用场景 缓存(数据查询、短连接、新闻内容、商品内容等等) 聊天室的在线好友列表(用到list的数据结构) 任务队列。(秒杀、抢购、12306等等) 分布式锁 网站访问统计 数据过期处理(可以精确到毫秒) 分布式集群架构中的session分离 支持的...原创 2021-04-12 23:21:08 · 117 阅读 · 0 评论