php - 使用分页过滤REDIS中的在线用户

标签 php symfony pagination redis

我正在开发一个使用 REDIS 存储用户列表的网站。它在一个排序集中,其中分数只是将它们放入列表的时间。对该列表进行分页非常容易。有问题的部分来了,当我想从这个列表中只显示有分页的在线用户(如有必要)时。我每分钟都有一个 SET,我只存储用户 ID,即在线用户。

问题是,我无法将 SET 与 SORTED SET 相交。所以我想的是,将在线用户集转换为无分数的排序集,并在请求时使用 INTERSECT,如果有人在同一分钟上线,那没问题,他们将在下一个显示分钟,我只使用 ZINTERSTORY 命令。

有人有更好的主意吗?

最佳答案

好消息 - 您实际上可以在排序的常规集上使用 ZINTERSTORE 命令,例如:

127.0.0.1:6379> sadd s a b c
(integer) 3
127.0.0.1:6379> smembers s
1) "b"
2) "c"
3) "a"
127.0.0.1:6379> zadd z 0 a 1 b 3 d
(integer) 3
127.0.0.1:6379> zrange z 0 -1
1) "a"
2) "b"
3) "d"
127.0.0.1:6379> zinterstore t 2 s z
(integer) 2
127.0.0.1:6379> zrange t 0 -1
1) "a"
2) "b"
127.0.0.1:6379> zinterstore tt 1 s
(integer) 3
127.0.0.1:6379> zrange tt 0 -1 withscores
1) "a"
2) "1"
3) "b"
4) "1"
5) "c"
6) "1"

关于php - 使用分页过滤REDIS中的在线用户,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26448819/

相关文章:

php - MYSQL : GROUP BY issues With ORDER BY

python - 如何在 Django 中结合过滤和分页?

javascript - 如何在 AngularJS 部分文件中使用 php (wordpress) 函数?

PHP/Doctrine ORM 多个 'one-to-one' 与同一类的关系

symfony - 更改 Sonata Admin 上的左侧菜单标签

mysql - 如何从 MySQL 中随机选择行进行分页?

php - 从列表元素运行 php

php - 使用crypt()和password_hash()函数加密后密码不匹配

php - 我无法让 rewieer/TaskSchedulerBundle for Symfony 工作

php - Symfony2 - 过载注册表导致 CSRF 错误(添加了 github repo)