File tree Expand file tree Collapse file tree 1 file changed +8
-0
lines changed Expand file tree Collapse file tree 1 file changed +8
-0
lines changed Original file line number Diff line number Diff line change @@ -234,6 +234,14 @@ RPC/Web 框架
234
234
- redigo: 注意go的一个常用 redis 库如果查询不到 key 会返回 redis.ErrNil,需要和其他的 err 做区分。
235
235
- redis cluster 集群错误:有时候要实现 redis lua 原子操作,对于 redis cluster,操作的所有key必须在一个slot上(或者可以指定hash tag 落到同一个 slot),否则返回错误信息。
236
236
同理 redis cluster 下 mset/mget/pipeline 等都需要操作同一个 slot,腾讯云 redis 在 proxy 层给你实现了,可以直接批量操作。
237
+ - 缓存失效。如果新上线的代码修改了数据结构导致和已有缓存的数据结构不同,那么上线的代码必须设计好失效机制让老的缓存数据先失效,否则有严重的业务问题(如果缓存失效期比较短问题倒是不大):
238
+
239
+ - 上线期间灰度部署新老代码都在跑,老代码会读到新的缓存数据结构导致现有逻辑可能出问题(比如字段含义改变甚至不兼容的时候)
240
+ - 上线之后新代码读取还没失效的老的缓存数据,也可能会导致现有逻辑有问题(比如新加的字段读不到)
241
+ - 稳妥的开发和上线方式:
242
+
243
+ 1. 只新增字段,不要修改数据结构老字段或者改变其含义(类型、长度等)。 这样保证灰度期间老的代码逻辑不会影响
244
+ 2. 新上线代码判断获取的缓存有没有新字段,如果没有认为是过期缓存,删除对应的缓存数据并回源重建。这样保证新代码没有影响
237
245
238
246
参考:
239
247
You can’t perform that action at this time.
0 commit comments