- android - RelativeLayout 背景可绘制重叠内容
- android - 如何链接 cpufeatures lib 以获取 native android 库?
- java - OnItemClickListener 不起作用,但 OnLongItemClickListener 在自定义 ListView 中起作用
- java - Android 文件转字符串
我有一个新闻网站,我想根据用户访问创建热门帖子,间隔为 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 中执行此操作: 对于给定的键 K,其可能的值 V 是 [A, B] 范围内的任何整数。基本上,它有上下边界。 当发出 INCRBY
我将对键值对使用 Redis 的 INCRBYFLOAT 命令。但是,我从 BigFloat 类型中检索了值。我不确定我是否可以直接将 BigFloat 变量传递给该命令。如果不是,如何将其转换为普通
我有一个新闻网站,我想根据用户访问创建热门帖子,间隔为 7 天。 我使用带有前缀的 Redis::incrby() 创建了计数机制: Redis::incrby( 'news:popular:coun
我是一名优秀的程序员,十分优秀!