python redis详解(五)LIST链表数组

LIST

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

类似于python中的list

数据结构中的链表结构

python redis提供的方法与命令行基本一致, 具体的函数及含义可以参考给定的命令行来使用, 对应的函数名称与命令名称基本一致

命令

首先了解官方的命令, 具体如下:

1 BLPOP key1 [key2 ] timeout 移出并获取列表的第一个元素, 如果列表没有元素会阻塞列表直到等待超时或发现可弹出元素为止。
2 BRPOP key1 [key2 ] timeout 移出并获取列表的最后一个元素, 如果列表没有元素会阻塞列表直到等待超时或发现可弹出元素为止。
3 BRPOPLPUSH source destination timeout 从列表中弹出一个值,将弹出的元素插入到另外一个列表中并返回它; 如果列表没有元素会阻塞列表直到等待超时或发现可弹出元素为止。
4 LINDEX key index 通过索引获取列表中的元素
5 LINSERT key BEFORE|AFTER pivot value 在列表的元素前或者后插入元素
6 LLEN key 获取列表长度
7 LPOP key 移出并获取列表的第一个元素
8 LPUSH key value1 [value2] 将一个或多个值插入到列表头部
9 LPUSHX key value 将一个或多个值插入到已存在的列表头部
10 LRANGE key start stop 获取列表指定范围内的元素
11 LREM key count value 移除列表元素
12 LSET key index value 通过索引设置列表元素的值
13 LTRIM key start stop 对一个列表进行修剪(trim),就是说,让列表只保留指定区间内的元素,不在指定区间之内的元素都将被删除。
14 RPOP key 移除并获取列表最后一个元素
15 RPOPLPUSH source destination 移除列表的最后一个元素,并将该元素添加到另一个列表并返回
16 RPUSH key value1 [value2] 在列表中添加一个或多个值
17 RPUSHX key value 为已存在的列表添加值


python-redis

python操作redis LIST类型提供一些函数, 函数名称与命令基本一致,可以参考命令进行使用

1.lset(name, index, value)
通过索引设置值

print rediscli.lset("pm1", 0, "tr1")

2.llen(name)
name对应的list元素的个数

3.lindex(name, index)
在name对应的列表中根据索引获取列表元素

print rediscli.lindex('pm1', 0)

4.lrange(name, start, end)

	在name对应的列表分片获取数据

	start,索引的起始位置
	end,索引结束位置
	
	
	print rediscli.lrange('pm1', 0, 7)
	输出: ['tr1', 'x2', 'x1', 'tr1', 'x2', 'x1']

5.lpush(name,values)

在list左边添加value

print rediscli.lpush('pm1', 'x1', 'x2', 'x3')
print rediscli.lindex('pm1', 0)

输出:
6
x3

6.rpush(name, values)
在list右边添加values

print rediscli.lrange('pm1', 0, 7)
print rediscli.rpush('pm1', 'rt1')
print rediscli.lrange('pm1', 0, 7)

输出:
['tr1', 'x2', 'x1', 'tr1', 'x2', 'x1']
7
['tr1', 'x2', 'x1', 'tr1', 'x2', 'x1', 'rt1']

7.lpushx(name,value)
在list左边添加value,只有name已经存在时,值添加到列表的最左边

8.rpushx(name, value)
在list右边添加values 只有name已经存在时,值添加到列表的最右边

9.linsert(name, where, refvalue, value))

在name对应的列表的某一个值前或后插入一个新值, 如果有多个相同的值,则以最前面的为准

where  从哪里开始插入   	BEFORE或AFTER
refvalue, 标杆值,即:在它前后插入数据
value,   要插入的数据


print rediscli.linsert('pm1', 'AFTER','x2', 'A_x2')
print rediscli.lrange('pm1', 0, 9)

输出:
8
['tr1', 'x2', 'A_x2', 'x1', 'tr1', 'x2', 'x1', 'rt1']

