一、redis连接
redis提供两个类Redis和StrictRedis用于实现Redis的命令,StrictRedis用于实现大部分官方的命令,并使用官方的语法和命令,Redis是StrictRedis的子类,用于向后兼容旧版本的redis-py。
redis连接实例是线程安全的,可以直接将redis连接实例设置为一个全局变量,直接使用。如果需要另一个Redis实例(or Redis数据库)时,就需要重新创建redis连接实例来获取一个新的连接。
安装redis
pip install redis
连接redis,加上decode_responses=True,写入的键值对中的value为str类型,不加这个参数写入的则为字节类型。
二、连接池连接
redis-py使用connection pool来管理对一个redis server的所有连接,避免每次建立、释放连接的开销。默认,每个Redis实例都会维护一个自己的连接池。可以直接建立一个连接池,然后作为参数Redis,这样就可以实现多个Redis实例共享一个连接池
连接池:redis_pool.py
import redis
from redis_pool import POOl
conn = redis.Redis(connection_pool=POOl)
conn.set(‘name‘, ‘LinWOW‘)
print(conn.get(‘name‘))
三、redis-py 操作redis
python操作redis的命令和命令行几乎一致,除了del,因为和关键字重叠,所以用delete
1、字符串类型操作:
set----键key
con.set(‘key‘,‘values‘)
get---获取数值
con.get(‘com‘)
append --- 追加
con.append(‘keys‘,‘values‘)
delete---删除
con.delete(‘keys‘)
2、List类型:
rpush 、lpush----添加数据
con.rpush(‘keys‘,‘values‘)
con.lpush(‘keys‘,‘values‘)
lrange---查看数据
con.lrange(‘list‘,0,11)
lset---修改数据
con.lset(‘list_F‘,1,‘Fyn‘)---返回布尔值
rpop ---- 随机删除一个数据
con.rpop(‘keys‘)
lrem ---- 指定删除一个数据时
con.lrem(‘list_f‘,0,‘okl‘)
3、Hash类型
hmget --- 添加多条数据,也可插入单条数据
以字典的形式插入
con.hmste(‘keys‘,{‘name‘:‘‘age})#插入结果返回布尔值
hget , hgetall , hvals,hkeys查看数据
con.hget(‘ok‘,‘name‘)
con.hgetall(‘ok‘)#结果返回字典
con.hvals(‘ok‘)#获取所有的键值
con.hkeys(‘ok‘)#获取所有的键
hdel 、 del----删除某个字段,删除整个hash
con.hdel(‘ok‘,age)#指定删除某个字段 ,成功的话返回1,否则返回0
con.del(‘ok‘)#删除整个hash
4、set
sadd---添加数据
con.sadd(‘mk‘,‘oi‘.‘Hwelo‘)
smembers ---- 查看所有数据
con.smembers(‘mk‘)
spop---随机删除一个元素
con.spop(‘con.spop(‘mk‘)‘)
srem--- 指定删除某个元素
con.srem(‘mk‘,‘oi‘)
5、sorted set
zadd---添加数据
con.zadd(‘set_f‘,{‘name‘:1.1,‘age‘:2,‘sex‘:3})
zrange ---- 查询数据
con.zrange(‘set_f‘,0,11)
zrem ---指定删除某个元素
con.zrem(‘set_f‘,‘age‘)
四、redis-py管道操作 piplines
管道是redis的子类,它支持在一个请求中款冲多个命令到服务器
管道使redis的读写速度更加的快速。秒级取值1000+的数据。
并且使用pipline实现一次请求指定多个命令,并且默认情况下一次pipline 是原子性操作。
#1、创建一个管道
pipe = con.pipeline()
#缓冲多个命令
pipe.keys(‘*‘)
pipe.set(‘name‘,‘Mkl‘)
#执行命令
res = pipe.execute()#返回列表
print(res[0])
print(res[1])
管道的命令可以写在一起,如:
pipe.set(‘hello‘, ‘redis‘).sadd(‘faz‘, ‘baz‘).incr(‘num‘).execute()
print(r.get("name"))
print(r.get("role"))
print(r.get("num"))
原文地址:https://www.cnblogs.com/zzsy/p/12638752.html