分享:nosql数据库之redis数据库管理(list类型)

发布时间:2021-01-17编辑:脚本学堂
本文介绍了nosql数据库之redis数据库管理的相关内容,nosql数据库中list类型的用法,有需要的朋友参考下。

本节内容:
nosql数据库之redis数据库管理(list类型)

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

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

复制代码 代码示例:
redis 127.0.0.1:6379> lpush mylist "world" 
(integer) 1 
redis 127.0.0.1:6379> lpush mylist "hello" 
(integer) 2 
redis 127.0.0.1:6379> lrange mylist 0 -1 
1) "hello" 
2) "world" 

0代表头部第一个元素,-1代表尾部第一个元素。lrange mylist 0 -1表示从list中头第一个元素一直到尾第一个元素依次取出来,即第一个元素取到最后一个元素。
rpush:在key对应list的尾部添加字符串元素。
 

复制代码 代码示例:
redis 127.0.0.1:6379> rpush mylist2 "world" 
(integer) 1 
redis 127.0.0.1:6379> rpush mylist2 "hello" 
(integer) 2 
redis 127.0.0.1:6379> lrange mylist2 0 -1 
1) "world" 
2) "hello"

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

复制代码 代码示例:
redis 127.0.0.1:6379> rpush mylist3 "world" 
(integer) 1 
redis 127.0.0.1:6379> linsert mylist3 before "world "hello" 
(integer) 2 
redis 127.0.0.1:6379> lrange mylist3 0 -1 
1) "hello" 
2) "world" 

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

复制代码 代码示例:
redis 127.0.0.1:6379> rpush mylist4 "hello" 
(integer) 1 
redis 127.0.0.1:6379> lset mylist4 0 "world" 
OK 
redis 127.0.0.1:6379> lrange mylist4 0 -1 
1) "world" 

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

复制代码 代码示例:
redis 127.0.0.1:6379> rpush mylist5 "hello" 
(integer) 1 
redis 127.0.0.1:6379> rpush mylist5 "hello" 
(integer) 2 
redis 127.0.0.1:6379> lrem mylist5 1 "hello"  //从mylist5中删除1个和hello相同的元素 
(integer) 1  //代表删除元素的个数 

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

复制代码 代码示例:
redis 127.0.0.1:6379> rpush mylist8 "one" 
(integer) 1 
redis 127.0.0.1:6379> rpush mylist8 "two" 
(integer) 2 
redis 127.0.0.1:6379> ltrim mylist8 1 -1 
(integer) 1 
redis 127.0.0.1:6379> lrange mylist8 0 -1 
1) "two" 

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

复制代码 代码示例:
redis 127.0.0.1:6379> lrange mylist 0 -1 
1) "hello" 
2) "world" 
redis 127.0.0.1:6379> lpop mylist 
"hello" 
redis 127.0.0.1:6379> lrange mylist 0 -1 
1) "world" 

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

复制代码 代码示例:
redis 127.0.0.1:6379> lrange mylist2 0 -1 
1) "hello" 
2) "world" 
redis 127.0.0.1:6379> rpop mylist2 
"world" 
redis 127.0.0.1:6379> lrange mylist2 0 -1 
1) "hello" 

lists类型

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

复制代码 代码示例:
redis 127.0.0.1:6379> lrange mylist5 0 -1 
1) "three" 
2) "hello" 
redis 127.0.0.1:6379> lrange mylist6 0 -1 
1) "hello" 
2) "foo" 
redis 127.0.0.1:6379> rpoplpush mylist5 mylist6 
"hello" 
redis 127.0.0.1:6379> lrange mylist5 0 -1 
1) "three" 
redis 127.0.0.1:6379> lrange mylist6 0 -1 
1) "hello" 
2) "hello" 
3) "foo" 

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

复制代码 代码示例:
redis 127.0.0.1:6379> lrange mylist5 0 -1 
1) "three" 
2) "foo" 
redis 127.0.0.1:6379> lindex mylist5 0 
"three" 
redis 127.0.0.1:6379> lindex mylist5 1 
"foo" 

llen:返回key对应list的长度
 

复制代码 代码示例:
redis 127.0.0.1:6379> lrange mylist6 0 -1 
1) "hello" 
2) "hello" 
3) "foo" 
redis 127.0.0.1:6379> llen mylist6 
(integer) 3