当前位置: 首页 > 面试题库 >

在Redis中实现参考集

宣意致
2023-03-14
问题内容

我需要在Redis中构建一个结构,以建模涉及3个实体的以下问题:用户,节点和套接字(所有字符串ID)。例如,用户U1可以通过插座S1和S2连接到节点N1,但是他也可以通过插座S3和S4连接到节点N2。

当他连接或断开连接时,我必须能够轻松更新连接到特定用户节点的套接字。此外,如果不采取任何措施,则每个套接字必须在一定时间后过期。在任何给定时间,我需要知道用户是否与至少一个套接字(独立于节点)连接。

我使用2种集合(对群集使用井号)对问题进行建模:1-具有密钥{u:U1} skt:NX的集合,其中包含套接字,例如,用户U1连接到N1 2-
a用键{u:U1} skts进行设置,其中包含其他集合,例如“ {u:U1} skt:N1”,“ {u:U1} skt:N2”,…

通过这种结构,我可以通过添加或删除成员来轻松更新集{u:U1} skt:NX。另外,我可以使用以下lua脚本来检查用户是否与套接字连接(无论节点如何)。

local indexes = redis.call("smembers", KEYS[1])
return redis.call("sunion", unpack(indexes))

这是正确的方法吗?如何实现集合成员的过期时间?


问题答案:

Redis不会终止数据结构的内容。在集合中实现到期的一种常见模式是改用排序集合,将时间戳或版本值存储在元素的分数中。届满将成为一个简单的问题,即删除具有足够低分数的成员(使用该ZREMBYSCORE命令)。



 类似资料:
  • 本文档是 Redis 命令参考手册的中文翻译版, 可以在 www.RedisDoc.com 在线阅读本文档。

  • 本文是 Redis Command Reference(redis.io/commands) 的简体中文翻译版, 原文十一个部分、共一百多个命令已经全部翻译完毕。 本文所有示例代码均经过 Redis 2.6 版本测试,质量保证。

  • 有人能证实Java8也是这样吗?开放的JDK8是Java SE8的参考实现? 在这个链接中有一个部分的答案,但是我的问题是关于Java8的。

  • 本文向大家介绍Python实战购物车项目的实现参考,包括了Python实战购物车项目的实现参考的使用技巧和注意事项,需要的朋友参考一下 购物车程序 要求如下图 代码 结果 总结 以上就是这篇文章的全部内容了,希望本文的内容对大家的学习或者工作具有一定的参考学习价值,谢谢大家对呐喊教程的支持。如果你想了解更多相关内容请查看下面相关链接

  • Modules 参考了以下开源模块: adm-zip clean-css colors fs-extra glob howdo open uglify-js ydr-utils seajs fis webpack posthtml Articles 感谢以下文章: FED社区:coolie 介绍专辑 FED社区:跟我学 coolie 专辑 知乎:大公司里怎样开发和部署前端代码? InfoQ:前端工

  • http://openstack.redhat.com/Networking_in_too_much_detail http://web.archive.org/web/20150215214007/http://masimum.inf.um.es/fjrm/2013/12/26/the-journey-of-a-packet-within-an-openstack-cloud http://pa