一. List
List有以下特点:
-
list是一种按照插入顺序排序的字符串链表
-
可以在list的左侧(头部)或者list右侧(尾部)添加新的元素
-
在插入元素的时候,如果一个键不存在,就会为这个键创建一个新的list
-
如果list中的所有元素都被移除了,那么该键也会从数据库删除
-
在list头部和尾部插入元素效率高,在中间插入元素效率低
-
list可用于消息队列
二. 存储数据的方式
1. ArrayList 使用数组的方式,查询速度快但是增加和删除元素速度慢
2. LinkedList使用双向链接方式,增加和删除元素速度快
3. 双向链表中增加数据
4. 双向链表中删除数据
三. List命令
List常用的命令如下:
-
lpush:左侧添加,返回元素list的元素总个数
jia:0>lpush list 1 2 3 "3" jia:0>lpush list 4 5 6 "6"
-
rpush:右侧添加,返回元素list的元素总个数
jia:0>rpush list 7 8 9 "9"
-
lrange:查看列表,以 -1 表示列表的最后一个元素(也就是说, 可以查看该list的所有元素), -2 表示列表的倒数第二个元素
jia:0>lrange list 0 100 1) "6" 2) "5" 3) "4" 4) "3" 5) "2" 6) "1" 7) "7" 8) "8" 9) "9" jia:0>lrange list 0 -1 1) "6" 2) "5" 3) "4" 4) "3" 5) "2" 6) "1" 7) "7" 8) "8" 9) "9" jia:0>lrange list 0 -2 1) "6" 2) "5" 3) "4" 4) "3" 5) "2" 6) "1" 7) "7" 8) "8"
-
lpop:左侧弹出(删除)
jia:0>lpop list "6"
-
rpop:右侧弹出(删除)
jia:0>rpop list "9" jia:0>lrange list 0 100 1) "5" 2) "4" 3) "3" 4) "2" 5) "1" 6) "7" 7) "8"
-
llen:获取列表元素个数
jia:0>llen list "7"
-
lpushx:当某个list存在的时候,才在其左侧添加值
jia:0>lpushx list a "8" jia:0>lpushx list2 a "0"
-
rpushx:当某个list存在的时候,才在其右侧添加值
jia:0>rpushx list b "9" jia:0>rpushx list2 b "0"
-
lrem:删除count个值为value的元素
-
如果count > 0,则从头到尾遍历,删除list中count个值为value的元素
-
如果count < 0,则从尾到头遍历,删除list中count个值为value的元素
-
如果count = 0,则删除list中所有值为value的元素
jia:0>lpush vals a b c c d c "6" jia:0>lpush vals2 a b c c d c "6" jia:0>lpush vals3 a b c c d c "6" jia:0>lrange vals 0 100 1) "c" 2) "d" 3) "c" 4) "c" 5) "b" 6) "a" jia:0>lrem vals 2 c "2" jia:0>lrange vals 0 100 1) "d" 2) "c" 3) "b" 4) "a" jia:0>lrange vals2 0 100 1) "c" 2) "d" 3) "c" 4) "c" 5) "b" 6) "a" jia:0>lrem vals2 -2 c "2" jia:0>lrange vals2 0 100 1) "c" 2) "d" 3) "b" 4) "a" jia:0>lrange vals3 0 100 1) "c" 2) "d" 3) "c" 4) "c" 5) "b" 6) "a" jia:0>lrem vals3 c "ERR wrong number of arguments for 'lrem' command" jia:0>lrem vals3 0 c "3" jia:0>lrange vals3 0 100 1) "d" 2) "b" 3) "a" jia:0>
-
lset:替换某个下标的的值,下标从左到右,从0开始
jia:0>lpush list a b c "3" jia:0>lrange list 0 100 1) "c" 2) "b" 3) "a" jia:0>lset list 2 jia "OK" jia:0>lrange list 0 100 1) "c" 2) "b" 3) "jia"
-
linsert:在某个元素前面或者后面插入元素
jia:0>del list "1" jia:0>lpush list 1 2 3 "3" jia:0>lrange list 0 100 1) "3" 2) "2" 3) "1" jia:0>linsert list before 2 a "4" jia:0>linsert list after 2 b "5" jia:0>lrange list 0 100 1) "3" 2) "a" 3) "2" 4) "b" 5) "1"
-
rpoplpush:将一个列表的数据左侧数据取出后,存入另一个列表中
jia:0>lpush list a b c "3" jia:0>lpush list2 c d e "3" jia:0>rpoplpush list list2 "a" jia:0>lrange list 0 -1 1) "c" 2) "b" jia:0>lrange list2 0 -1 1) "a" 2) "e" 3) "d" 4) "c"
四. 总结
List常用的命令如下:
-
lpush:左侧添加,返回元素list的元素总个数
-
rpush:右侧添加,返回元素list的元素总个数
-
lrange:查看列表,以 -1 表示列表的最后一个元素(也就是说, 可以查看该list的所有元素), -2 表示列表的倒数第二个元素
-
lpop:左侧弹出(删除)
-
rpop:右侧弹出(删除)
-
llen:获取列表元素个数
-
lpushx:当某个list存在的时候,才在其左侧添加值
-
rpushx:当某个list存在的时候,才在其右侧添加值
-
lrem:删除count个值为value的元素
-
如果count > 0,则从头到尾遍历,删除list中count个值为value的元素
-
如果count < 0,则从尾到头遍历,删除list中count个值为value的元素
-
如果count = 0,则删除list中所有值为value的元素
-
lset:替换某个下标的的值,下标从左到右,从0开始
-
linsert:在某个元素前面或者后面插入元素
-
rpoplpush:将一个列表的数据左侧数据取出后,存入另一个列表中
请登录之后再进行评论