我有一个新闻网站,我想创建流行的帖子之间的7天之间的用户访问的基础上。
我使用Redis::incrby()创建了计数机制,前缀为:
Redis::incrby( 'news:popular:count:' . $news_id . ':' . \Carbon\Carbon::now()->format('d-m-Y'), 1 );
但问题是,我不知道如何使用GET
检索它并对值进行排序。
所以我希望得到基于用户数量的热门帖子。
有没有办法做到这一点,并获得热门帖子?或者有没有更好的方法来做到这一点?
发布于 2019-08-08 16:59:04
我已经找到了我自己的解决方案,我将在这里发布它,所以如果其他用户面临类似的问题,你可以使用这个解决方案。
首先,我们使用通配符通过Redis::keys
检索密钥,以获得包含post计数的密钥列表:
$popular = Redis::keys('news:popular:count:*');
然后我们创建一个空数组来存储计数数据:
$get_count = [];
之后,我们使用foreach来分解并获得news_id,然后获得帖子计数
foreach ($popular as $key => $res) {
// Get news_id
$news_id = explode( ":", $res );
// Get count each post
$get_count[ $news_id[3] ] = Redis::get( $res );
}
然后使用arsort()
方法从高到低对数组结果进行排序
// Sort news count from high to low
arsort( $get_count );
就是这样,我面临的最困难的部分已经解决了。如果你有,也许你可以分享一个更好的答案。
https://stackoverflow.com/questions/57414954
复制相似问题