请教关于Redis缓存Java的List问题?

新手上路,请多包涵

假设我有个List<User>这样的list,我是直接把list序列化成字符串存进redis更好,还是存user的id集合List<String>然后取出来序列化之后再单个根据id取redis取更好?主要想问哪个效率会更高,还是具体会和多少条数据实体类的属性有关系?

阅读 4.4k
3 个回答

如果id取出来还是要走redis查询,那还是存放List<User>吧。存List<String>,然后再去持久化数据库查找会比较好,存List<User>会不会特别占内存

只看效率当然是直接序列化高啊...
用ID多一次网络IO

看数据量,如果你的List<User> 数据很多,那么得是个大对象,对于redis来说,再加上高QPS,那么redis网卡有影响了,而且如果你的redis部署,落在单个节点上的大对象,分布不均,而且对于单个User对象如果有修改,也是相当不便的,当然如果你没那么大数据,没那么高QPS,修改也很不频繁,直接存就好了。

我个人比较倾向于 存list的id集合,然后pipeline取所有User对象,总共2次IO。

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