美文网首页
redis中listi类型命令

redis中listi类型命令

作者: 小鱼_a563 | 来源:发表于2020-09-23 23:58 被阅读0次

1.基本命令(所有的list命令都是l加基本命令)

1.设置list值,获取list值,简单删除
myredis:0>lpush list one      从左别开始设置list 值为 one
"1"
myredis:0>lpush list two
"2"
myredis:0>lpush list three
"3"
myredis:0>lrange list 0 -1      获取list的值
 1)  "three"
 2)  "two"
 3)  "one"
myredis:0>rpush list four       #从右别开始设置list 值为 four
"4"
myredis:0>lrange list 0 -1
 1)  "three"
 2)  "two"
 3)  "one"
 4)  "four"
myredis:0>lpop list      #从左边开始删除list 值
"three"
myredis:0>rpop list      #从右边开始删除list 值
"four"
myredis:0>lrange list 0 -1
 1)  "two"
 2)  "one"
###################################################################################
2.Lindex(获取list下标的值,下标也是从0开始)
myredis:0>lrange list 0 -1
 1)  "two"
 2)  "one"
myredis:0>lindex list 2      #获取下标为2的值
null
myredis:0>lindex list 1       #获取下标为1的值
"one"
###################################################################################
3.Llen(获取list的长度)
myredis:0>llen list
"2"

###################################################################################
4.lrem(删除指定内容的值)
myredis:0>lrange list 0 -1
 1)  "five"
 2)  "two"
 3)  "two"
myredis:0>lrem list 1 two      #删除指定内容的1个值
"1"
myredis:0>lrange list 0 -1
 1)  "five"
 2)  "two"
myredis:0>lpush list two 
"3"
myredis:0>lrem list 2 two
"2"
myredis:0>lrange list 0 -1      #删除指定内容的2个值
 1)  "five"
###################################################################################
ltrim截取指定下标元素的值
myredis:0>lrange list 0 -1     # 获取list的值
 1)  "three"
 2)  "two"
 3)  "one"
myredis:0>lrange list 0 -1      #截取指定下标元素的值
 1)  "three"
 2)  "two"
###################################################################################
rpoplpush :移动最右边(最后一个)的元素到新的列表中
myredis:0>lrange list 0 -1
 1)  "four"
 2)  "three"
 3)  "two"
 4)  "one"
myredis:0>rpoplpush list otherlist       #移动最右边(最后一个)的元素到新的列表中
"one"
myredis:0>lrange list 0 -1
 1)  "four"
 2)  "three"
 3)  "two"
myredis:0>lrange lotherist 0 -1

myredis:0>lrange otherlist 0 -1
 1)  "one"
###################################################################################
lset(根据下标更新对应的值,如果不存在会报错)
myredis:0>exists list      #判断是否有list这个key
"0"
myredis:0>lset list 0 one      #如果没有key,lset会报错
"ERR no such key"
myredis:0>lpush list one      
"1"
myredis:0>lpush list two
"2"
myredis:0>lrange list 0 -1      
 1)  "two"
 2)  "one"
myredis:0>lset list 1 tow      #如果有list,并且下标存在,lset会替换下标的值
"OK"
myredis:0>lrange list 0 -1
 1)  "two"
 2)  "tow"
myredis:0>lset list 3 tow       #如果有list,并且下标不存在,lset会报错(提升下标越界了)
"ERR index out of range"
###################################################################################
linsert(在list集合中指定的元素前面或者后面添加元素)
myredis:0>lpush list hello
"1"
myredis:0>lpush list ,word
"2"
myredis:0>lrange list 0 -1
 1)  ",word"
 2)  "hello"
myredis:0>linsert list before ",word" other 
"3"
myredis:0>lrange list 0 -1
 1)  "other"
 2)  ",word"
 3)  "hello"
myredis:0>linsert list after "hello" java:say
"4"
myredis:0>lrange list 0 -1
 1)  "other"
 2)  ",word"
 3)  "hello"
 4)  "java:say"

2.总结

  • list是一个双向链表。可以左右插入值
  • lpush是往前添加元素,rpush是往后添加数据
  • 如果key不存在,就创建新链表,如果key存在就新增内容
  • 在list两边插入数据比较快,效率高。中间元素相对比较低

相关文章

网友评论

      本文标题:redis中listi类型命令

      本文链接:https://www.haomeiwen.com/subject/gqdiyktx.html