优化前:数据结构 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);