1

我正在使用这段代码:

sadd my_set "el1"

将“el1”插入 my_set。sadd 只返回插入元素的数量。我需要的是插入元素的键,以便我以后可以检索它。我确信有一种我不知道的方法。悲伤是正确的功能还是我应该选择其他东西,比如设置/获取?

编辑:我需要 mysql 中的 auto_increment 键之类的东西。当我插入一些东西时,获取最后插入的元素以供进一步使用。

我需要这样的东西:

key: 1
value: {"name": "jack", "tel": "12412415"}

所以我可以使用 key = 1 来获取数组。

4

1 回答 1

4

为了做一些类似于“auto_increment”的事情,我会看一下 INCR 函数:

http://redis.io/commands/incr

它将增加一个值,将新值返回给您 - 它是原子的(就像大多数/所有 Redis 命令一样),因此您无需担心线程问题。所以你的步骤是这样的:

  1. 设置增量键。
  2. 当您想要添加一个值时,INCR 键,并使用返回的值 INCR 设置您的新值。
  3. INCR 此时增加了增量键的值,因此任何重复的值插入都将使用“下一个”数字。

如果你想存储一个可以通过索引查找的项目列表,你可能想做这样的事情(在编程伪代码中):

// 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 返回的值将是您插入新项目的索引,以及您稍后查找项目的索引。因此,在我的示例代码中,将 (index value) 替换为您从 INCR 返回的存储值(当然,您如何执行此操作取决于您使用的编程语言)。

请注意,这确实允许通过 删除中间的项目DEL myList:(index value),因为您正在使用 跟踪最后一个索引index因此即使删除了一个项目,最后一个索引仍将保持不变 - 这与“自动增量”的行为非常相似大多数 SQL 服务器中的字段。

您真的不想为此使用集合;集合本质上是无序的,它们并没有真正通过“键”来查找 - 集合中的项目甚至没有真正的键。集合对于您可以对其执行的其他集合操作(​​如 SINTER 或 SDIFF)更有用。

于 2013-05-30T18:09:17.147 回答