Chinaunix首页 | 论坛 | 博客
  • 博客访问: 873678
  • 博文数量: 72
  • 博客积分: 0
  • 博客等级: 民兵
  • 技术积分: 1693
  • 用 户 组: 普通用户
  • 注册时间: 2014-08-04 15:53
个人简介

主要从事Linux,云原生架构改造,服务网格,ELK,python,golang等相关技术。

文章分类

全部博文(72)

文章存档

2015年(52)

2014年(20)

分类: NOSQL

2015-06-04 17:31:48

List类型及操作

List是一个链表结构,主要功能是pushpop、获取一个范围的所有值等等,操作中key理解为链表名字。Redislist类型其实就是一个每个子元素都是string类型的双向链表。我们可以通过pushpop操作从链表的头部或者尾部添加删除元素,这样list既可以作为栈,又可以作为队列。

 

lpush

key对应list的头部添加字符串元素。

127.0.0.1:6379> lpush mylist "world"

(integer) 1

127.0.0.1:6379> lpush mylist "hello"

(integer) 2

127.0.0.1:6379> lrange mylist 0 1

1) "hello"

2) "world"

 

rpush

key对应list的尾部添加字符串元素。

127.0.0.1:6379> lpush mylist "world"

(integer) 1

127.0.0.1:6379> lpush mylist "hello"

(integer) 2

127.0.0.1:6379> lrange mylist 0 1

1) "hello"

2) "world"

 

linsert

key对应list的特定位置前或后添加字符串

127.0.0.1:6379> rpush mylist3 "world"

(integer) 1

127.0.0.1:6379> linsert mylist3 before "world" "hello" 在world的前面压入一个hello

(integer) 2

127.0.0.1:6379> LRANGE mylist3 0 -1

1) "hello"

2) "world"

 

 

Lset

设置list中指定下标的元素值。

127.0.0.1:6379> rpush mylist4 "hello"

(integer) 1

127.0.0.1:6379> lset mylist4 0 "world"

OK

127.0.0.1:6379> lrange mylist4 0 -1

1) "world"

下面我们看一下这个替换的例子

127.0.0.1:6379> lpush list5 one

(integer) 1

127.0.0.1:6379> lpush list5 two

(integer) 2

127.0.0.1:6379> lpush list5 three

(integer) 3

127.0.0.1:6379> lrange list5 0 -1

1) "three"

2) "two"

3) "one"

127.0.0.1:6379> lset list5 1 four 这里我们将第二个元素换掉

OK

127.0.0.1:6379> lrange list5 0 -1

1) "three"

2) "four"

3) "one"

 

lrem

key对应list中删除n个和value相同的元素。(n<0从尾删除,n=0全部删除)

127.0.0.1:6379> rpush mylist5 "hello"

(integer) 1

127.0.0.1:6379> rpush mylist5 "hello"

(integer) 2

127.0.0.1:6379> lrem mylist5 1 "hello"

(integer) 1

 

 

127.0.0.1:6379> lpush list5 one

(integer) 4

127.0.0.1:6379> lpush list5 one

(integer) 5

127.0.0.1:6379> lpush list5 one

(integer) 6

127.0.0.1:6379> lrange list5 0 -1

1) "one"

2) "one"

3) "one"

4) "three"

5) "four"

6) "one"

127.0.0.1:6379> lrem list5 3 "one" 删除三个”one“

(integer) 3

 

ltrim

保留指定key的值范围内的数据

127.0.0.1:6379> rpush mylist8 "one"

(integer) 1

127.0.0.1:6379> rpush mylist8 "two"

(integer) 2

127.0.0.1:6379> ltrim mylist8 1 -1

OK

127.0.0.1:6379> lrange mylist8 0 -1

1) "two"

 

lpop

list的头部删除元素,并返回删除元素

127.0.0.1:6379> lrange mylist 0 -1

1) "hello"

2) "world"

127.0.0.1:6379> lpop mylist

"hello"

127.0.0.1:6379> lrange mylist 0 -1

1) "world"

 

rpop

list的尾部删除元素,并返回删除元素

127.0.0.1:6379> lrange mylist2 0 -1

1) "world"

2) "hello"

127.0.0.1:6379> rpop mylist2

"hello"

127.0.0.1:6379> lrange mylist2 0 -1

1) "world"

 

rpoplpush

从第一个list的尾部移除元素并添加到第二个list的头部。

127.0.0.1:6379> lrange mylist4 0 -1

1) "world"

127.0.0.1:6379> lrange mylist3 0 -1

1) "hello"

2) "world"

127.0.0.1:6379> rpoplpush mylist3 mylist4

"world"

127.0.0.1:6379> lrange mylist3 0 -1

1) "hello"

127.0.0.1:6379> lrange mylist4 0 -1

1) "world"

2) "world"

 

lindex

返回名称为keylistindex位置的元素

127.0.0.1:6379> lrange mylist4 0 -1

1) "world"

2) "world"

127.0.0.1:6379> lindex mylist4 0

"world"

127.0.0.1:6379> lindex mylist4 1

"world"

 

llen

返回key对应list的长度

127.0.0.1:6379> llen mylist4 

(integer) 2

127.0.0.1:6379> llen mylist3

(integer) 1

 

阅读(3027) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~