Redis
未读
Redis的事件驱动模型
网络处理模型 单线程网络处理模型 多线程网络处理模型 线程池网络处理模型 I/O多路复用网络处理模型 ==注意:==网络请求皆是从网卡到达用户程序的I/O请求 Redis 事件循环 在 Redis 中,底层就是使用 IO 多路复用处理网络请求。并且创建一个 EventLoop 对象专门处理事件。 E
Redis
未读
Redis中的多线程
参考: Redis 多线程网络模型全面揭秘 - 知乎 (zhihu.com) 引言 Redis 6.0 之前单线程指的是 Redis 只有一个线程干活么? 非也,Redis 在处理客户端的请求时,包括获取 (socket 读)、解析、执行、内容返回 (socket 写) 等都由一个顺序串行的主线程处
Redis
未读
Redis的持久化存储
Redis中的持久化策略 当出现Redis宕机时,我们需要做的是重启redis,尽快让他对外提供服务,缓存==全部无法命中==,在redis里根本找不到数据,这时候就会出现==缓存雪崩==的问题。所有的请求,都没有在Redis中命中,就会去MySQL数据库这种数据源头中找,一下子MySQL无法承受高
Redis
未读
缓存穿透、缓存击穿和缓存雪崩
缓存穿透 缓存穿透的概念很简单,用户想要查询一个数据,发现redis内存数据库没有,也就是缓存没有命中,于是向持久层数据库查询。发现也没有,于是本次查询失败。当用户很多的时候,缓存都没有命中,于是都去请求了持久层数据库。这会给持久层数据库造成很大的压力,这时候就相当于出现了缓存穿透。 1、解决方
Redis
未读
Redis的内存碎片问题
原文:Redis 内存碎片 什么是内存碎片? 你可以将内存碎片简单地理解为那些不可用的空闲内存。 举个例子:操作系统为你分配了 32 字节的连续内存空间,而你存储数据实际只需要使用 24 字节内存空间,那这多余出来的 8 字节内存空间如果后续没办法再被分配存储其他数据的话,就可以被称为内存碎片。
Redis
未读
Redis的IO模型
前言 我们都知道redis是单线程,Node.js、Nginx同样也是单线程,redis所有的数据都是基于单线程运算的,但是redis可以处理高并发。 Redis可以处理高并发的原因 1、基于多路复用(事件轮询)、非阻塞。 2、非阻塞IO:非阻塞IO在套接字对象上提供一个Non_Blocking选项
Redis
未读
Redis常见面试题
Redis和Memcache的区别 Redis拥有更多的数据结构 Redis相比Memcache来说,拥有更多的数据结构和支持更丰富的数据操作,通常在Memcache里,你需要将数据拿到客户端来进行类似的修改,在set进去。这就大大增加了网络IO的次数和体积,在Redis中,这些复杂的操作通常和一般
Redis
未读
Redis排队延迟问题:造成的原因及解决方案
slowlog 无法监控排队延时,他只能监控每条命令的执行时间,并将执行时间大于设置的阈值的命令保存起来。 持久化阻塞 原因 对于开启了持久化功能的 Redis 节点,需要排查是否是持久化导致的阻 塞。持久化引起主线程阻塞的操作主要有:fork 阻塞、AOF 刷盘阻塞。 fork 操作发生在 RDB
Redis
未读
Redis双写一致性解决方案
Redis双写一致性是指在更新数据库时同时更新缓存,以保持数据的一致性。这个问题在分布式系统中尤为重要,因为数据不一致会导致用户体验下降和数据错误。解决双写一致性问题通常有两种策略:追求强一致性和允许延迟一致性。 强一致性策略 延迟双删 在这种策略中,更新操作会先删除缓存,然后更新数据库,最后再次删