数据类型:列表类型(list)

列表数据类型(List)

特色

一、元素是字符串类型
二、列表头尾增删快,中间增删慢,增删元素是常态
三、元素可重复
四、最多可包含2^32 -1个元素
五、索引同python列表
python

头尾压入元素(LPUSH | RPUSH)

一、LPUSH key value #(left头部压入)mysql

二、RPUSH key value #(right尾部压入)redis

127.0.0.1:6379> LPUSH mylist1 0 1 2 3 4 (integer) 5
127.0.0.1:6379> LRANGE mylist1 0 -1
1) "4"
2) "3"
3) "2"
4) "1"
5) "0"
127.0.0.1:6379> RPUSH mylist2 0 1 2 3 4 (integer) 5
127.0.0.1:6379> LRANGE mylist2 0 -1
1) "0"
2) "1"
3) "2"
4) "3"
5) "4"

 三查看|设置 列表元素

#1.查看(LRANGE)
 LRANGE key start stop # 查看列表中全部元素
LRANGE key 0 -1
#2.获取指定位置元素(LINDEX)
 LINDEX key index #3.设置指定位置元素的值(LSET)
 LSET key index value #4.获取列表长度(LLEN)
    LLEN key

 四头尾弹出元素(LPOP | RPOP)

1.LPOP key : 从列表头部弹出一个元素sql

2.RPOP key : 从列表尾部弹出一个元素django

3.RPOPLPUSH source destination : 从一个列表尾部弹出元素压入到另外一个列表头部ide

4.rpoplpush 尾部弹出 头部压入url

127.0.0.1:6379> LRANGE mylist1 0 -1
1) "4"
2) "3"
3) "2"
4) "1"
5) "8"
127.0.0.1:6379> LPOP mylist1 "4"
127.0.0.1:6379> RPOP mylist1 "8"
127.0.0.1:6379> LRANGE mylist1 0 -1
1) "3"
2) "2"
3) "1"
127.0.0.1:6379> RPOPLPUSH mylist1 mylist2 "1"
127.0.0.1:6379> LRANGE mylist1 0 -1
1) "3"
2) "2"
127.0.0.1:6379> LRANGE mylist2 0 -1
1) "1"
2) "0"
3) "1"
4) "2"

 移除指定元素(LREM)

LREM key count valuespa

  count>0:表示从头部开始向表尾搜索,移除与value相等的元素,数量为countcode

  count<0:表示从尾部开始向表头搜索,移除与value相等的元素,数量为countblog

  count=0:移除表中全部与value相等的值

127.0.0.1:6379> LRANGE mylist1 0 -1
1) "3"
2) "2"
127.0.0.1:6379> LPUSH mylist1 3 2 (integer) 4
127.0.0.1:6379> LRANGE mylist1 0 -1
1) "2"
2) "3"
3) "3"
4) "2"
127.0.0.1:6379> LREM mylist1 1 2 (integer) 1
127.0.0.1:6379> LRANGE mylist1 0 -1
1) "3"
2) "3"
3) "2"
127.0.0.1:6379> LREM mylist1 1 3 (integer) 1
127.0.0.1:6379> LRANGE mylist1 0 -1
1) "3"
2) "2"

 去除指定范围外元素(LTRIM)

LTRIM key start stop

127.0.0.1:6379> LRANGE mylist2 0 -1
1) "1"
2) "0"
3) "1"
4) "2"
5) "3"
6) "4"
127.0.0.1:6379> LTRIM mylist2 0 -2 OK 127.0.0.1:6379> LRANGE mylist2 0 -1
1) "1"
2) "0"
3) "1"
4) "2"
5) "3"

  例如:保存微博评论最后500条

    LTRIM user001:comments 0 499

列表中插入值(LINSERT)

LINSERT key BEFORE|AFTER pivot value

key和pivot不存在,不进行任何操做

127.0.0.1:6379> LRANGE mylist2 0 -1
1) "0"
2) "1"
3) "2"
4) "3"
5) "4"
127.0.0.1:6379> LINSERT mylist2 after 2 666 (integer) 6
127.0.0.1:6379> LINSERT mylist2 before 4 888 (integer) 7
127.0.0.1:6379> LRANGE mylist2 0 -1
1) "0"
2) "1"
3) "2"
4) "666"
5) "3"
6) "888"
7) "4"

 八阻塞弹出(BLPOP | BRPOP)

BLPOP key timeout #没有元素的时候就阻塞了

BRPOP key timeout

一、若是弹出的列表不存在或者为空,就会阻塞

二、超时时间设置为0,就是永久阻塞,直到有数据能够弹出

三、若是多个客户端阻塞再同一个列表上,使用First In First Service原则,先到先服务

127.0.0.1:6379> BLPOP mylist2 0 1) "mylist2"
2) "3"
127.0.0.1:6379> BLPOP mylist2 0 1) "mylist2"
2) "2"
127.0.0.1:6379> BLPOP mylist2 0 1) "mylist2"
2) "1"
127.0.0.1:6379> BLPOP mylist2 0 # 阻塞了

 列表经常使用命令总结

#
1、LPUSH key value1 value2 2、RPUSH key value1 value2 3、RPOPLPUSH source destination 四、LINSERT key after|before value newvalue #
5、LRANGE key start stop 6、LLEN key #
7、LPOP key 8、RPOP key 9、BLPOP key timeout 10、BRPOP key timeout 十一、LREM key count value#(根据什么删除)
十二、LTRIM key start stop#(保留范围内元素) #
1三、LSET key index newvalue

 Python操做列表

import redis r = redis.Redis(host='192.168.43.49',port=6379,db=0) # ['mysql','redis']
r.lpush('pylist','redis','mysql') # ['mysql','redis','django','spider']
r.rpush('pylist','django','spider') # ['mysql','redis','django','spider','AI']
r.linsert('pylist','after','spider','AI') # 5
print(r.llen('pylist')) # ['redis','django','spider']
r.lpop('pylist') r.rpop('pylist') # ['redis','django','spider']
print(r.lrange('pylist',0,-1)) # ['redis','spider']
r.lrem('pylist',0,'django') # 返回True,['redis']
r.ltrim('pylist',0,0) # 返回True,['spiderman']
r.lset('pylist',0,'spiderman') r.delete('pylist')

练习:

一、查看全部的键

  keys *

二、向列表 spider::urls 中以RPUSH放入以下几个元素:01_baidu.com、02_taobao.com、03_sina.com、04_jd.com、05_xxx.com

  RPUSH spider::urls 01_baidu.com 02_taobao.com 03_sina.com 04_jd.com 05_xxx.com

三、查看列表中全部元素

  LRANGE spider::urls 0 -1

四、查看列表长度

  LLEN spider::urls

五、将列表中01_baidu.com 改成 01_tmall.com

  LSET spider::urls 0 01_tmall.com

六、在列表中04_jd.com以后再加1个元素 02_taobao.com

  LINSERT spider::urls after 04_jd.com 02_taobao.com

七、弹出列表中的最后一个元素

  RPOP spider::urls

八、删除列表中全部的 02_taobao.com

  LREM spider::urls 0 02_taobao.com

九、剔除列表中的其余元素,只剩前3条

  LTRIM spider::urls 0 2

相关文章
相关标签/搜索