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