Redis 的 LINSERT 命令用于将值 value 插入到 列表 KEY 当中,位于值 pivot 之前或之后。当 pivot 不存在于列表 KEY 时,不执行任何操作。
当 KEY 不存在时, KEY 被视为空列表,不执行任何操作。如果 KEY 不是列表类型,返回一个错误。
192.168.98.70:6379> LINSERT KEY BEFORE|AFTER pivot value
参数 | 描述 |
---|---|
KEY | 要插入值的列表的键。 |
BEFORE | 表明在值 pivot 之前插入。 |
AFTER | 表明在值 pivot 之后插入。 |
pivot | 在该值之前或者之后插入。 |
value | 要插入的具体的元素。 |
如果命令执行成功,返回插入操作完成之后,列表的长度。如果没有找到 pivot ,返回 -1 。如果 KEY 不存在或为空列表,返回 0 。
O(N), N 为寻找 pivot 过程中经过的元素数量。
>= 2.2.0
LINSERT 命令,当值 pivot 不存在时,报错
192.168.98.70:6379> RPUSH haicoder Redis (integer) 1 192.168.98.70:6379> LINSERT haicoder BEFORE Mongo Mysql (integer) -1 192.168.98.70:6379> LRANGE haicoder 0 -1 1) "Redis" 192.168.98.70:6379> LINSERT haicoder AFTER Mongo Mysql (integer) -1 192.168.98.70:6379> LRANGE haicoder 0 -1 1) "Redis" 192.168.98.70:6379> DEL haicoder (integer) 1
我们首先,使用 RPUSH 命令,向键为 haicoder 的列表中插入元素 Redis。接着,使用 LINSERT 命令,向键为 haicoder 的列表的 Mongo 元素之前插入 Mysql 元素, 因为元素 Mongo 不存在,所以插入失败,报错。
我们再次,使用 LRANGE 命令,获取列表的所有元素,返回了 Redis,说明上面的 LINSERT 命令失败。
最后,我们使用 LINSERT 命令,向键为 haicoder 的列表 Mongo 元素之后插入 Mysql 元素, 因为元素 Mongo 不存在,所以插入失败,报错。
LINSERT 命令,值 pivot 存在,插入成功
192.168.98.70:6379> RPUSH haicoder Redis (integer) 1 192.168.98.70:6379> RPUSH haicoder Mongo (integer) 2 192.168.98.70:6379> LRANGE haicoder 0 -1 1) "Redis" 2) "Mongo" 192.168.98.70:6379> LINSERT haicoder BEFORE Redis Mysql (integer) 3 192.168.98.70:6379> LRANGE haicoder 0 -1 1) "Mysql" 2) "Redis" 3) "Mongo" 192.168.98.70:6379> LINSERT haicoder AFTER Mongo MemCache (integer) 4 192.168.98.70:6379> LRANGE haicoder 0 -1 1) "Mysql" 2) "Redis" 3) "Mongo" 4) "MemCache" 192.168.98.70:6379> DEL haicoder (integer) 1
我们首先,使用 RPUSH 命令,向键为 haicoder 的列表尾插入元素 Redis。使用 RPUSH 命令,向键为 haicoder 的列表尾插入元素 Mongo。使用 LRANGE 命令,获取列表的所有元素,返回了 Redis、Mongo。
接着,我们使用 LINSERT 命令,向键为 haicoder 的列表的 Redis 元素之前插入 Mysql 元素。使用 LRANGE 命令,获取列表的所有元素,此时可以看到 Mysql 元素在 Redis 元素之前。
我们再次使用 LINSERT 命令,向键为 haicoder 的列表的 Mongo 元素之后插入 MemCache 元素。最后,我们使用 LRANGE 命令,获取列表的所有元素,此时可以看到 MemCache 元素在 Mongo 元素之后。
Redis 的 LINSERT 命令用于将值 value 插入到列表 KEY 当中,位于值 pivot 之前或之后。Redis LINSERT 命令语法:
192.168.98.70:6379> LINSERT KEY BEFORE|AFTER pivot value