redis它只是做到了: 它认为的原子性。(单个命令原子,多条命令不一定原子) 隔离性。(单线程执行,各事务串行执行,天然满足隔离) AOF/RDB保证了部分的持久性。(持久化的时候可能存在数据丢失) 它不存在ACID中的C的概念,因为它...

使用 set key value ex/px 秒/毫秒 xx/nx 的命令实现分布式锁,存在多个client端加锁成功的极端情况。Redisson使用RedLock可以避免这个问题,其原理是多锁,例如对多个哨兵集群加不同的锁,只有超半数以上...

主从复制虽然实现数据冗余(是持久化之外的一种数据冗余方式)、故障恢复(手动切换)、读负载均衡等问题。但无法自动故障转移、写操作无法负载均衡、存储能力受到单机的限制。 1. 主从复制概述 主从复制,是指将一台Redis服务器的数据,复制到其他...

redis 分布式锁,其实需要自己不断去尝试获取锁,比较消耗性能。 zk 分布式锁,获取不到锁,注册个监听器即可,不需要不断主动尝试获取锁,性能开销较小。 另外一点就是,如果是 Redis 获取锁的那个客户端 出现 bug 挂了,那么只...

使用 set key value ex/px 秒/毫秒 xx/nx 的命令实现分布式锁,存在多个client端加锁成功的极端情况。Redisson使用RedLock可以避免这个问题,其原理是多锁,例如对多个哨兵集群加不同的锁,只有超半数以上...

字符串: SDS list: 元素少且小 👉🏿 ziplist , 元素多且大 👉🏿 双链表 hash: 元素少且小 👉🏿 ziplist , 元素多且大 👉🏿 hashtable zset: 元素少且小 👉🏿 ziplist , 元素多且...

数据库与缓存双写可以有4种顺序: 更新缓存->更新db、更新db->更新缓存、删除缓存->更新db、更新db->删除缓存 前两种顺序有显著的缺陷: 后更新的数据源失败,因为无法将先更新的数据源回滚(redis)或者不知道该不该回滚(超时)...