redis 数据类型之 List
List类型
List是一个链表结构,主要功能是push、pop,获取一个范围的所有值等等,操作中key理解为链表的名字。Redis的list类型其实就是一个每个子元素都是string类型的双向链表。我们可以通过push、pop操作链表的头部或者链表尾部添加元素,这样list既可以作为栈,又可以作为队列。
| 方法 | 概述 |
|---|---|
| lpush | 在key对应list的头部添加字符串元素,返回list中元素的个数 |
| lrange | 获取list中的元素 |
| rpush | 在key对应的list尾部添加元素 |
| linsert | 在key对应list的特定位置前或后添加字符串 |
| lset | 更改list中指定下标的元素,返回ok表示设置成功 |
| lrem | 从key对应list中删除n个和value相同的元素(n<0 从尾部删除,n=0 全部删除,n>0从头部删除。) |
| ltrim | 保留list中指定范围的数据,其他的删除 |
| lpop | 从list的头部删除元素,并返回该元素 |
| rpop | 从list尾部删除元素,并返回该元素 |
| rpoplpush | 从第一个list的尾部删除元素,并添加到第二个list的头部 |
| lindex | 返回名称为key的list中index位置的元素 |
| llen | 返回指定key对应list的长度 |
1.lpush方法:在key对应list的头部添加字符串元素,返回list中元素的个数
127.0.0.1:6379> lpush list1 zhangsan
(integer) 1
127.0.0.1:6379> lpush list1 lisi
(integer) 2
127.0.0.1:6379> lpush list1 wangwu
2.lrange方法:获取list中的元素
127.0.0.1:6379> lrange list1 0 -1 # 0 -1 范围 即为所有
1) "wangwu"
2) "lisi"
3) "zhangsan"
3.rpush方法:在key对应的list尾部添加元素
127.0.0.1:6379> rpush list1 zhaoliu
(integer) 4
127.0.0.1:6379> rpush list1 a1
(integer) 5
127.0.0.1:6379> lrange list1 0 -1
1) "wangwu"
2) "lisi"
3) "zhangsan"
4) "zhaoliu"
5) "a1"
这边可以看到,结构和你预先不一样,这是因为List的数据结构原因,会单独写一篇来详解redis的5中类型数据结构问题。
4.linsert方法:在key对应list的特定位置前或后添加字符串
格式:linsert list before/after 列表已有元素 新元素
127.0.0.1:6379> lrange list1 0 -1
1) "wangwu"
2) "lisi"
3) "zhangsan"
4) "zhaoliu"
5) "a1"
127.0.0.1:6379> linsert list1 before wangwu first
(integer) 6
127.0.0.1:6379> lrange list1 0 -1
1) "first"
2) "wangwu"
3) "lisi"
4) "zhangsan"
5) "zhaoliu"
6) "a1"
127.0.0.1:6379> linsert list1 after first second
(integer) 7
127.0.0.1:6379> lrange list1 0 -1
1) "first"
2) "second"
3) "wangwu"
4) "lisi"
5) "zhangsan"
6) "zhaoliu"
7) "a1"
5.lset方法,更改list中指定下标的元素,返回ok表示设置成功 注意 下标从0开始
127.0.0.1:6379> lset list1 2 third
OK
127.0.0.1:6379> lrange list1 0 -1
1) "first"
2) "second"
3) "third"
4) "fourth"
5) "zhangsan"
6) "zhaoliu"
6.lrem方法:从key对应list中删除n个和value相同的元素(n<0 从尾部删除,n=0 全部删除,n>0从头部删除。)
127.0.0.1:6379> lrange list2 0 -1
1) "eee"
2) "ddd"
3) "aaa"
4) "bbb"
5) "ccc"
6) "aaa"
7) "aaa"
8) "ccc"
9) "bbb"
10) "aaa"
127.0.0.1:6379> lrem list2 0 aaa
(integer) 4
127.0.0.1:6379> lrange list2 0 -1
1) "eee"
2) "ddd"
3) "bbb"
4) "ccc"
5) "ccc"
6) "bbb"
127.0.0.1:6379>
7.ltrim方法:保留list中指定范围的数据,其他的都不要了
格式:ltrim key start stop
127.0.0.1:6379> lrange list2 0 -1
1) "eee"
2) "ddd"
3) "bbb"
4) "ccc"
5) "ccc"
6) "bbb"
127.0.0.1:6379> ltrim list2 2 5
OK
127.0.0.1:6379> lrange list2 0 -1
1) "bbb"
2) "ccc"
3) "ccc"
4) "bbb"
8.lpop方法:从list的头部删除元素,并返回该元素 rpop方法:从list的尾部删除元素,并返回该元素
格式: lpop key
127.0.0.1:6379> lrange list2 0 -1
1) "bbb"
2) "ccc"
3) "ccc"
4) "bbb"
127.0.0.1:6379> lpop list2
"bbb"
127.0.0.1:6379> lrange list2 0 -1
1) "ccc"
2) "ccc"
3) "bbb"
9.rpoplpush方法:从第一个list的尾部删除元素,并添加到第二个list的头部
格式:rpoplpush source destination
127.0.0.1:6379> rpoplpush list3 list3_c
"aaa"
127.0.0.1:6379> lrange list3 0 -1
1) "ccc"
2) "bbb"
127.0.0.1:6379> lrange list3_c 0 -1
1) "aaa"
10.lindex方法 返回名称为key的list中index位置的元素
格式:lindex key index
127.0.0.1:6379> lrange list3 0 -1
1) "ccc"
2) "bbb"
127.0.0.1:6379> lindex list3 1
"bbb"
11.llen方法:返回指定key对应list的长度
格式: llen key
127.0.0.1:6379> lpush demo aaa bbb cccc dddd eee ffff
(integer) 6
127.0.0.1:6379> llen demo
(integer) 6

浙公网安备 33010602011771号