![](https://img-blog.csdnimg.cn/20210125041610102.png?x-oss-process=image/resize,m_fixed,h_224,w_224)
Redis缓存
文章平均质量分 93
Redis缓存
张维鹏
这个作者很懒,什么都没留下…
展开
-
Redis为什么这么快?Redis的线程模型与Redis多线程
一、Redis有多快?Redis是基于内存运行的高性能 K-V 数据库,官方提供的测试报告是单机可以支持约10w/s的QPS二、Redis为什么这么快:(1)完全基于内存,数据存在内存中,绝大部分请求是纯粹的内存操作,非常快速,跟传统的磁盘文件数据存储相比,避免了通过磁盘IO读取到内存这部分的开销。(2)数据结构简单,对数据操作也简单。Redis中的数据结构是专门进行设计的,每种数据结构都有一种或多种数据结构来支持。Redis正是依赖这些灵活的数据结构,来提升读取和写入的性能。.原创 2021-02-01 03:06:08 · 26739 阅读 · 8 评论 -
Redis的五种数据结构的底层实现原理
Redis的五种数据结构的底层实现原理:1、String底层实现方式:动态字符串sds 或者 long;2、Hash底层实现方式:压缩列表ziplist 或者 字典dict;3、List在Redis3.2之前的底层实现方式:压缩列表ziplist 或者 双向循环链表linkedlist;4、List在Redis3.2及之后的底层实现方式:quicklist5、Set底层实现方式:有序整数集合intset 或者 字典dict6、Sorted set底层实现方式:压缩列表ziplist 或者zset原创 2021-01-31 02:49:22 · 33389 阅读 · 7 评论 -
Redis的数据过期清除策略 与 内存淘汰策略
在使用Redis时,我们一般会为Redis的缓存空间设置一个大小,不会让数据无限制地放入Redis缓存中。可以使用下面命令来设定缓存的大小,比如设置为4GB:CONFIG SET maxmemory 4gb既然 Redis 设置了缓存的容量大小,那么缓存被写满是不可避免的。我们需要面对缓存写满时的替换操作。缓存替换需要解决两个问题:决定淘汰哪些数据,如何处理那些被淘汰的数据。一、Redis有哪些淘汰策略Redis共提供了8中缓存淘汰策略,其中 volatile-lfu 和 allk.原创 2021-01-30 16:01:34 · 28473 阅读 · 1 评论 -
Redis的缓存雪崩、缓存击穿、缓存穿透与缓存预热、缓存降级
一、缓存雪崩:1、什么是缓存雪崩:如果缓在某一个时刻出现大规模的key失效,那么就会导致大量的请求打在了数据库上面,导致数据库压力巨大,如果在高并发的情况下,可能瞬间就会导致数据库宕机。这时候如果运维马上又重启数据库,马上又会有新的流量把数据库打死。这就是缓存雪崩。2、问题分析:造成缓存雪崩的关键在于同一时间的大规模的key失效,为什么会出现这个问题,主要有两种可能:第一种是Redis宕机,第二种可能就是采用了相同的过期时间。搞清楚原因之后,那么有什么解决方案呢?3、解决方案:(1)原创 2021-01-31 17:52:39 · 27765 阅读 · 18 评论 -
Redis的事务机制
一、Redis事务的相关命令:1、MULTI:用于标记事务块的开启。MULTI执行之后,Redis会将后续的命令逐个放到一个缓存队列中,当EXEC命令被调用时,所有队列中的命令才会被原子化执行。2、EXEC:在一个事务中执行所有先前放入队列的命令,然后恢复正常的连接状态。当使用WATCH命令时,只有当受监控的键没有被修改时,EXEC命令才会执行事务中的命令。3、DISCARD:放弃事务,清除事务队列中的命令,然后恢复正常的连接状态。如果使用了UNWATCH命令,那么DISCARD命令原创 2021-01-31 02:38:16 · 15360 阅读 · 3 评论 -
Redis的持久化机制
Redis是一个基于内存的数据库,所有的数据都存放在内存中,如果突然宕机,数据就会全部丢失,因此必须有一种机制来保证 Redis 的数据不会因为故障而丢失,这种机制就是 Redis 的持久化机制。Redis的持久化机制有两种,第一种是RDB快照,第二种是AOF日志。RDB快照是一次全量备份,AOF是连续的增量备份。快照是内存数据的二进制序列化形式,在存储上非常紧凑,而 AOF 日志记录的是内存数据修改的指令记录文本。一、RDB机制:RDB快照就是把数据以快照的形式保存在磁盘上,是某个..原创 2021-01-17 02:01:11 · 16182 阅读 · 4 评论 -
Redis主从复制原理
一、为什么需要主从复制:1、单台Redis节点的局限性:(1)单节点的Redis能够支撑QPS大概在5万左右,如果上千万的用户访问,Redis就承载不了,成为了高并发的瓶颈。(2)内存上,单个Redis的内存不宜过大,内存过大会导致主从同步时全量同步时间过长,而且在实例重启恢复时也会消耗很长的数据加载时间,一般控制在10G以内即可。(2)CPU 的利用率上,单个 Redis 实例只能利用单个核心,这单个核心在面临海量数据的存取和管理工作时压力会非常大。四、Redis主从复..原创 2021-01-10 23:26:24 · 31423 阅读 · 1 评论 -
Redis哨兵机制原理详解
哨兵模式:(心跳检测机制)前面说到主从模式其实是一种数据的备份方式,如果master宕机了,需要手动切换,并且还要切换客户端的连接数据源。这就无法达到高可用。哨兵模式就可以解决这一问题。哨兵是特殊的redis服务,不提供读写服务,主要用来监控redis实例节点。 哨兵架构下client端第一次从哨兵找出redis的主节点,后续就直接访问redis的主节点,不会每次都通过sentinel代理访问redis的主节点,当redis的主节点发生变化,哨兵会第一时间感知到,并且哨兵会早主从模式的从节点..原创 2021-01-15 23:53:31 · 29187 阅读 · 8 评论 -
Redis集群原理详解
一、redis cluster 介绍:1、单实例的Redis架构:最开始的一主N从加上读写分离,Redis作为缓存单实例貌似也还不错,并且有Sentinel哨兵机制,可以实现主从故障迁移。单实例Redis本质上只有一台Master作为存储,就算机器为128GB的内存,一般建议使用率也不要超过70%-80%,所以最多使用100GB数据就已经很多了,实际中50%就不错了,因为数据量太大也会降低服务的稳定性,而且数据量太大意味着持久化成本高,可能严重阻塞服务,甚至最终切主。所以,单实例还存在以下几原创 2021-02-16 00:13:04 · 54683 阅读 · 20 评论 -
Redis的分布式锁详解
1、什么是分布式锁:为了防止分布式系统中的多个进程之间相互干扰,我们需要一种分布式协调技术来对这些进程进行调度。而这个分布式协调技术的核心就是来实现这个分布式锁。2、分布式锁应该具备哪些条件在分布式系统环境下,一个方法在同一时间只能被一个机器的一个线程执行 高可用的获取锁与释放锁 高性能的获取锁与释放锁 具备可重入特性(可理解为重新进入,由多于一个任务并发使用,而不必担心数据错误) 具备锁失效机制,防止死锁 具备非阻塞锁特性,即没有获取到锁将直接返回获取锁失败分布式锁的实.原创 2021-01-25 00:02:16 · 94056 阅读 · 20 评论 -
Redis缓存与数据库双写一致性
保证缓存和数据库的一致性主要有两个方面的考虑:1、读数据时,先读取缓存,如果换成不存在,则读取数据库,再将结果保存在缓存中2、更新数据时,主要有以下几种策略:(1)先更新数据库,再更新缓存(2)先删除缓存,再更新数据库,休眠一段时间,再删除缓存(3)先更新数据库,再删除缓存转载 2019-03-02 21:18:13 · 14334 阅读 · 5 评论