关于feed存储于redis(hash或list)中的一些疑问。

发布于 2022-08-28 11:14:19 字数 1327 浏览 34 评论 0

写在最先,可能提问得不是很好,至少意思应该表达清楚了,望各位指导。

因为业务需求,需要将feed数据表全部倒入redis中,做数据存储功能,于此带来了一系列的疑问和不解。

feed表中有以下数据:

$data = array(
        array("feed_id"=>1,"uid"=>1,"content"=>"xiaoxijilu"),
        array("feed_id"=>2,"uid"=>2,"content"=>"xiaoxijilu"),
        /*****以此类推还有很多****/
        );

若将feed在redis中做hash存储,如:hset feed:list feed_id data;
存储的时候代码为:

foreach($data as $k => $v){
   $redis->hset("feed:lists",$v["feed_id"],$v);
}

//x先别管hset 和 hmset的区别
此时的redis KEY为:feed:list 的HASH表中已存在很多数据,若需要筛选出我的动态也就是$uid = 1 的动态,如何做?
按照我的理解,如果真的需要做 $uid = 1 的动态这需要另外创建一个KEY为feed:$uid:list的HASH表?

如果真的按照我所想的进行操作,是否会造成数据冗余?

姑且第一条我们已经解决,那又会重复第一条的疑问, 若用户A($uid = 1),且有,B($uid = 2),C($uid = 3),D($uid = 4) 的好有(姑且目前考虑所有用户均和A已是相互的好友关系),此时的A POST一条新feed(feed_id = 100),那feed:list肯定需要add feed_id100的动态,此时B , C , D 如何收到A PUSH的动态?

我能想到的办法,就是按照第一条去解决,`B , C ,D` 分别有自己的`feed.list` 为 `feed:2:list` , `feed:3:list` , `feed:4:list`, A POST的同时主动PUSH  feed 到对方的list中。

那如果按照我的设想去解决,假设A 有 1W 或者更多的 好有,此时的主动PUSH性能如何解决? 

于此同时,如何解决 单方关注(单方好友)的情况?

同样,删除feed,如何解决? 


希望大神能提点!!!! 

感谢 

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

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

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。
列表为空,暂无数据
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文