(10-5) redis-list 数据类型

(10-5) redis-list   数据类型


启动redis:
[root@baozi ~]# redis-server /etc/redis.conf
[root@baozi ~]# redis-cli
127.0.0.1:6379>


redis数据类型--list
1、list是一个有序的字符串列表,列表内部实现是使用双向列表(linked list实现的);
2、list还可以作为队列使用;
3、一个列表类型的键最多能容纳 2^32 - 1个元素;

[root@baozi ~]# redis-server /etc/redis.conf
[root@baozi ~]# redis-cli

//左边和右边插入
127.0.0.1:6379> lpush list1 a
(integer) 1
127.0.0.1:6379> lpush list1 b
(integer) 2
127.0.0.1:6379> lpush list1 c
(integer) 3
127.0.0.1:6379> rpush list1 x
(integer) 4
127.0.0.1:6379> rpush list1 y
(integer) 5
127.0.0.1:6379> rpush list1 z
(integer) 6
127.0.0.1:6379> 

//遍历列表所有元素
127.0.0.1:6379> lrange list1 0 5
1) "c"
2) "b"
3) "a"
4) "x"
5) "y"
6) "z"

//所有
127.0.0.1:6379> lrange list1 0 -1
1) "c"
2) "b"
3) "a"
4) "x"
5) "y"
6) "z"

//第一个到到第二个
127.0.0.1:6379> lrange list1 0 -2
1) "c"
2) "b"
3) "a"
4) "x"
5) "y"
127.0.0.1:6379>


//左边和右边弹出元素
127.0.0.1:6379> lpop list1
"c"
127.0.0.1:6379> rpop list1
"z"
127.0.0.1:6379> lrange list1 0 -1
1) "b"
2) "a"
3) "x"
4) "y"
127.0.0.1:6379> llen list1
(integer) 4
127.0.0.1:6379>

//从表尾开始删除第一个与a相等的元素
127.0.0.1:6379> lrange list1 0 -1
1) "a"
2) "b"
3) "a"
4) "x"
5) "y"
127.0.0.1:6379> lrem list1 -1 a
(integer) 1
127.0.0.1:6379> lrange list1 0 -1
1) "a"
2) "b"
3) "x"
4) "y"
127.0.0.1:6379>


//从表尾开始删除2个与b相等的元素
127.0.0.1:6379> lrange list1 0 -1
1) "b"
2) "a"
3) "b"
4) "x"
5) "y"
127.0.0.1:6379> lrem list1 -2 b
(integer) 2
127.0.0.1:6379> lrange list1 0 -1
1) "a"
2) "x"
3) "y"
127.0.0.1:6379>

//从表头开始删除与a相等的1个元素
127.0.0.1:6379> lrange list1 0 -1
1) "a"
2) "b"
3) "a"
4) "x"
5) "y"
127.0.0.1:6379> lrem list1 1 a
(integer) 1
127.0.0.1:6379> lrange list1 0 -1
1) "b"
2) "a"
3) "x"
4) "y"
127.0.0.1:6379>

//删除所有与a相等的元素
127.0.0.1:6379> lrange list1 0 -1
1) "a"
2) "b"
3) "a"
4) "x"
5) "y"
127.0.0.1:6379> lrem list1 0 a
(integer) 2
127.0.0.1:6379> lrange list1 0 -1
1) "b"
2) "x"
3) "y"
127.0.0.1:6379>


127.0.0.1:6379> lrange list1 0 -1
1) "b"
2) "x"
3) "y"

//查看指定角标的元素
127.0.0.1:6379> lindex list1 1
"x"

//修改指定角标的元素
127.0.0.1:6379> lset list1 0 a
OK
127.0.0.1:6379> lindex list1 0
"a"

//截取指定角标的列表
127.0.0.1:6379> ltrim list1 1 2
OK
127.0.0.1:6379> lrange list1 0 -1
1) "x"
2) "y"
127.0.0.1:6379>


//在指定元素前面或后面插入元素
127.0.0.1:6379> lrange list1 0 -1
1) "x"
2) "y"
127.0.0.1:6379> linsert list1 before y a
(integer) 3
127.0.0.1:6379> lrange list1 0 -1
1) "x"
2) "a"
3) "y"
127.0.0.1:6379> linsert list1 after y b
(integer) 4
127.0.0.1:6379> lrange list1 0 -1
1) "x"
2) "a"
3) "y"
4) "b"
127.0.0.1:6379>

//将元素从一个列表最右边移出,转移到另一个列表的最左边
127.0.0.1:6379> lrange list1 0 -1
1) "x"
2) "a"
3) "y"
4) "b"
127.0.0.1:6379> lrange list2 0 -1
(empty list or set)
127.0.0.1:6379> rpoplpush list1 list2
"b"
127.0.0.1:6379> lrange list1 0 -1
1) "x"
2) "a"
3) "y"
127.0.0.1:6379> lrange list2 0 -1
1) "b"
127.0.0.1:6379>


常用命令总结:
1、lpush/rpush/lpop/rpop
2、llen/lrange
3、lrem (lrem key count value)
	count>0:从表头到表尾搜索,移出count个与value相等的元素;
	count<0:从表尾到表头搜索,移出count个与value相等的元素;
	count=0:所有与value相等的元素被移出;
4、lindex/lset/ltrim/linsert
5、rpoplpush:将元素从一个列表最右边转移到另一个列表的最左边。



你可能感兴趣的:(数据,10-5,redis-list)