14、Python3 Redis List

Redis列表是简单的字符串列表,按照插入顺序排序。你可以添加一个元素到列表的头部(左边)或者尾部(右边)。

1、增加

List基本命令:

lpush(key,values)   # 从左边增加
rpush(key,values)   # 从右边增加

key对应的list中添加元素,每个新的元素都添加到列表的最左边(最右边)如:

import redis
import time

pool = redis.ConnectionPool(host='localhost', port=6379, decode_responses=True)
r = redis.Redis(connection_pool=pool)

# 从左边增加
r.lpush("list1", 11, 22, 33)
print(r.lrange('list1', 0, -1))
# 保存顺序为: 33,22,11

# 从右边增加
r.rpush("list2", 11, 22, 33)  # 表示从右向左操作
print(r.llen("list2"))  # 列表长度
print(r.lrange("list2", 0, 3))  # 切片取出值,范围是索引号0-3

2、往已经有的key的列表的左边/右边添加元素–没有的话无法创建

lpushx(key, value)
rpushx(key, value)

key对应的list中添加元素,只有key已经存在时,值添加到列表的最左边/最右边
示例:

r.lpushx("list10", 10)   # 这里list10不存在
print(r.llen("list10"))  # 0
print(r.lrange("list10", 0, -1))  # []

r.lpushx("list2", 77)   # 这里"list2"之前已经存在,往列表最左边添加一个元素,一次只能添加一个
print(r.llen("list2"))  # 列表长度
print(r.lrange("list2", 0, -1)) # 切片取出值,范围是索引号0到-1(最后一个元素

r.rpushx("list2", 99)   # 这里"foo_list1"之前已经存在,往列表最右边添加一个元素,一次只能添加一个
print(r.llen("list2"))  # 列表长度
print(r.lrange("list2", 0, -1)) # 切片取出值,范围是索引号0到-1(最后一个元素)

3、新增(固定索引号位置插入元素)

linsert(key, where, refvalue, value))

key对应的列表的某一个值前或后插入一个新值
参数:

  • key:rediskey
  • where:BEFOREAFTER
  • refvalue:标杆值,即:在它前后插入数据
  • value:要插入的数据

示例:

r.linsert("list2", "before", "11", "00")   # 往列表中左边第一个出现的元素"11"前插入元素"00"
print(r.lrange("list2", 0, -1))   # 切片取出值,范围是索引号0-最后一个元素

4、修改(指定索引号进行修改)

r.lset(key, index, value)

key对应的list中的某一个索引位置重新赋值
参数:

  • key:rediskey
  • index:list的索引位置
  • value:要设置的值

示例

r.lset("list2", 0, -11)    # 把索引号是0的元素修改成-11
print(r.lrange("list2", 0, -1))

5、删除(指定值进行删除)

r.lrem(key, value, num)

key对应的list中删除指定的值
参数:

  • key:rediskey
  • value:要删除的值
  • num:num=0,删除列表中所有的指定值;num=2,从前到后,删除2个; num=1,从前到后,删除左边第1个num=-2,从后向前,删除2个

示例:

r.lrem("list2", "11", 1)    # 将列表中左边第一次出现的"11"删除
print(r.lrange("list2", 0, -1))
r.lrem("list2", "99", -1)    # 将列表中右边第一次出现的"99"删除
print(r.lrange("list2", 0, -1))
r.lrem("list2", "22", 0)    # 将列表中所有的"22"删除
print(r.lrange("list2", 0, -1))

6、删除并返回

lpop(key)  # 从左边删除并返回
rpop(key)  # 从右边删除并返回

key对应的列表的左侧/右侧获取第一个元素并在列表中移除,返回值则是第一个元素
示例:

r.lpop("list2")    # 删除列表最左边的元素,并且返回删除的元素
print(r.lrange("list2", 0, -1))
r.rpop("list2")    # 删除列表最右边的元素,并且返回删除的元素
print(r.lrange("list2", 0, -1))

7、删除索引之外的值

ltrim(key, start, end)

key对应的列表中移除没有在start-end索引之间的值
参数:

  • key:rediskey
  • start:索引的起始位置
  • end:索引结束位置

示例:

r.ltrim("list2", 0, 2)    # 删除索引号是0-2之外的元素,值保留索引号是0-2的元素
print(r.lrange("list2", 0, -1))

8、取值(根据索引号取值)

lindex(key, index)

key对应的列表中根据索引获取列表元素

print(r.lindex("list2", 0))  # 取出索引号是0的值

9、移动 – 元素从一个列表移动到另外一个列表

rpoplpush(src, dst)  #从一个列表取出最右边的元素,同时将其添加至另一个列表的最左边
brpoplpush(src, dst, timeout=0)  #从一个列表的右侧移除一个元素并将其添加到另一个列表的左侧

参数:

  • src:取出并要移除元素的列表对应的key
  • dst:要插入元素的列表对应的key
  • timeout:当src对应的列表中没有数据时,阻塞等待其有数据的超时时间(秒),0 表示永远阻塞

示例:

r.rpoplpush("list1", "list2")
print(r.lrange("list2", 0, -1))

r.brpoplpush("list1", "list2", timeout=2)
print(r.lrange("list2", 0, -1))
上一篇:Python11之列表3(列表常用操作符,以及常用的内置函数)


下一篇:jqGrid多行表头