实战首选缓存策略,保证 Redis 和 MySQL 的一致性

(这里说的“首选”,是一般而言。根据具体情况,可能有更合适的方案。) 1 关于缓存的共识 想使用缓存,首先要达成以下共识: 缓存必须要有过期时间; 保证数据库跟缓存的最终一致性即可,不必追求强一致性。 尤其是第二点,这是一个 TradeOff。如果非得要求强一致性,就不要用缓存。 本文讨论的策略,只是保证最终一致性。 2 实战首选:旁路缓存策略(Cache-Aside) 进入正题。我在实际工作中,

Java 对象序列化踩坑经验

0 背景 有一个集群相关的 bug,在我名下挂了两三个月,今天终于解决掉了,居然跟对象序列化有关。问题简化之后的现象是:一个 Java 对象,存入 redis 后再取出来,丢失了 id 字段。 1 结论 对于需要序列化的类,一定要在继承层次的最顶层实现 Serializable 接口,否则父类的私有字段无法序列化。 2 实验研究 2.1 准备工作 我们创建两个类,一个是 Animal,另一个是 D

Redis 基本操作

Redis 简介 图形化管理工具:Redis Desktop Manager 用途:数据库、缓存和消息中间件 主要类型: 字符串(strings) 列表(lists) 集合(sets) "散列(hashes) 有序集合(sorted sets) (本文整理自慕课网教程,涵盖 redis 常用操作) Redis 安装和启动 brew install redis安装 redis。 安装完毕后: red