Open In App

Complete Guide to Redis Lists

Last Updated : 03 Nov, 2023
Improve
Improve
Like Article
Like
Save
Share
Report

When it comes to data structures, Redis offers a wide range of options to efficiently manage and manipulate your data and one of them is list. A list is an ordered collection of values associated with a unique index. Unlike arrays, Redis lists are not limited to a fixed size and can expand or shrink on per need basis. In real, it works like linked lists under the hood, which means adding or removing elements from the beginning or the end of the list is an efficient operation here having a time complexity of O(1) that is constant.

Redis Lists Commands

1. keys Command

Syntax: keys *

Explanation: Shows all the stored variables of key-value pairs

Example: keys *

Screenshot-(601)

2. lpush Command

Syntax: lpush list_name list_item

Explanation: Pushing item in list from top

Example: lpush Fruits Apple Mango Banana
Screenshot-(600)

3. lrange Command

Syntax: lrange list_name range

Explanation: Shows all list items 0 to -1

Example: lrange Fruits 0 -1
Screenshot-(602)

4. rpush Command

Syntax: rpush list_name list_item

Explanation: Pushing item in list from bottom

Example: rpush Fruits Litchi Guava Pineapple
Screenshot-(604)

5. llen Command

Syntax: llen list_name

Explanation: List length/no. of items

Example: llen Fruits

Screenshot-(603)

6. lpop Command

Syntax: lpop list_name

Explanation: Removes item from top of the list

Example: lpop Fruits
Screenshot-(605)

7. rpop Command

Syntax: rpop list_name

Explanation: Removes item from bottom of the list

Example: rpop Fruits
Screenshot-(605)

8. lset Command

Syntax: lset list_name index_no list_item_name

Explanation: Modifies list item name at particular index

Example: lset Fruits 3 Grapes

Screenshot-(606)

9. linsert Command

Syntax: linsert list_name before/after list_item “Add_this_list_item”

Explanation: Adds a list item before a particular list item

Example: linsert Fruits before Grapes Watermelon

Screenshot-(607)

10. lindex Command

Syntax: lindex list_name index_no

Explanation: Gives the item_name at a particular index

Example: lindex Fruits 4

Screenshot-(608)

11. lpushx Command

Syntax: lpushx list_name list_item

Explanation: Adds the list_item from top, it first checks if that lists exists or not

Example: lpushx Vegetables Lemon

Screenshot-(609)

12. rpushx Command

Syntax: rpushx list_name list_item

Explanation: Similar to above one, but adds item from bottom

Example: rpushx Dryfruits Almonds

Screenshot-(609)

13. sort Command

Syntax: sort list_name ALPHA

Explanation: Sorts lists in ascending order, for descending order use keyword “desc” before ALPHA keyword {ALPHA keyword for string}. In case of integers or any other type you don’t have to write “ALPHA” keyword

Example: sort Fruits ALPHA

Screenshot-(610)

Screenshot-(611)

14. lrem Command

Syntax: lrem list_name no_of_item word

Explanation: Removes “n” no. of same element from the list

Example: lrem Non_Veg -2 Egg
Screenshot-(612)15. lmove Command

Syntax: lmove list_name1 list_name2 where_to_place_it_in_list2 place_of_item_in_list1

Explanation: Individual List element gets moved from list 1 to list 2, by using “Left” and “Right” keyword. Where “left” and “right simply indicating item in left or right.

Example: lmove Fruits MyBasket Right Left

Screenshot-(688)

16. ltrim Command

Syntax: ltrim list_name range

Explanation: It makes sure that the list will be trimed to specified length

Example: ltrim MyBasket 0 3

Screenshot-(711)

17. blpop Command

Syntax: blpop list_name1 list_name2 time

Explanation: It is the blocking version of lpop cmd, it will block ‘lpop’ cmd till there aren’t any value to pop it or till timeout. If till timeout source list ‘List1’ didn’t contain any value then it will return nill.

