redis
文章平均质量分 87
黄泥川水猴子
焦虑没有用,得学习
展开
-
什么是缓存雪崩、缓存击穿、缓存穿透?
缓存雪崩什么是缓存雪崩?当某一个时刻出现大规模的缓存失效的情况,那么就会导致大量的请求直接打在数据库上面,导致数据库压力巨大,如果在高并发的情况下,可能瞬间就会导致数据库宕机。这时候如果运维马上又重启数据库,马上又会有新的流量把数据库打死。这就是缓存雪崩。分析:造成缓存雪崩的关键在于在同一时间大规模的key失效。为什么会出现这个问题呢,有几种可能,第一种可能是Redis宕机,第二种可能是采用了相同的过期时间。搞清楚原因之后,那么有什么解决方案呢?解决方案:在原有的失效时间上加上一个随机值,比如原创 2022-05-25 11:36:18 · 134 阅读 · 0 评论 -
Redis持久化
Redis 的持久化策略有两种:RDB:快照形式是直接把内存中的数据保存到一个 dump 的文件中,定时保存,保存策略。AOF:把所有的对 Redis 的服务器进行修改的命令都存到一个文件里,命令的集合。Redis 默认是快照 RDB 的持久化方式。当 Redis 重启的时候,它会优先使用 AOF 文件来还原数据集,因为 AOF 文件保存的数据集通常比 RDB 文件所保存的数据集更完整。你甚至可以关闭持久化功能,让数据只在服务器运行时存。RDB持久化RDB持久化是将当前进程中的数据生成快照保存到硬原创 2022-05-23 13:59:50 · 158 阅读 · 0 评论 -
Redis 过期删除策略和内存淘汰策略
Redis的内存回收机制和内存过期淘汰策略Redis的内存回收主要围绕以下两个方面:1.Redis过期策略删除过期时间的key值2.Redis淘汰策略内存使用到达maxmemory上限时触发内存淘汰数据Redis的过期策略和内存淘汰策略不是一件事,实际研发中不要弄混淆了,下面会完整的介绍两者。Redis过期策略过期策略通常有以下三种:1.定时过期每个设置过期时间的key都需要创建一个定时器,到过期时间就会立即清除。该策略可以立即清除过期的数据,对内存很友好;但是会占用大量的CPU资源去处原创 2022-05-23 11:25:15 · 393 阅读 · 0 评论 -
Redis 是单线程还是多线程
Redis 是单线程还是多线程我们平时看到介绍 Redis 的文章,都会说 Redis 是单线程的。但是我们学习的时候,比如 Redis 的 bgsave 命令,它的作用是在后台异步保存当前数据库的数据到磁盘,那既然是异步了,肯定是由别的线程去完成的,这怎么还能说 Redis 是单线程的呢?其实通常说的 Redis 是单线程,主要是指 Redis 对外提供键值存储服务的主要流程,即网络 IO 和键值对读写是由⼀个线程来完成的。除此外 Redis 的其他功能,比如持久化、 异步删除、集群数据同步等,是由额原创 2022-05-20 14:10:07 · 3228 阅读 · 0 评论 -
字符串对象的底层存储结构-简单动态字符串(Simple dynamic string)简称SDS
字符串对象Redis是使用C语言进行编写的,而C语言中的字符串是二进制不安全的,所以Redis就没有直接使用C语言的字符串,而是自己编写了一个新的数据结构来表示字符串,这种数据结构称之为:简单动态字符串(Simple dynamic string),简称SDS。为什么Redis的字符串对象是二进制安全的在C语言中,字符串采用的是一个char数组(柔性数组)来存储字符串,而且字符串必须要以一个空字符串’\0’来结尾。字符串并不记录长度,所以如果想要获取一个字符串的长度就必须遍历整个字符串,直到遇到’\0原创 2022-05-20 10:41:24 · 226 阅读 · 0 评论