redis sismember 检查多用户在线

标签 redis

我使用redis来获取在线用户我只是想检查一些用户是否在线

首先将用户添加到在线

sadd online_users user_a

(integer) 1

检查user_a是否在线

sismember online_users user_a

(integer) 1

我的问题是如何检查多用户是否在线

添加soem用户

sadd online_users user_a

(integer) 1

sadd online_users user_b

(integer) 1

sadd online_users user_c

(integer) 1

现在我想检查三个用户是否在线

sismember online_users {user_a,user_b,user_c}

我不知道这是否正确,但我想要多用户检查返回数据,例如 {0,1,0} = {离线、在线、离线}

最佳答案

最好的方法是比较两组。

1 - 在第一个 redis 集合中保存你的“联系人”

添加联系人:your_id user_1 user_2 user_3 user_4

2-制作另一组所有连接的用户

SADD 已连接 user_1 user_2 user_3 user_6 user_78

然后使用命令 SINTER,它会给你这两组之间的交集,这意味着你所有的联系人都已连接

SINTER connected contacts:your_id

只记得保持集合“连接”的良好更新......这是另一回事了

希望这对您有所帮助。

关于redis sismember 检查多用户在线,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37527762/

相关文章:

go - Revel session 集群与 Redis

database - Redis 使用高内存和小数据集

redis - 如何实现带超时的ServiceStack Redis Client

python - 为什么 Celery 会撤销所有计划任务并丢弃它们?

c# - 无法使用 Stackexchange Redis 从 .Net 调用带有模式的 HSCAN

python - Redis python中的HashMap过期?

Java:我可以使用Redis db创建优先级队列并根据数据集中键的值设置优先级吗

php - 适用于 PHP 5.6.3 Mac OSX 的 Redis 扩展

express - 如何从不同的浏览器永久保持登录?

ruby-on-rails - Resque 不运行 worker 从队列中选择工作 - Rails