Example: blpop WebTechStack AppTechStack 20

Screenshot-(718)

18. brpop Command

Syntax: brpop List1 List2 time

Explanation: It is the blocking version of rpop cmd, it will block ‘rpop’ cmd till there aren’t any value to pop it or till timeout. If till timeout source list ‘List1’ didn’t contain any value then it will return nill.

Example: brpop WebTechStack AppTechStack 20

Screenshot-(720)

19. blmove Command

Syntax: blmove list_name_source list_name_destination destination_left/right source_left/right time

Explanation: It blocks lmove cmd till the source is empty or till a client doesn’t push any value in it under given time constraints. In this example, first we made 2 different lists “WebTechStack” and “AppTechStack” then made them empty, as this cmd won’t work if source (WebTechStack) will contain any element. Then we executed the command, and it started waiting for client to push some values under given time “20s” then after timeout it showed ‘nil’ because no vale was pushed by client.

Example: blmove WebTechStack AppTechStack LEFT LEFT 20

Screenshot-(714)

20. lmpop Command

Syntax: lmpop time numkey left/right count

Explanation: It pops one or more elements from first non-empty list. Its similar to lpop, rpop, blpop, brpop like cmds. It will return ‘nill’ when no element can be poped. First it popped elements of first list till it get empty, then it popped 2nd list.

Example: lmpop 2 Web App LEFT 3

Screenshot-(722)

How to Treat a list like a queue? 

To treat a list like a queue in Redis, you can use the following commands:

  • LPUSH to add items to the head of the queue.
  • RPOP to remove items from the tail of the queue.

For example, to create a queue for bike repairs, you would use the following command:

LPUSH bikes:repairs bike:1

This will add the bike with the ID 1 to the head of the queue.
To process the next bike in the queue, you would use the following command:

RPOP bikes:repairs

This will remove the first bike from the queue and return its ID.

You can also use the following commands to manage your queue:

  • LLEN to get the length of the queue.
  • LRANGE to get a range of items from the queue.
  • LREM to remove items from the queue.

For example, to get the length of the bikes:repairs queue, you would use the following command:

LLEN bikes:repairs

This will return the number of bikes in the queue.
To get the first two bikes in the queue, you would use the following command:

LRANGE bikes:repairs 0 1

This will return a list containing the IDs of the first two bikes in the queue.
To remove the bike with the ID 1 from the queue, you would use the following command:

LREM bikes:repairs 1 1

This will remove the first occurrence of the bike with the ID 1 from the queue.
You can use these commands to implement a variety of queue-based applications in Redis, such as task queues, message queues, and job queues.

How to Treat a list like a stack?

To treat a list like a stack in Redis, you can use the following commands:

  • RPUSH to push items onto the stack.
  • LPOP to pop items off the stack.

For example, to create a stack for storing temporary data, you would use the following command:

RPUSH temp_data item1

This will push the item item1 onto the stack.
To get the item at the top of the stack, you would use the following command:

LPOP temp_data

This will return the item item1 and remove it from the stack.
You can also use the following commands to manage your stack:

  • LLEN to get the length of the stack.
  • LRANGE to get a range of items from the stack.
  • LREM to remove items from the stack.

For example, to get the length of the temp_data stack, you would use the following command:

LLEN temp_data

This will return the number of items on the stack.
To get the first two items on the stack, you would use the following command:

LRANGE temp_data 0 1

This will return a list containing the first two items on the stack.
To remove the item item1 from the stack, you would use the following command:

LREM temp_data 1 1

This will remove the first occurrence of the item item1 from the stack.
You can use these commands to implement a variety of stack-based applications in Redis, such as undo/redo functionality, function call stacks, and expression evaluation stacks.

Conclusion

Redis lists provides a base for building high-performance applications. By understanding the Redis lists and their operations, developers can leverage the full potential of Redis to enhance their applications’ functionality and responsiveness.



Like Article
Suggest improvement
Previous
Next
Share your thoughts in the comments

Similar Reads