Python操作Redis
目录
- Python操作Redis
- 普通连接
- 连接池连接
- 通用操作
- 字符串操作
- Hash操作
- List操作
普通连接
每次连接都会创建新的连接
import redisconn = redis.Redis(host='127.0.0.1',port=6379,db=0, password=None,decode_responses=True
)
连接池连接
连接池会维护一组可重用的连接,避免频繁的打开和关闭
import redisPOOL = redis.ConnectionPool(max_connections=10,host='127.0.0.1',port=6379,decode_responses=True)conn = redis.Redis(connection_pool=POOL)
conn.set('name','123')
res=conn.get('name')
print(res)
conn.close()
通用操作
命令 | 描述 |
---|
delete(*names) | 删除一个或多个键 |
exists(name) | 检查键是否存在 |
keys(pattern='*') | 根据模式匹配获取键名列表 |
expire(name, time) | 设置键的过期时间(秒) |
rename(src, dst) | 重命名键 |
move(name, db) | 将键移动到另一个数据库 |
randomkey() | 随机返回一个键名 |
type(name) | 获取键的数据类型 |
字符串操作
命令 | 描述 |
---|
ex | 过期时间(秒) |
px | 过期时间(毫秒) |
nx | 如果设置为True,则只有键值不存在时,当前set操作才执行 |
xx | 如果设置为True,则只有键值存在时,当前set操作才执行 |
getset | 获取值然后再取出值 |
mset | 批量添加 |
mget | 批量取出 |
getrange | 获取字符的起始位置到结束为止,索引 |
strlen | 获取字符串长度 |
incr | 自增,或增加指定数 |
incrbyfloat | 浮点自增 |
derc | 自减,和incr相反 |
conn.set('key1', '123')
conn.get('key1')
conn.set('key2', '123', ex=10)
conn.setex('key3', 10, '123')
conn.set('key4', '123',nx=True)
conn.setnx('key5', '123')
conn.set('key6', '123',xx=True)
conn.set('name','123')
print(conn.get('name'))
print(conn.getset('name','456'))
print(conn.get('name'))
conn.set('name','123')
print(conn.get('name'))
print(conn.getrange('name',1,2))
conn.mset({'name1':'张三','name2':'李四','name3':'陈五'})
names = conn.mget(['name1','name2','name3'])
print(names)
conn.set('key1','111')
conn.setrange('key1',2,'666') conn.set('key2','123')
print(conn.getrange('key2',1,2))
conn.set('key1','111')
print(conn.strlen('key1'))
conn.set('key1','1')
print(conn.incr('key1'))
conn.set('float_key', '1.5')
new_value = conn.incrbyfloat('float_key', 3.5)
print(new_value)
Hash操作
命令 | 描述 |
---|
hset(name, key, value) | 设置指定字段的值 |
hget(name, key) | 获取指定字段的值 |
hmget(name, keys, *args) | 获取一个或多个字段的值 |
hgetall(name) | 获取所有字段和值 |
hlen(name) | 获取字段数量 |
hkeys(name) | 获取所有字段 |
hvals(name) | 获取所有值 |
hexists(name, key) | 检查字段是否存在 |
hdel(name, *keys) | 删除一个或多个字段 |
hincrby(name, key, amount=1) | 字段值递增指定量 |
hincrbyfloat(name, key, amount=1.0) | 字段值递增指定浮点数量 |
hscan(name, cursor=0, match=None, count=None) | 迭代哈希表中的键值对,cursor:游标位置 默认0 ,count:最大返回数 ,match:匹配模式 |
hscan_iter(name, match=None, count=None) | 迭代哈希表中的键值对(返回迭代器) |
conn.hset('A1','name','张三')
conn.hset('A1','age','18')
conn.hset('A1','name','张三')
print(conn.hmget('A1','name'))
conn.hset('A1','name','张三')
conn.hset('A1','age','18')
print(conn.hmget('A1',['name','age']))
conn.hset('A1','name','张三')
conn.hset('A1','age','18')
print(conn.hgetall('A1'))
conn.hset('A1','name','张三')
conn.hset('A1','age','18')
print(conn.hlen('A1'))
conn.hset('A1','name','张三')
conn.hset('A1','age','18')
print(conn.hkeys('A1'))
conn.hset('A1','name','张三')
conn.hset('A1','age','18')
print(conn.hvals('A1'))
conn.hset('A1','name','张三')
print(conn.hexists('A1','name'))
print(conn.hexists('A1','age'))
conn.hset('A1','name','张三')
conn.hset('A1','age','18')
conn.hdel('A1','name')
print(conn.hgetall('A1'))
conn.hset('A1','age','18')
print(conn.hincrby('A1','age'))
conn.hset('A1','age','18.1')
print(conn.hincrbyfloat('A1','age',0.2))
for i in range(10):conn.hset('鸡蛋盒',i,f'鸡蛋{i}')
print(conn.hscan('鸡蛋盒'))
for item in conn.hscan_iter('鸡蛋盒',count=10):print(item)
List操作
命令 | 描述 |
---|
lpush(name, values) | 从列表左侧(头部)插入值 |
rpush(name, values) | 从列表右侧(尾部)插入值 |
lpop(name) | 从列表左侧(头部)移除并返回元素 |
rpop(name) | 从列表右侧(尾部)移除并返回元素 |
lpushx(name, value) | 仅当列表存在时,在列表左侧插入值 |
rpushx(name, value) | 仅当列表存在时,在列表右侧插入值 |
llen(name) | 获取列表长度 |
linsert(name, where, refvalue, value) | 在指定值前或后插入新值 |
lset(name, index, value) | 设置指定索引位置的值 |
lrem(name, value, num) | 移除列表中与给定值相等的元素 |
lindex(name, index) | 获取指定索引位置的元素值 |
lrange(name, start, end) | 获取指定范围内的元素值列表 |
ltrim(name, start, end) | 保留指定范围内的元素,移除其他元素 |
rpoplpush(src, dst) | 从一个列表右侧弹出元素并插入另一个列表左侧 |
blpop(keys, timeout) | 从多个列表的左侧弹出元素(阻塞式)timeout:阻塞超时时间 |
brpop(keys, timeout) | 从多个列表的右侧弹出元素(阻塞式) |
brpoplpush(src, dst, timeout=0) | 从一个列表右侧弹出元素并插入另一个列表左侧(阻塞式) |
conn.lpush('names','张三')
conn.lpush('names','李四')
conn.rpush('names','张三')
conn.rpush('names','李四')
conn.lpush('names','张三')
conn.lpush('names','李四')
print(conn.lpop('names')) conn.lpush('names','张三')
conn.lpush('names','李四')
print(conn.rpop('names'))
conn.lpush('names','张三')
conn.lpushx('names','李四')
print(conn.lpop('names')) conn.lpushx('names','李四')
conn.lpush('names','张三')
print(conn.rpop('names'))
conn.lpush('names','张三')
conn.lpush('names','李四')
print(conn.llen('names'))
conn.lpush('names','张三')
conn.lpush('names','李四')
print(conn.linsert('names','before','张三','陈五'))for i in range(conn.llen('names')):print(conn.lpop('names'))
conn.lpush('names','张三')
conn.lpush('names','李四')
print(conn.linsert('names','after','张三','陈五'))for i in range(conn.llen('names')):print(conn.lpop('names'))
conn.lpush('names','张三')
conn.lpush('names','李四')
conn.lset('names','0','陈五')for i in range(conn.llen('names')):print(conn.lpop('names'))
conn.lpush('names','张三')
conn.lpush('names','李四')
conn.lrem('names','0','李四')for i in range(conn.llen('names')):print(conn.lpop('names'))
conn.lpush('names','张三')
conn.lpush('names','李四')
print(conn.lindex('names','0'))
conn.lpush('names','张三')
conn.lpush('names','李四')
print(conn.lrange('names','0','100'))
conn.lpush('names','张三')
conn.lpush('names','李四')
conn.lpush('names','陈五')
print(conn.ltrim('names','0','1'))for i in range(conn.llen('names')):print(conn.lpop('names'))
conn.lpush('names','张三')
conn.lpush('names','李四')
conn.lpush('names','陈五')
conn.rpoplpush('names','names2')for i in range(conn.llen('names2')):print(conn.lpop('names2'))
print('---------')
for i in range(conn.llen('names')):print(conn.lpop('names'))
conn.lpush('names','张三')
conn.lpush('names','李四')
conn.lpush('names','陈五')
conn.blpop('names')
conn.brpop('names')for i in range(conn.llen('names')):print(conn.lpop('names'))
conn.lpush('names','张三')
conn.lpush('names','李四')
conn.lpush('names','陈五')
conn.brpoplpush('names','names2')for i in range(conn.llen('names')):print(conn.lpop('names'))
print('-----------')
for i in range(conn.llen('names2')):print(conn.lpop('names2'))