![](https://img-blog.csdnimg.cn/20201014180756923.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
Redis知识库
文章平均质量分 68
redis数据结构,持久化,缓存雪崩、击穿、穿透、主从复制,数据库缓存一致性
nju_ziqiang
这个作者很懒,什么都没留下…
展开
-
Redis的两种持久化机制
Redis是内存数据库,利用以下两种技术进行持久化。AOF(append only file)通过保存写操作到日志的持久化方式。一、为什么redis先执行写操作后,再将命令记录到AOF日志中?避免额外检查开销 不会阻塞当前写操作命令的执行 但是会存在两个风险:丢失风险(写操作后发生宕机,没来得及记录日志);记录日志不会阻塞当前写操作,但是可能阻塞写一个命令。二、Redis写入AOF的过程图片来自小林codingRedis 执行完写操作命令后,会将命令追加到 server原创 2022-05-09 20:06:13 · 332 阅读 · 0 评论 -
如何保证数据库和缓存一致性
由于引入了缓存,那么在数据更新的时候,既要更新数据库,又要更新缓存,那么应该如何更新,保证两者数据一致呢?1、先更新数据库,再更新缓存这样做会带来并发问题,比如请求A将数据库更新为1,请求B将数据库更新为2,请求B将缓存更改为2,请求A将缓存更改为1,此时数据库中为2,缓存中为1,导致不一致。但是如果我们业务对于缓存命中率要求很高的时候,可以采用这种方式,但是需要一些手段解决并发问题。在更新缓存前先加个分布式锁,保证同一时间只运行一个请求更新缓存,就会不会产生并发问题了,当然引入了锁后,对于原创 2022-05-12 21:19:11 · 387 阅读 · 0 评论 -
Redis数据结构
前言在Redis3.0中,数据结构包括6种:SDS(简单动态字符串),双向链表,压缩列表,哈希表,整数集合,跳表。而在最新的Redis版本中,包括以下6种:SDS(简单动态字符串),quicklist,listpack,哈希表,整数集合,跳表。以上综合起来是8种数据结构。SDS(简单动态字符串)SDS是Redis中String数据类型的底层数据结构未使用char[]数组的原因有以下三点:获取长度的时间复杂度是O(N); 利用/0作为字符串结尾,导致不能保存音频、视频等二进制原创 2022-05-07 20:56:44 · 421 阅读 · 2 评论 -
Redis之缓存雪崩、击穿、穿透
数据库的数据存储在磁盘中,而磁盘的读写速度很慢,为了提高数据访问的性能,采用内存数据库Redis作为缓存层,这样可以大大提高性能。一、缓存雪崩当大量缓存数据同时过期或者Redis故障宕机时,如果此时有大量用户请求,都无法在Redis中处理,于是全部请求都直接访问数据库,从而导致数据库压力剧增,严重导致数据库宕机。产生原因:大量数据同时过期;Redis故障宕机。解决方案:1、针对大量数据同时过期的解决方案均匀设置过期时间,避免将大量数据设置成同一过期时间,可以给过期时间加一个随机数原创 2022-05-10 11:47:49 · 167 阅读 · 1 评论 -
Redis的主从复制
共有三种模式:全量复制、基于长连接的命令传播、增量复制1、全量复制第一次同步采用全量复制,即将主服务器的所有数据同步给从服务器。第一次同步分为三个阶段:第一阶段是建立链接、协商同步; 第二阶段是主服务器同步数据给从服务器;为了保证主从服务器数据一致,将生成RDB文件过程中新的写操作命令记录到replication buffer缓冲区。 第三阶段是主服务器发送新的写操作命令给从服务器,将缓冲区的命令发送给从服务器。2、基于长连接的命令传播第一次同步后,主动服务器双方建立TCP连接,而原创 2022-05-11 16:14:01 · 201 阅读 · 0 评论