关于redis:记一次Redis存储设计优化的线上问题

44次阅读

共计 547 个字符,预计需要花费 2 分钟才能阅读完成。

优化前:数据结构 string
优化后:数据结构 sorted set + string

性能 redis 键名
列表页专辑 id + sorted setnovel:hot_ids
列表页专辑 id 对应的详情 + stringnovel:hot_12345

问题场景:设置了 24 小时过期工夫,上线后没问题,第 2 天缓存过期后,列表页没有数据,页面空白。

起因:数据结构批改后,被动更新未革除 sorted set 缓存,导致只有列表页更新,id 永不过期, 但 string 24h 过期了,前台 sorted set 获取分页列表的 ids, 再依据 id 获取 string 中的详情时拿不到数据。
Redis::zAdd(“novel:hot_ids”, 12345);
Redis::setex(“novel:hot_12345”, 24*3600, json_encode(“a”=>1));
Redis::expire(“novel:hot_ids”, 24*3600);

解决方案:被动更新缓存前删除 redis key
Redis::del(“novel:hot_ids”);
Redis::setex(“novel:hot_12345”, 24*3600, json_encode(“a”=>1));
Redis::expire(“novel:hot_ids”, 24*3600);

正文完
 0