我正在使用此代码:
sadd my_set "el1"
将“el1”插入my_set。 sadd只返回插入元素的数量。我需要的是插入元素的键,以便我以后可以检索它。我确信有一种我不知道的方式。难道是正确的功能还是我应该选择像set / get这样的其他东西?
编辑:我在mysql中需要类似auto_increment键的东西。当我插入一些东西时,获取最后插入的元素以供进一步使用。我需要这样的东西:
key: 1
value: {"name": "jack", "tel": "12412415"}
所以我可以使用key = 1来获取数组。
答案 0 :(得分:4)
要做一些与“auto_increment”模糊相似的事情,我会看一下INCR函数:
它将递增一个值,将新值返回给您 - 它是原子的(就像大多数/所有Redis命令一样),因此您不必担心线程问题。所以你的步骤将是:
如果你想存储一个可以通过索引查找的项目列表,你可能想要这样做(在编程伪代码中):
// When you initialize your database for the first time.
SET index "0"
// When you want to insert a new item:
INCR index
SET myList:(index value) "My Value"
// When you want to retrieve an item, and you have the index for it:
GET myList:(index value)
在这个例子中,我假设您在程序中跟踪INCR返回的值。 INCR返回的值将是您插入新项目的索引,以及稍后您将用于查找项目的索引。因此,在我的示例代码中,将(索引值)替换为从INCR返回的存储值(如何执行此操作取决于您正在使用的编程语言)。
请注意,此操作允许通过DEL myList:(index value)
删除中间的项目,因为您使用index
跟踪最后一个索引,所以即使项目是删除后,最后一个索引仍将保持不变 - 这与大多数SQL服务器中的“自动增量”字段非常相似。
你真的不想为此使用套装;集合本质上是无序的,它们并不是真正用“关键”来查找东西 - 集合中的项目甚至没有真正的密钥。集合对于您可以对它们执行的其他集合操作更有用,例如SINTER或SDIFF。