关于聊天室在线列表使用redis存储的问题

发布于 2022-09-12 04:07:23 字数 558 浏览 19 评论 0

在做聊天室列表显示的时候,不知以下那种方案好:

方案一:直接使用集合,将上线用户进行存储其用户标示sessionId,取的时候,根据sessionId,再去redis取其详细内容,也就是使用集合+字符串的方案

方案二:使用哈希类型

B:$redis->hset('list',sessionId,json_encode($userInfo))

其实redis里我已经使用字符串类型存储过userInfo了

A: $redis->set(sessionId,json_encode($userInfo))

所以感觉使用方案二有点浪费

但是A里的$userInfo在实际业务中可能并不是很全,因为只是用来记录一些session信息的,如果想记录用户整条记录,使用方案二也就不存在浪费了

但即使存储整条信息,是否也可以进行集合+字符串的方式进行呢?

也就是集合存储用户标示,在使用字符串类型做用户信息的缓存,这里我的想法是,如果业务中有用到根据用户id查信息,那就使用方案一

如果没有的话,那直接将用户信息存储到哈希类型里。

想的有点多,不知大家对于此有何想法,望不吝赐教

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(1

夏天碎花小短裙 2022-09-19 04:07:23

放到redis里面数据,越少是越好的,因为内存成本要比硬盘成本高很多

如果不考虑成本问题,也是建议分开,一个 合集 存储 sessionid + uid,另外用uid为key存储用户信息

用户信息存储时,也不建议用hash来做,如果用户过多,hash表的工作效率也会下降

也可以将用户信息放到mysql里面,用户信息数据量不大的话,uid有索引,查询起来是很快的

建议不要将redis用作持久化存储的数据库,把每个对象都加上过期时间

如果数据量少,那是无所谓的

个人建议

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文