- 博客(11)
- 收藏
- 关注
原创 I/O 模型全解析:从阻塞到异步的演进之路
1. 创建实例:调用 epoll_create,内核建 eventpoll 结构体,它有红黑树 rb_root 存监听 FD,链表 list_head 存就绪 FD。2. 添加监听:用 epoll_ctl,把 FD 等信息加到红黑树,设置回调,FD 就绪时回调会把它移到就绪链表。3. 等待就绪:通过 epoll_wait 检查就绪链表,有就绪 FD 就返回数量等信息,供程序处理。这样就结合红黑树和链表这些结构。
2025-08-10 03:51:48
1882
原创 RDB与AOF:解锁Redis数据持久化的两把钥匙
RDB和AOF各有自己的优缺点,如果对数据安全性要求较高,在实际开发中往往会结合两者来使用。RDBAOF持久化方式定时对整个内存做快照记录每一次执行的命令数据完整性不完整,两次备份之间会丢失相对完整,取决于刷盘策略文件大小会有压缩,文件体积小记录命令,文件体积很大宕机恢复速度很快慢数据恢复优先级低,因为数据完整性不如AOF高,因为数据完整性更高系统资源占用高,大量CPU和内存消耗低,主要是磁盘IO资源,但AOF重写时会占用大量CPU和内存资源使用场景。
2025-08-09 23:45:49
1842
原创 BitMap——统计用户签到
Redis 中是利用 string 类型数据结构实现 BitMap,因此最大上限是 512M,转换为 bit 则是 2^32 个 bit 位,每个位(bit)取值0或1。。本质是字符串,按位存储,极大节省空间,比如 100 万用户状态仅需约 125KB。有SETBIT(设定位值)、GETBIT(获取位值)、BITCOUNT(统计 1 的位数)、BITOP(位运算)等命令。用处像记录用户在线(1)/离线(0)状态,通过用户 ID 对应位偏移量操作。
2025-08-07 15:11:44
579
原创 Redis核心实战:消息队列与Feed流全解析
字面意思就是存放消息的队列。消息队列:存储和管理消息,也被称为消息代理(Message Broker)生产者:发送消息到消息队列消费者:从消息队列获取消息并处理消息流程:生产者判断秒杀时间和库存、校验一人一单后,发优惠券 id 等消息到队列,消费者接收消息完成下单。Redis 提供了三种不同的方式来实现消息队列:•基于 List 结构模拟消息队列基本的点对点消息模型比较完善的消息队列模型拉模式推模式推拉结合写比例低高中读比例高低中用户读取延迟高低低实现难度复杂。
2025-08-06 02:35:31
2023
原创 优化Redis分布式锁——Redisson
原有问题:基于 setnx 的 Redis 分布式锁存在不可重入、不可重试、超时释放、主从一致性问题。优化后:1、MultiLock 改善:不区分主从,将节点都视为独立个体。多节点加锁验证,应用向多节点发加锁请求,全成功才锁有效,解决主从一致性问题。业务执行中若锁快到期,通过“重置锁有效期”延长锁时长,保证业务在锁保护下完成,避免因锁过期释放引发并发风险,解决超时释放问题。
2025-08-05 16:48:53
914
原创 Redis应用之道:从登录管理到缓存
用户在提交手机号后,会校验手机号是否合法,如果不合法,则要求用户重新输入手机号如果手机号合法,后台此时生成对应的验证码,同时将验证码进行保存,然后再通过短信的方式将验证码发送给用户。用户将验证码和手机号进行输入,后台从session中拿到当前验证码,然后和用户输入的验证码进行校验,如果不一致,则无法通过校验,如果一致,则后台根据手机号查询用户,如果用户不存在,则为用户创建账号信息,保存到数据库,无论是否存在,都会将用户信息保存到session中,方便后续获得当前登录信息。
2025-08-04 03:16:37
907
原创 Redis基础
RedisTemplate可以接收任意Object作为值写入Redis,只不过写入前会把Object序列化为字节形式,默认是采用JDK序列化。可读性差内存占用较大因此,我们可以自定义RedisTemplate的序列化方式,代码如下@Bean// 创建RedisTemplate对象// 设置连接工厂// 创建JSON序列化工具// 设置Key的序列化// 设置Value的序列化// 返回。
2025-08-02 03:41:11
682
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人
RSS订阅
1