lists类型
给你个图;'
lists类型以及操作
List是一个链表结构,主要功能是push、pop、获取一个范围的所有值等等,操作中key理解为链表的名字。Redis的list类型其实就是每一个子元素都是String类型的双向链表。我们可以通过push、pop操作从链表的头部或者尾部添加删除元素,这样list既可以作为栈,又可以作为队列。
操作:
lpush
从头部添加字符串元素
127.0.0.1:6379> lpush list1 one (integer) 1 //数字表示list的长度 127.0.0.1:6379> lpush list1 two (integer) 2 127.0.0.1:6379> lrange list1 0 -1 // 0表示开始展示的元素所在的下标,1表示最后展示的元素所在位置的下标,最后就是-1.0在头的开始位置 1) "two" 2) "one" 127.0.0.1:6379> lpush list1 three four (integer) 4
rpush
在key对应的list尾部添加字符串元素
127.0.0.1:6379> rpush list01 hello (integer) 1 127.0.0.1:6379> rpush list01 world (integer) 2 127.0.0.1:6379> lrange list01 0 -1 1) "hello" 2) "world"
linsert
向key对应的list的指定元素前或后插入元素
127.0.0.1:6379> linsert list01 before "world" java (integer) 3 127.0.0.1:6379> lrange list01 0 -1 1) "hello" 2) "java" 3) "world" 127.0.0.1:6379> linsert list01 after "world" "jiangxi" (integer) 4 127.0.0.1:6379> lrange list01 0 -1 1) "hello" 2) "java" 3) "world" 4) "jiangxi"
lrange
查看指定下标范围的对应list中的值
127.0.0.1:6379> lrange list01 0 -1 1) "hello" 2) "java" 3) "world" 4) "jiangxi" 127.0.0.1:6379> lrange list01 1 2 1) "java" 2) "world"
Lset
设置list中指定下标的值
127.0.0.1:6379> lset list01 0 "hi" OK 127.0.0.1:6379> lrange list01 0 -1 1) "hi" 2) "java" 3) "world" 4) "jiangxi" 127.0.0.1:6379>
lrem
从key对应的list中删除n个和value相同的元素(n<0从尾删除,n=0全部删除)
127.0.0.1:6379> lpush list01 hello world hello world world hello hi my my hello hello (integer) 11 127.0.0.1:6379> lrange list01 0 -1 1) "hello" 2) "hello" 3) "my" 4) "my" 5) "hi" 6) "hello" 7) "world" 8) "world" 9) "hello" 10) "world" 11) "hello" 127.0.0.1:6379> lrem list01 1 "hello" (integer) 1 127.0.0.1:6379> lrange list01 0 -1 1) "hello" 2) "my" 3) "my" 4) "hi" 5) "hello" 6) "world" 7) "world" 8) "hello" 9) "world" 10) "hello" 127.0.0.1:6379> lrem list01 -1 "hello" (integer) 1 127.0.0.1:6379> lrange list01 0 -1 1) "hello" 2) "my" 3) "my" 4) "hi" 5) "hello" 6) "world" 7) "world" 8) "hello" 9) "world" 127.0.0.1:6379> lrem list01 0 "hello" (integer) 3 127.0.0.1:6379> lrange list01 0 -1 1) "my" 2) "my" 3) "hi" 4) "world" 5) "world" 6) "world" 127.0.0.1:6379>
ltrim
保留指定key的值范围内的数据,其他的删除
127.0.0.1:6379> lrange list01 0 -1 1) "my" 2) "my" 3) "hi" 4) "world" 5) "world" 6) "world" 127.0.0.1:6379> ltrim list01 1 2 OK 127.0.0.1:6379> lrange list01 0 -1 1) "my" 2) "hi"
lpop
从list的头部删除元素,并返回删除元素
127.0.0.1:6379> lrange list01 0 -1 1) "my" 2) "hi" 127.0.0.1:6379> lpop list01 "my" 127.0.0.1:6379> lrange list01 0 -1 1) "hi"
rpop
从list的尾部删除元素,并返回删除元素
127.0.0.1:6379> lrange list01 0 -1 1) "my" 2) "name" 3) "is" 127.0.0.1:6379> rpop list01 "is" 127.0.0.1:6379> lrange list01 0 -1 1) "my" 2) "name" 127.0.0.1:6379>
rpoplpush
从第一个list的尾部移除元素并添加到第二个list的头部
127.0.0.1:6379> lrange list01 0 -1 1) "my" 2) "name" 3) "is" 4) "guo" 5) "daxia" 127.0.0.1:6379> lpush list02 i like java (integer) 3 127.0.0.1:6379> lrange list02 0 -1 1) "java" 2) "like" 3) "i" 127.0.0.1:6379> rpoplpush list01 list02 "daxia" 127.0.0.1:6379> lrange list01 0 -1 1) "my" 2) "name" 3) "is" 4) "guo" 127.0.0.1:6379> lrange list02 0 -1 1) "daxia" 2) "java" 3) "like" 4) "i"
lindex
返回名称为key的list中index位置的元素
127.0.0.1:6379> lrange list01 0 -1 1) "my" 2) "name" 3) "is" 4) "guo" 5) "daxia" 127.0.0.1:6379> lindex list01 5 (nil) 127.0.0.1:6379> lindex list01 4 "daxia"
llen
返回key对应的list的长度
127.0.0.1:6379> lrange list01 0 -1 1) "my" 2) "name" 3) "is" 4) "guo" 5) "daxia" 127.0.0.1:6379> llen list01 (integer) 5