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

Redis设置成员更新的有效方式

楚硕
2023-03-14
问题内容

我有一个Redis集。此集最多可存储20个成员(添加SADD命令)。我的问题是;我需要在需要时更新该成员。成员每个成员最多需要进行10次修改。集合成员是json作为字符串。我脑子里只有soltotoin,也没有让所有成员更新并重新创建该集合。但这似乎很愚蠢。

我知道有一个ZADD排序集及其分数支持,这似乎也很合适,我还需要像JSON中的数据一样更新分数,但是我只是想知道是否有任何方法可以有效地更新成员,还是在Redis方式上不能接受更新成员?

注意:node.js和java客户端都在使用Redis数据存储。


问题答案:

集合成员本身是不可变的-您可以添加新成员或删除现有成员。而已。

鉴于集合是唯一成员的无序集合,请考虑当成员的新值在理论上可修改的情况下,集合成员的可能结果:

  1. 与旧值相同-不变
  2. 集合中已经存在-等同于删除该成员
  3. 不是1或2-相当于删除该成员并添加一个新成员


 类似资料:
  • 问题内容: 我的桌子上有很多记录(可能超过500 000或1 000 000)。我在此表中添加了一个新列,我需要使用该表中另一列的相应行值为该列中的每一行填充一个值。 我尝试使用单独的事务来选择每100条记录的下一个块并为其更新值,但是例如,要花费数小时来更新Oracle10中的所有记录。 在不使用某些方言特定功能的情况下,在SQL中执行此操作的最有效方法是什么,因此它可在任何地方(Oracle,

  • 这似乎应该是简单的,但我没有找到太多相关的它。我有一个结构,它有不同的字段用来存储关于程序操作的数据。我想记录这些数据,以便以后分析。试图在程序运行过程中连续记录数据会消耗大量资源。因此,我只想在数据发生变化时调用日志记录函数。如果有一种有效的方法来检查结构成员是否更新了,我会很高兴的。目前我正在玩一个有3个结构(旧的、当前的和新的)的shell游戏,以便检测数据何时发生了变化。提前道谢。

  • 问题内容: 是否有很好的方法来支持Redis Sorted Set中的pop成员,就像List的api LPOP一样? 我从Redis Sorted Set弹出消息中发现的是使用ZRANGE + ZREM,但是它不是线程安全性,并且当多线程同时从不同主机访问它们时需要分布式锁。 请提出建议,是否有更好的方法可以从排序集中弹出成员? 问题答案: 您可以编写一个Lua脚本来完成这项工作:将这两个命令包

  • 问题内容: 我在本地计算机上使用Redis,所以我真的不需要设置密码即可通过php客户端连接到服务器(我使用predis作为客户端)。但是,我将应用程序移动到实时服务器,因此我想设置一个密码以连接到我的Redis服务器。 我有几个问题: 我在互联网上检查了如何设置密码,好像我需要在redis.conf中添加密码。我找不到我应该完全添加到配置文件中来设置密码的内容。 另外在predis我应该如何添加

  • 问题内容: 在Redis中是否可以不为特定密钥设置TTL(生存时间),而是为一组成员设置TTL? 我正在使用Redis文档提出的标签结构-数据是简单的键/值对,并且标签是包含对应于每个标签的键的集合,例如 密钥将按预期到期,但我看不到从集中删除相应成员的有效方法。 我出现的一种方法是使用包含脚本的cron作业,该脚本将定期从集合中删除过期的密钥- 通过将所有标签名称添加到另一个集中,然后遍历所有标

  • 我想这可能是一个新手问题,但我仍然想知道一些答案。 假设存在实体:医院和医生(多对多)。假设在我的controller类中,我必须获取所有现有的医生和医院,然后在特定的医院雇佣一名医生 它当然不起作用,因为--据我所知--我已经在控制器中获取了所有的医生和医院,然后在hireDoctor方法中,我们打开了传递常规Java对象的trasaction,这些对象不在会话中。 我知道,我可以用一个特殊的身