`

Redis基本数据类型介绍及相关方法介绍笔记--List类型

阅读更多

Redis五种数据类型之 List 类型

List是一个链表结构,主要功能push,pop获取一个范围的所有值。key可以理解为链表的名字。list类型是一个每个元素都是String类型的双向链表,可用push/pop方法从头部或尾部添加或删除元素 既可做栈也可作队列。栈先进后出,队列后进先出。

下面切入正题咯:

 常用命令总结(自用总结 不喜勿喷):

1.lpush方法(相当于一个栈)

在对应key对应list的头部添加/压入一个元素

后进先出

eg见2

 

2.lrange方法

在对应list取出 0代表从开始第一个元素 -1代表从尾部开始第一个元素 0 -1 代表从第一个元素到最后一个元素都取出来。注:后面的两个数字代表取的位置

127.0.0.1:6379> lpush testlist "hello"

(integer) 1

127.0.0.1:6379> lpush testlist "harbor"

(integer) 2

127.0.0.1:6379> lrange testlist 0 -1

1) "harbor"

2) “hello"

127.0.0.1:6379> lpush testlist "chung"

(integer) 3

127.0.0.1:6379> lrange testlist 0 -1

1) "chung"

2) "harbor"

3) "hello"

127.0.0.1:6379> lrange testlist 0 1

1) "chung"

2) "harbor"

127.0.0.1:6379> lrange testlist 1 2

1) "harbor"

2) "hello"

127.0.0.1:6379> lrange testlist 1 3

1) “harbor"

2) “hello"

示意图为:

栈          头

|              |

|3.chung |

|2.harbor|

|1.hello   |

|             |

             尾

 

3.rpush方法(相当于队列)

从尾部压入一个新元素(尾部添加)

先进先出

127.0.0.1:6379> rpush testlist2 "Harbor"

(integer) 1

127.0.0.1:6379> rpush testlist2 "Chung"

(integer) 2

127.0.0.1:6379> lrange testlist2 0 -1

1) "Harbor"

2) “Chung"

 

4.linsert方法

在key的对应list的特定位置添加元素

127.0.0.1:6379> linsert testlist2 before "Chung" " zhong "

(integer) 3

127.0.0.1:6379> lrange testlist2 0 -1

1) "Harbor"

2) " zhong "

3) “Chung"

规定 栈的尾—>头 定义为前

示意图为:

栈           头      下标

|               |   前   0

|2.Harbor |   ^     1

|1.Chung |    |     2

|               |    |    ...

|               |   后 etc

              尾

 

5.lset方法

将list中制定下标的值替换为指定的新值

127.0.0.1:6379> lset testlist2 1 "blue"

OK

127.0.0.1:6379> lrange testlist2 0 -1

1) "Harbor"

2) "blue"

3) "Chung"

 

6.lrem方法

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

127.0.0.1:6379> lrange testlist3 0 -1

 1) "world"

 2) "world"

 3) "world"

 4) "world"

 5) "hello"

 6) "hello"

 7) "hello"

 8) "world"

 9) "world"

10) "world"

11) "hello"

127.0.0.1:6379> lrem testlist3 2 "world"

(integer) 2

127.0.0.1:6379> lrange testlist3 0 -1

1) "world"

2) "world"

3) "hello"

4) "hello"

5) "hello"

6) "world"

7) "world"

8) "world"

9) “hello"

127.0.0.1:6379> lrem testlist3 3 "world"

(integer) 3

127.0.0.1:6379> lrange testlist3 0 -1

1) "hello"

2) "hello"

3) "hello"

4) "world"

5) “world"

6) “hello”

 

--n=0的情况:

127.0.0.1:6379> lrem testlist3 0 "world"

(integer) 2

127.0.0.1:6379> lrange testlist3 0 -1

1) "hello"

2) "hello"

3) "hello"

 4) “hello"

--删除0个元素的情况(list中未找到该类元素):

127.0.0.1:6379> lrem testlist3 0 "world"

 (integer) 0

 

7.ltrim方法

保留指定key对应list的值范围内的数据,其余全部删除

127.0.0.1:6379> lrange testlist3 0 -1

1) "Green"

2) "Red"

3) "red"

4) "Blue"

5) "hello"

6) “hello"

127.0.0.1:6379> ltrim testlist3 0 -3

OK

127.0.0.1:6379> lrange testlist3 0 -1

1) "Green"

2) "Red"

3) “red"

4) "Blue"

 

8.lpop方法

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

127.0.0.1:6379> lpop testlist3 

"Green"

127.0.0.1:6379> lrange testlist3 0 -1

1) "Red"

2) "red"

3) "Blue"

 

9. rpop方法

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

127.0.0.1:6379> rpop testlist3 

"Blue"

127.0.0.1:6379> lrange testlist3 0 -1

1) "Red"

2) "red"

 

10.rpoplpush方法

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

注:如果第二个list不存在的话 会创建一个新的list并赋值

如果需要判断第二个list存在才执行操作的话 请使用rpoplpushx方法

127.0.0.1:6379> lrange testlist3 0 -1

1) "Red"

2) "red"

127.0.0.1:6379> lrange testlist 0 -1

1) "Red"

2) "blue"

3) "hello"

127.0.0.1:6379> rpoplpush testlist3 testlist

"red"

127.0.0.1:6379> lrange testlist3 0 -1

1) "Red"

127.0.0.1:6379> lrange testlist 0 -1

1) "red"

2) "Red"

3) "blue"

4) "hello

 

11.lindex方法

返回名称为key的list中index位置的元素

127.0.0.1:6379> lrange testlist 0 -1

1) "red"

2) "Red"

3) "blue"

4) "hello"

127.0.0.1:6379> lindex testlist 1

"Red"

127.0.0.1:6379> lindex testlist 3

"hello"

127.0.0.1:6379> lindex testlist 2

"blue"

 

12.llen方法

返回key对应list的长度

127.0.0.1:6379> lrange testlist 0 -1

1) "red"

2) "Red"

3) "blue"

4) "hello"

127.0.0.1:6379> llen testlist

 (integer) 4

分享到:
评论

相关推荐

Global site tag (gtag.js) - Google Analytics