我有一个新闻网站,我想根据用户访问创建热门帖子,间隔为 7 天。
我使用带有前缀的 Redis::incrby() 创建了计数机制:
Redis::incrby( 'news:popular:count:' . $news_id . ':' . \Carbon\Carbon::now()->format('d-m-Y'), 1 );
但问题是,我不知道如何使用 GET
检索它并对值进行排序。
所以我希望根据用户数量获得热门帖子。
有什么方法可以实现并获得热门帖子吗?还是有更好的方法来做到这一点?
最佳答案
我找到了自己的解决方案并将其发布在这里,如果其他用户遇到与我类似的问题,您可以使用此解决方案。
首先,我们使用 Redis::keys
检索 key ,使用通配符获取包含帖子计数的 key 列表:
$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 );
就是这样,我面临的最困难的部分已经解决了。如果有的话,也许您可以分享更好的答案。
关于laravel - 从 redis 'incrby' 检索访问者计数并创建热门帖子,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57414954/