一尘不染

在redis中插入密钥

redis

我正在使用此代码:

sadd my_set "el1"

在my_set中插入“
el1”。sadd仅返回插入元素的数量。我需要的是插入元素的键,以便以后可以检索它。我确信有一种我不知道的方法。难道是正确的功能,还是我应该选择其他类似设置/获取?

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

我需要这样的东西:

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

所以我可以使用key = 1获得数组


阅读 297

收藏
2020-06-20

共1个答案

一尘不染

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

请注意,这让中间删除项,通过DEL myList:(index value)了,因为你要跟踪的 最后一个索引
index,所以即使项目被删除,最后指数仍将保持不变-这表现得非常类似于“自动增量”大多数SQL服务器中的字段。

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

2020-06-20