Redis的数据结构List
Redis是一种基于内存的NoSQL数据库,支持多种数据结构,其中之一就是List。List是一种有序的字符串列表,可以在列表的头部和尾部添加或删除元素,也可以在任意位置进行插入和删除操作。
基本命令
1. LPUSH
将一个或多个值插入到列表头部,如果列表不存在,则创建一个新的列表。
LPUSH key value [value ...]
示例:
LPUSH fruits apple
LPUSH fruits banana
LPUSH fruits cherry
列表fruits的内容为:
1) "cherry"
2) "banana"
3) "apple"
2. RPUSH
将一个或多个值插入到列表尾部,如果列表不存在,则创建一个新的列表。
RPUSH key value [value ...]
示例:
RPUSH fruits durian
RPUSH fruits elderberry
列表fruits的内容为:
1) "cherry"
2) "banana"
3) "apple"
4) "durian"
5) "elderberry"
3. LPOP
移除并返回列表的头部元素。
LPOP key
示例:
LPOP fruits
返回值为:
"cherry"
列表fruits的内容为:
1) "banana"
2) "apple"
3) "durian"
4) "elderberry"
4. RPOP
移除并返回列表的尾部元素。
RPOP key
示例:
RPOP fruits
返回值为:
"elderberry"
列表fruits的内容为:
1) "cherry"
2) "banana"
3) "apple"
4) "durian"
5. LINDEX
返回列表中指定索引位置的元素。
LINDEX key index
示例:
LINDEX fruits 1
返回值为:
"banana"
6. LINSERT
在列表中指定元素的前面或后面插入新元素。
LINSERT key BEFORE|AFTER pivot value
示例:
LINSERT fruits BEFORE banana apricot
列表fruits的内容为:
1) "cherry"
2) "apricot"
3) "banana"
4) "apple"
5) "durian"
7. LLEN
返回列表的长度。
LLEN key
示例:
LLEN fruits
返回值为:
5
8. LRANGE
返回指定区间内的元素。
LRANGE key start stop
示例:
LRANGE fruits 2 4
返回值为:
1) "banana"
2) "apple"
3) "durian"
9. LREM
从列表中删除指定个数的指定元素。
LREM key count value
count值为正表示从头部开始删除,count值为负表示从尾部开始删除,count值为0表示删除所有匹配的元素。
示例:
LREM fruits 2 banana
列表fruits的内容为:
1) "cherry"
2) "apple"
3) "durian"
应用场景
List在Redis中被广泛应用,以下是一些常见的应用场景:
-
消息队列:可以将待处理的任务存放在List中,工作者从头部取出任务进行处理,处理完成后从尾部将任务移除。
-
最新消息排行榜:将最新发布的消息插入List的头部,超过一定数量的消息则从List的尾部删除。
-
评论列表:将每条评论按时间顺序插入到List中,用户浏览评论列表时从头部依次取出。
-
粉丝列表 & 关注列表:将关注的用户插入到自己的关注列表中,用户的粉丝则插入到自己的粉丝列表中,可以很快地查看自己的粉丝和关注的人。