乐趣区

Redis语法介绍之Lists

Lists(列表) 常用命令有:

一、增

127.0.0.1:6379> lpush list01 1 2 3 4 rr // 向列表左侧添加 5 个数据
(integer) 5
127.0.0.1:6379> lrange list01 0 -1 // 查询出类表所有数据 从上到下索引是 0, 1, 2 ...
1) "rr"
2) "4"
3) "3"
4) "2"
5) "1"
127.0.0.1:6379> rpush list02 0 1 2 3 4 // 向列表左侧添加数据
(integer) 5
127.0.0.1:6379> lrange list02 0 -1
1) "0"
2) "1"
3) "2"
4) "3"
5) "4"

二、删

127.0.0.1:6379> lpop list01 // 弹出最左侧数据,每次弹出一个
"rr"
127.0.0.1:6379> rpop list02 // 弹出右侧数据,每次弹出一个
"4"
127.0.0.1:6379> lrange list02 0 -1
1) "0"
2) "1"
3) "2"
4) "3"
127.0.0.1:6379> lrem list03 2 2 // LREM KEY_NAME COUNT VALUE 删除两个 2
(integer) 2 

三、改

127.0.0.1:6379> lrange list01 0 -1        
1) "5"                                    
2) "4"                                    
3) "3"                                    
4) "2"                                    
127.0.0.1:6379> lrange list02 0 -1        
1) "0"                                    
2) "1"                                    
3) "2"                                    
4) "3"                                    
127.0.0.1:6379> rpoplpush list01 list02   // 弹出 list01 的左边数据给列表 list02
"2"                                       
127.0.0.1:6379> lrange list02 0 -1        
1) "2"                                    
2) "0"                                    
3) "1"                                    
4) "2"                                    
5) "3"                                    
127.0.0.1:6379> lrange list01 0 -1        
1) "5"                                    
2) "4"                                    
3) "3"                                    
127.0.0.1:6379> lset list01 0 x // 设置索引 0 的值为 x          
OK                                        
127.0.0.1:6379> lrange list01 0 -1        
1) "x"                                    
2) "4"                                    
3) "3"                                    
127.0.0.1:6379> linsert list01 before x y // 在 x 前插入 y
(integer) 4                               
127.0.0.1:6379> lrange list01 0 -1        
1) "y"                                    
2) "x"                                    
3) "4"                                    
4) "3"                                    
127.0.0.1:6379> linsert list01 after x z  // 在 x 后插入 y
(integer) 5                               
127.0.0.1:6379> lrange list01 0 -1
 1) "7"
 2) "6"
 3) "5"
 4) "4"
 5) "3"
 6) "2"
 7) "1"
 8) "4"
 9) "3"
10) "2"
11) "1"
127.0.0.1:6379> ltrim list01 2 5 // 截取索引 2 到 5 的值 并重新赋值给列表
OK
127.0.0.1:6379> lrange list01 0 -1
1) "5"
2) "4"
3) "3"
4) "2"

四、查

127.0.0.1:6379> lindex list02 1 // 输出索引 1 的值
"1"
127.0.0.1:6379> lindex list02 4
(nil)
127.0.0.1:6379> lindex list02 3
"3"
127.0.0.1:6379> llen list02 // 返回列表的长度
(integer) 4

五、性能总结

  • 是一个字符串链表,left、right 都可以插入添加
  • 如果键不存在,创建新的链表
  • 如果键已存在,新增内容
  • 链表的操作无论是头和尾效率都极高,但是假如是对中间元素进行操作,效率就很惨淡了
退出移动版