优化前:数据结构 string
优化后:数据结构 sorted set + string
性能 | redis 键名 |
---|---|
列表页专辑 id + sorted set | novel:hot_ids |
列表页专辑 id 对应的详情 + string | novel: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);