list类型及操作
list是一个链表结构,主要功能是push,pop、获取一个范围的所有值等,操作中key理解为链表的名字。redis的list类型其实就是一个每个子元素都是string类型的双向链表。我么可以通过push、pop操作从链表的头部或者尾部添加删除元素,这样list既可以作为栈又可以作为队列。
lpush
在key对应的list头部添加字符串元素,返回list中的个数,先进后出和栈一样
例如:
lpush mylist 'world'
lpush mylist 'hello'
lrange mylist 0 -1 hello world
rpush
在key的尾部添加元素,后进后出和队列一样
例如:
rpush mylist haoxiang
rpush mylist lamp
lrange mylist 0 -1 //结果是 haoxiang lamp
linsert
在 key 对应的list的指定位置前或后添加字符串,从尾到头的方向为前
例如:
rpush mylist2 one
rpush mylist2 two
linsert mylist2 before two three
lrange mylist2 0 -1 //结果是 one three two
lset
修改list中指定下标的值,下标方法和PHP数组的数组索引一样
例如:
rpush mylist3 hello
lset mylist3 0 world
lrange mylist3 0 -1 //结果是 world
lrem
从 key 对应的list中删除n个和value相同的元素(n<0 从尾部删除,n=0全部删除)
例如:
rpush mylist5 hello
rpush mylist5 hello
lrem mylist5 1 hello //
ltrim
保留指定key的值返回内的数据,其余部分删除
例如:
ltrim mylist6 1 -1
lpop
从list的头部删除元素,并返回删除元素
rpop
从list的尾部删除元素,并返回删除元素
rpop|push
从第一个list的尾部移除元素,并添加到第二个list的头部
例如:
rpop|push mylist1 mylist2
lindex
返回 list 中索引位置的值
例如:
lindex mylist5 0
llen
返回 list 中元素的个数
lrange