在Redis列表中按索引插入值

时间:2014-02-11 03:25:30

标签: redis

有没有办法通过 index 将值插入Redis列表?

LINSERT可以通过 value 来实现,但这似乎有些落后,因为相同的值可能会在列表中多次出现。

3 个答案:

答案 0 :(得分:1)

有一项工作可能有点慢,因为所有都是O(n)操作。

  • 使用LIndex在客户端保存旧值。
  • 使用LSet设置一个永远不会插入索引列表中的标记值。
  • 使用LINSERT在标记值后插入2个值(新值,旧保存值)。
  • 使用LRem删除标记值。
  • 所有操作都应该在交易中。

答案 1 :(得分:1)

如果您需要非重复元素,

Redis'集合是更合适的数据结构,或者如果您要订购元素,则使用有序集合。列表更适合推送'poppin'的东西。

答案 2 :(得分:0)

LSET index 设置列表元素。

一个例子:

redis> RPUSH mylist "foo"
(integer) 1
redis> RPUSH mylist "bar"
(integer) 2
redis> LSET mylist 1 "baz"
OK
redis> LRANGE mylist 0 -1
1) "foo"
2) "baz"