lpush/rpush/lrange
127.0.0.1:6379> LPUSH list01 1 2 3 4 5(integer) 5127.0.0.1:6379> LRANGE list01 0 -11) "5"2) "4"3) "3"4) "2"5) "1"127.0.0.1:6379> RPUSH list02 1 2 3 4 5(integer) 5127.0.0.1:6379> LRANGE list02 0 -11) "1"2) "2"3) "3"4) "4"5) "5"127.0.0.1:6379>
lpush 为先进后出,lpush相当于从左侧开始入栈
rpush 为先进先出,rpush相当于从右侧开始入栈
lrange list01 0 -1 其中范围(0 -1)为取所有数据,从栈顶开始取数据
LPOP/RPOP 相当于弹栈,将数据弹出站
127.0.0.1:6379> LRANGE list01 0 -1
1) "5"2) "4"3) "3"127.0.0.1:6379> LPOP list01 弹出栈顶数据"5"127.0.0.1:6379> RPOP list01 弹出栈底数据"3"127.0.0.1:6379> LRANGE LIST01 0 -1(empty list or set)127.0.0.1:6379> LRANGE list01 0 -11) "4"127.0.0.1:6379>
LINDEX 按照索引下标获得元素(从上到下)
127.0.0.1:6379> LRANGE list01 0 -1
1) "4"2) "3"3) "2"127.0.0.1:6379> lindex list01 0"4"LLEN 获取长度
127.0.0.1:6379> LLEN list01
(integer) 3127.0.0.1:6379>
LREM KEY 删除N个value
127.0.0.1:6379> RPUSH list03 1 1 1 2 2 2 3 3 3 4 4 4 5
(integer) 13127.0.0.1:6379> LREM list03 2 3(删除2个3)(integer) 2127.0.0.1:6379> LRANGE list03 0 -1 1) "1" 2) "1" 3) "1" 4) "2" 5) "2" 6) "2" 7) "3" 8) "4" 9) "4"10) "4"11) "5"127.0.0.1:6379>
ltrim key 开始index 结束index, 截取指定范围的值再赋值给key
127.0.0.1:6379> LPUSH list01 1 2 3 4 5 6 7 8
(integer) 8127.0.0.1:6379> LRANGE list01 0 -11) "8"2) "7"3) "6"4) "5"5) "4"6) "3"7) "2"8) "1"127.0.0.1:6379> LTRIM list01 3 5 (截取下标为3-5的数值,下表从0开始,再赋值给list01)OK127.0.0.1:6379> LRANGE list01 0 -11) "5"2) "4"3) "3"127.0.0.1:6379>
RPOPLPUSH 源列表 目的列表 (将一个数据弹出,使用rpop弹出的底部数据,lpush放入另一个中)
127.0.0.1:6379> lrange list02 0 -1
1) "2"2) "3"3) "4"127.0.0.1:6379> lrange list01 0 -11) "8"2) "7"3) "6"4) "5"5) "4"6) "3"7) "2"8) "1"127.0.0.1:6379> RPOPLPUSH list01 list02"1"127.0.0.1:6379> LRANGE list02 0 -11) "1"2) "2"3) "3"4) "4"127.0.0.1:6379>
lset key index value 对index位置的进行赋值value
127.0.0.1:6379> LRANGE list01 0 -1
1) "8"2) "7"3) "6"4) "5"5) "4"6) "3"127.0.0.1:6379> LSET list01 1 xOK127.0.0.1:6379> LRANGE list01 0 -11) "8"2) "x"3) "6"4) "5"5) "4"6) "3"127.0.0.1:6379>
linsert key before/after 值1 值2(在指定值 前/后 插入一个值)
127.0.0.1:6379> LRANGE list01 0 -1
1) "8"2) "x"3) "6"4) "5"5) "4"6) "3"127.0.0.1:6379> LINSERT list01 before x java(integer) 7127.0.0.1:6379> LRANGE list01 0 -11) "8"2) "java"3) "x"4) "6"5) "5"6) "4"7) "3"127.0.0.1:6379> LINSERT list01 before x x(integer) 8127.0.0.1:6379> LRANGE list01 0 -11) "8"2) "java"3) "x"4) "x"5) "6"6) "5"7) "4"8) "3"127.0.0.1:6379> LINSERT list01 before x java(如果指定值有重复,则找到的是第一个)(integer) 9127.0.0.1:6379> LRANGE list01 0 -11) "8"2) "java"3) "java"4) "x"5) "x"6) "6"7) "5"8) "4"9) "3"127.0.0.1:6379>
性能总结:
它是一个字符串链表,left、right都可以插入添加;
如果键不存在,创建新的链表;
如果键已存在,新增内容;
如果值全部移除,对应的键也就消失了。
链表的操作无论是头部和尾部效率都极高,但假如是对中间元素进行操作,效率就很惨淡了。