10.lrem(name, count, value)

在name对应的list中删除指定的值

count删除的数目,次数

print rediscli.lrem('pm1', 1, 'x1')
print rediscli.lrange('pm1', 0, 9)
输出:
['tr1', 'x2', 'A_x2', 'tr1', 'x2', 'x1', 'rt1']

11.lpop(name)
从最左边抛出值

12.rpop(name)
从右边抛出值

print rediscli.lpop('pm1')
print rediscli.rpop('pm1')
print rediscli.lrange('pm1', 0, 9)

输出:

tr1
rt1
['x2', 'A_x2', 'tr1', 'x2', 'x1']

13.rpoplpush(src, dst)

从一个列表取出最右边的元素,同时将其添加至另一个列表的最左边

src,要取数据的列表的name
dst,要添加数据的列表的name

14.blpop(keys, timeout)

将多个列表排列,按照从左到右去pop对应列表的元素

keys,redis的name的集合
timeout,超时时间,当元素所有列表的元素获取完之后,阻塞等待列表内有数据的时间(秒), 0 表示永远阻塞
  1. brpop(keys, timeout)
    将多个列表排列,按照从右到左去pop对应列表的元素

16.brpoplpush(src, dst, timeout=0)

   从一个列表的右侧移除一个元素并将其添加到另一个列表的左侧

   src,取出并要移除元素的列表对应的name
   dst,要插入元素的列表对应的name
   timeout,当src对应的列表中没有数据时,阻塞等待其有数据的超时时间(秒),0 表示永远阻塞
   
   
print rediscli.brpoplpush('pm1', 'pm2')
print rediscli.lrange('pm1', 0, 9)
print rediscli.lrange('pm2', 0, 9)

输出:
x1
['x2', 'A_x2', 'tr1', 'x2']
['x1']


17.ltrim(name, start, end)
在name对应的列表中移除没有在start-end索引之间的值


示例程序

# coding:utf-8

import redis

rediscli = redis.Redis(host='192.168.137.18', port=6379, db=13)

print rediscli.lpush('pm1', 'x1', 'x2', 'x3')
print rediscli.lindex('pm1', 0)
print rediscli.lset("pm1", 0, "tr1")
print rediscli.llen('pm1')
print rediscli.lindex('pm1', 0)
print rediscli.lrange('pm1', 0, 7)
print rediscli.rpush('pm1', 'rt1')
print rediscli.lrange('pm1', 0, 7)
print rediscli.linsert('pm1', 'AFTER','x2', 'A_x2')
print rediscli.lrange('pm1', 0, 9)
print rediscli.lrem('pm1', 1, 'x1')
print rediscli.lrange('pm1', 0, 9)
print rediscli.lpop('pm1')
print rediscli.rpop('pm1')
print rediscli.lrange('pm1', 0, 9)
print rediscli.brpoplpush('pm1', 'pm2')
print rediscli.lrange('pm1', 0, 9)
print rediscli.lrange('pm2', 0, 9)

输出:

备注: 这里之前的实验拥有一部分的数据积累,因此可能与第一次运行的结果稍微有点不一样

7
x3
True
7
tr1
['tr1', 'x2', 'x1', 'x2', 'A_x2', 'tr1', 'x2']
8
['tr1', 'x2', 'x1', 'x2', 'A_x2', 'tr1', 'x2', 'rt1']
9
['tr1', 'x2', 'A_x2', 'x1', 'x2', 'A_x2', 'tr1', 'x2', 'rt1']
1
['tr1', 'x2', 'A_x2', 'x2', 'A_x2', 'tr1', 'x2', 'rt1']
tr1
rt1
['x2', 'A_x2', 'x2', 'A_x2', 'tr1', 'x2']
x2
['x2', 'A_x2', 'x2', 'A_x2', 'tr1']
['x2', 'x1']

你可能感兴趣的:(redis)