laravel - 从 redis 'incrby' 检索访问者计数并创建热门帖子

标签 laravel redis predis

我有一个新闻网站,我想根据用户访问创建热门帖子,间隔为 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/

相关文章:

redis - 如何在redis中设置用户名和密码?

php - 如何在php中使用predis删除所有缓存

redis - Predis集群槽手册集

php - 如何获取带有偏移量和限制的predis数据?

apache - 在子目录中设置几个 Laravel 5 项目

php - 按 created_at 排序 Eloquent 集合

php - 使用字符串获取模型

lua - 使用 Lua 脚本的 Redis 分布式事务

php - Laravel 5.6 - 如何使用同一文件夹 SPA 的 session 来验证 API?

redis - StackExchange.Redis 连接到多个数据库