Redis
未读
Redis的事件驱动模型
网络处理模型 单线程网络处理模型 多线程网络处理模型 线程池网络处理模型 I/O多路复用网络处理模型 ==注意:==网络请求皆是从网卡到达用户程序的I/O请求 Redis 事件循环 在 Redis 中,底层就是使用 IO 多路复用处理网络请求。并且创建一个 EventLoop 对象专门处理事件。 E
Redis
未读
Redis中的多线程
参考: Redis 多线程网络模型全面揭秘 - 知乎 (zhihu.com) 引言 Redis 6.0 之前单线程指的是 Redis 只有一个线程干活么? 非也,Redis 在处理客户端的请求时,包括获取 (socket 读)、解析、执行、内容返回 (socket 写) 等都由一个顺序串行的主线程处
Redisson
未读
Redisson有几种锁?使用场景是什么?
Redisson 提供了多种分布式锁实现,每种锁适用于不同的场景。以下是常见的锁类型及其适用场景的总结: 可重入锁(Reentrant Lock) 特点: 支持同一线程多次加锁(可重入)。 默认是非公平锁,但支持公平锁模式。 通过 lock() 和 unlock() 手动管理锁的获取与释放。 适用场
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