-
项目中有遇到这个问题,跟MySQL中的数据不一致,研究一番发现这里面细节并不简单,特此记录一下。
写在前面
严格意义上任何非原子操作都不可能保证一致性,除非用阻塞读写实现强一致性
-
高可用基础---主从复制
Redis的复制功能是支持将多个数据库之间进行数据同步,主数据库可以进行读写操作。当主数据库数据发生改变时会自动同步到从数据库,从数据库一般是只读的,会接收
-
Redis XREADGROUP 读不到新消息时,先区分 >、数字 ID 与 BLOCK 的职责:前者选择组的新消息或当前消费者的 pending 历史,BLOCK 只控制等待时间。本文再用 XPENDING、XACK 和 XAUTOCLAIM 排查确认与故障接管。
-
Redis ZSet 适合按时间分拣延迟任务,但先用 ZRANGEBYSCORE 读取、再用 ZREM 删除会留下并发抢占窗口。本文从两个 worker 同时取到同一 job_id 的现场出发,说明如何用 Lua 把筛选与删除放进一次原子操作,并保留重复执行与故障恢复边界。
-
Redis EXPIRETIME 返回键的绝对过期 Unix 时间戳,适合核对 EXPIRE 与 PEXPIREAT 写入的最终时间。文章用 TTL、PEXPIRETIME 和服务器时间对照,排查秒毫秒混用、时钟偏差、无过期键和恢复后的判断错误。
-
在多线程环境中优化Redis性能可以通过以下策略:1.使用连接池管理,减少连接开销;2.采用命令批处理减少网络延迟;3.实施数据分片分担负载;4.避免阻塞操作;5.使用锁机制确保数据一致性;6.进行监控与调优以提升性能。
-
如何使用Redis和PowerShell开发分布式消息通信功能概述:在分布式系统中,消息通信是一个很重要的组件。它可以实现各个系统之间的实时信息传递和同步,提高系统的可靠性和性能。Redis是一个高性能的键值存储数据库,广泛应用于分布式系统中。而PowerShell是一种强大的脚本语言,在Windows平台上具有很高的易用性。本文将介绍如何使用Redis和P
-
特立独行是对的,融入圈子也是对的,重点是要想清楚自己向往怎样的生活,为此愿意付出怎样的代价。我们通常将 Redis 作为缓存使用,提高读取响应性能,一旦 Redis 宕机,内存中的数据全
-
zipmap优化hash
将一个对象存储在hash类型中会占用更少的内存,并且可以更方便的存取整个对象。省内存的原因是新建一个hash对象时开始是用zipmap来存储的。这个zipmap其实并不是hash table,但是zipm
-
Redis启动的时候,可以指定配置文件,如下:
/usr/local/redis/bin/redis-server /usr/local/redis/etc/redis.conf
Redis.conf文件内容详细说明:
# 默认redis不是以后台进程的方式启动,如果需要在后台运行,需
-
Redis AOF 重写时磁盘占用变大,通常不是数据瞬间翻倍,而是旧 AOF、新 base 文件和重写期间新增写入同时存在。本文用 Redis 7 多段 AOF 结构、INFO persistence、du 与 df 命令定位空间峰值,并给出生产容量检查清单。
-
Redis Cluster 返回 MOVED 或 ASK 时,客户端都需要重定向,但两者代表的槽位状态并不相同。本文用槽位迁移现场拆开路由缓存、ASKING、重试次数和故障排查边界,帮助判断哪些响应可以自动跟随、哪些情况应该先查集群状态。
-
INFOkeyspace无法反映淘汰情况,因其仅统计存活key数量,不区分已过期未删除或已被淘汰的key,且不记录evicted_keys等关键淘汰指标。
-
必须配合日期动态生成key,因Bitmap无时间维度,共用key会丢失日期信息且导致单key膨胀、RDB/AOF暴增、主从延迟;用户ID须映射为非负整数offset,避免直接强转;BITCOUNT偏高多因key未清理或offset错位;5000万DAU下Bitmap体积约6.25MB,但需防ID稀疏浪费内存。
-
Redis主从读写分离需客户端显式控制,服务端仅同步数据;可通过API探测节点角色、配置双连接池或使用Lettuce的ReadFrom.SLAVE_PREFERRED实现路由,同时须校验从节点只读模式、健康状态与复制延迟。