专注于WEB开发

不太推荐LS用HASH来存储点赞的数据. 因为没办法进行排序(如果需要的话. 我想一定需要)

目前 我们是这样处理的.

可以使用ZSET有序集合进行存储. 理论上说一个ZSET中, 10W以内的数量并无任何鸭梨. 也就是说一条微博点赞的人数再10W以内(这是不可能的).

= = = 20;$offset = ($page > 1) ? ($page – 1) * $pagesize : 0;$max = ($page * $pagesize) – 1;("t:$tid:liked");$uids = $redis->ZREVANGE("t:$tid:liked", 0, $total – 1, TRUE);("t:$tid:liked", $uid);("t:$tid:liked", $uid);("t:$tid:liked", $start_timestamp, $end_timestamp);//诸如此类的操作, 要比HASH强很多.

恩再PS一下!!!

如果需要用到NOSQL这样的数据库来存储类似微博的数据的话, 可以这样存储:).

$pipe = $redis->MULTI(Redis::PIPELINE);("t:scores", time(), $tid);$pipe->EXEC();= $reids->ZREVRANGE("t:scores", 0, 100);$pipe = $redis->MULTI(Redis::PIPELINE); => $value){$pipe->GET("t:$value");}$list = $pipe->EXEC();//$list就是你的数据啦

再再PS一下, 微博评论也是类似的存储方法. 只是需要约定$redis KEYS的名称. 比如:c:<评论ID> 怎么和微博数据关联起来可以这样:

t:$tid:comments:scores (ZSET timestmap 评论ID);

这样取数据的时候就用PIPELINE方便很多了.

最后啰嗦一句, NOSQL这种数据库的 KEY 一定要设置好.

,害怕攀登高峰的人,永远在山下徘徊。

专注于WEB开发

相关文章:

你感兴趣的文章:

标签云: