关于用Redis保存分页查询的结果的一个问题。

比如用户访问,然后查询数据库第一页,->limit(1,10) ,然后保存进redis ,比如key取值 goods_1 , 然后第二页 ->limit(11,20) ,然后保存进redis ,取值 goods_2,第三页,以此类推 (存各个key的时间点或许不一样,比如用户10:00访问第一页,所以存redis的时间是10:00,然后 goods_2 或许是 10:02存的 ,过期时间都为1小时) 。 这时候,后台如果删了id 为 11的商品 ,然后 goods_2 这个key又到期了,然后用户查询,就会直接访问数据库,那么就是把 id 为 12-21 的商品访问出来 (这时goods_3还没到期) ,那么 goods_2 和 goods_3 就会有一个重复数据 (id 为 11 的数据) , 所以这种问题怎么解决 ???

阅读 1.8k
1 个回答

可以使用单独的 hash 或者 key 来保存产品的信息,然后删除产品的时候维护 hash 或者 key。

分页信息里面只存产品的 ID,然后取产品信息,因为产品无效导致的分页下缺失产品也是很常见的问题,可以不必太过在意。

也可以把全部 ID 放到一个 list 里面,然后用 offset + limit 的方式取分页数据,产品删除后就从 list 里面拿掉那个 ID

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题