Creating Lists
LPUSH
The LPUSH command adds one or more elements to the beginning of a list.
127.0.0.1:6379> lpush mylist item0 item1 item2
(integer) 3
127.0.0.1:6379> lrange mylist 0 3
1) "item2"
2) "item1"
3) "item0"
127.0.0.1:6379> lpush mylist item3
(integer) 4
127.0.0.1:6379> lrange mylist 0 4
1) "item3"
2) "item2"
3) "item1"
4) "item0"
LPUSHX
The LPUSHX command adds an element to the beginning of a list only if the key exists.
127.0.0.1:6379> lpushx dummykey value
(integer) 0
127.0.0.1:6379> lpushx mylist value1 value2
(error) ERR wrong number of arguments for 'lpushx' command
127.0.0.1:6379> lpushx mylist value1
(integer) 5
127.0.0.1:6379> lrange mylist 0 5
1) "value1"
2) "item3"
3) "item2"
4) "item1"
5) "item0"
RPUSH
The RPUSH command adds one or more elements to the end of a list.
127.0.0.1:6379> rpush mylist item4
(integer) 6
127.0.0.1:6379> lrange mylist 0 6
1) "value1"
2) "item3"
3) "item2"
4) "item1"
5) "item0"
6) "item4"
127.0.0.0:6379> rpush mylist item5 item6
(integer) 8
127.0.0.1:6379> lrange mylist 0 8
1) "value1"
2) "item3"
3) "item2"
4) "item1"
5) "item0"
6) "item4"
7) "item5"
8) "item6"
RPUSHX
Similar to LPUSHX, RPUSHX adds an element to the end of a list only if the key exists.
LINSERT
The LINSERT command inserts an element before or after a pivot element in the list.
127.0.0.1:6379> linsert mylist before item1 insert_before
(integer) 9
127.0.0.1:6379> lrange mylist 0 9
1) "value1"
2) "item3"
3) "item2"
4) "insert_before"
5) "item1"
6) "item0"
7) "item4"
8) "item5"
9) "item6"
127.0.0.1:6379> linsert mylist before missing_element fail_insert
(integer) -1
127.0.0.1:6379> linsert mylist after insert_before insert_after
(integer) 10
127.0.0.1:6379> lrange mylist 0 10
1) "value1"
2) "item3"
3) "item2"
4) "insert_before"
5) "insert_after"
6) "item1"
7) "item0"
8) "item4"
9) "item5"
10) "item6"
Delteing Elemants
LPOP and RPOP
LPOP removes and returns the first element of the list, while RPOP removes and returns the last element.
127.0.0.1:6379> lpop mylist
"value1"
127.0.0.1:6379> lrange mylist 0 10
1) "item3"
2) "item2"
3) "insert_before"
4) "insert_after"
5) "item1"
6) "item0"
7) "item4"
8) "item5"
9) "item6"
127.0.0.1:6379> rpop mylist
"item6"
127.0.0.1:6379> lrange mylist 0 10
1) "item3"
2) "item2"
3) "insert_before"
4) "insert_after"
5) "item1"
6) "item0"
7) "item4"
8) "item5"
LTRIM
LRTRIM keeps only a specified range of elements in the list, discarding all others.
127.0.0.1:6379> ltrim mylist 0 3
OK
127.0.0.1:6379> lrange mylist 0 10
1) "item3"
2) "item2"
3) "insert_before"
4) "insert_after"
LREM
LREM removes elements equal to a specified value. The count parameter determines how many eelments to remove.
-- Removing 5 instances of "item0" from the head
127.0.0.1:6379> lrange mylist 0 10
1) "item0"
2) "item0"
3) "item0"
4) "item4"
5) "item5"
6) "item6"
7) "item0"
8) "item0"
9) "item0"
10) "item0"
127.0.0.1:6379> lrem mylist 5 item0
(integer) 5
127.0.0.1:6379> lrange mylist 0 10
1) "item4"
2) "item5"
3) "item6"
4) "item0"
5) "item0"
-- Removing 5 instances of "item0" from the tail
127.0.0.1:6379> lrange mylist 0 10
1) "item0"
2) "new_item"
3) "item0"
4) "item0"
5) "item0"
6) "item4"
7) "item5"
8) "item6"
9) "item0"
10) "item0"
127.0.0.1:6379> lrem mylist -5 item0
(integer) 5
127.0.0.1:6379> lrange mylist 0 10
1) "item0"
2) "new_item"
3) "item4"
4) "item5"
5) "item6"
Updating Elements
LSET
LSET updates the value at a specific index in the list.
127.0.0.1:6379> lset mylist 0 new_value
OK
127.0.0.1:6379> lrange mylist 0 10
1) "new_value"
2) "new_item"
3) "item4"
4) "item5"
5) "item6"
Querying Elements
LINDEX
LINDEX retrieves an element at a specific index. Negative indexes count from the end of the list.
127.0.0.1:6379> lrange mylist 0 10
1) "new_value"
2) "new_item"
3) "item4"
4) "item5"
5) "item6"
127.0.0.1:6379> lindex mylist 0
"new_value"
127.0.0.1:6379> lindex mylist -1
"item6"
127.0.0.1:6379> lindex mylist 5
(nil)
LRANGE
LRANGE retrieves a range of elements from the list. Use 0 for the start and -1 for the end of the list.