为了做一些类似于“auto_increment”的事情,我会看一下 INCR 函数:
http://redis.io/commands/incr
它将增加一个值,将新值返回给您 - 它是原子的(就像大多数/所有 Redis 命令一样),因此您无需担心线程问题。所以你的步骤是这样的:
- 设置增量键。
- 当您想要添加一个值时,INCR 键,并使用返回的值 INCR 设置您的新值。
- 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)更有用。