我正在使用此代码:
sadd my_set "el1"
在my_set中插入“ el1”。sadd仅返回插入元素的数量。我需要的是插入元素的键,以便以后可以检索它。我确信有一种我不知道的方法。难道是正确的功能,还是我应该选择其他类似设置/获取?
编辑:我需要类似mysql中的auto_increment键。当我插入一些东西时,获取最后插入的元素以备将来使用。
我需要这样的东西:
key: 1 value: {"name": "jack", "tel": "12412415"}
所以我可以使用key = 1获得数组
要执行类似于“ auto_increment”的操作,我将查看INCR函数:
http://redis.io/commands/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服务器中的字段。
DEL myList:(index value)
index
您真的不想为此使用集;集合本质上是无序的,并且它们并不是真的可以通过“键”来查找事物- 集合中的项甚至根本没有键。集合对于您可以对它们执行的其他集合操作(例如SINTER或SDIFF)更有用。