在redis中插入密钥

时间:2013-05-30 18:03:12

标签: insert redis

我正在使用此代码:

sadd my_set "el1"

将“el1”插入my_set。 sadd只返回插入元素的数量。我需要的是插入元素的键,以便我以后可以检索它。我确信有一种我不知道的方式。难道是正确的功能还是我应该选择像set / get这样的其他东西?

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

我需要这样的东西:

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

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

1 个答案:

答案 0 :(得分:4)

要做一些与“auto_increment”模糊相似的事情,我会看一下INCR函数:

http://redis.io/commands/incr

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

  1. 设置增量键。
  2. 如果要添加值,请使用INCR键,并使用返回的值INCR设置新值。
  3. INCR此时增加了增量键的值,因此任何重复值插入都将使用“下一个”数字。
  4. 如果你想存储一个可以通过索引查找的项目列表,你可能想要这样做(在编程伪代码中):

    // 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。