python操作redis
一,python安装redis模块
pip3 install -y redis
二,python连接redis
import redis r = redis.Redis(host='192.168.1.108',port=6379,password='dasini',db=0) # r = redis.StrictRedis(host='192.168.1.108',port=6379,db=0)端口可以默认可以不写 r.set('name','test') print(r.get('name')) #redis输出的结果默认是二进制流,为了方便其他代码处理,所以我们可以添加decode_resopnses=True. import redis r = redis.Redis(host='192.168.1.108',port=6379,password='dasini',db=0,decode_responses=True) r .set('name','python') print(r.get('name'))
三,使用连接池
import redis pool = redis.ConnectionPool(host='192.168.1.108',port=6379,password='dasini',db=0,decode_responses=True) r = redis.Redis(connection_pool=pool) r.set('name2','ruby') print(r.get('name2'))
四,常用的数据类型的操作
a,String操作
import redis pool=redis.ConnectionPool(host='192.168.1.108',port=6379,password='dasini',db=0,decode_responses=True) r = redis.Redis(connection_pool=pool) #set(name, value, ex=None, px=None, nx=False, xx=False) 创建key和value ''' ex 表示过期时间,以s为单位 px 表示过期时间,以ms为单位 nx 当nx的值为True时,如果name不存在,则执行set操作 xx 当xx的值为True时,如果name存在,则执行set操作 ''' r.set('name','python') print(r.get('name')) # 运行结果:python #创建过期时间的key r.set('sex','male',ex=100) print(r.get('sex')) #setnx,和set中的参数nx一样,如果key存在,则不执行set操作。 r.setnx('name','ruby') print(r.get('name')) # 运行结果:python #setex,psetex 和set中参数ex一样,可以设置生命周期,其中setex单位为s,psetex单位为ms. r.setex('address','sh',100) r.psetex('mail',100,'ttsir@foxmail.com') #mset 批量设置key r.mset(name1='tom',name2='jack') print(r.mget('name1','name2')) #append往 key里面追加内容 r.set('mystring','good good study study') r.append('mystring',' day day up up') print(r.get('mystring'))
b,list常用操作
#删除testlist r.delete('testlist') #从列表左边插 r.lpush('testlist',1) r.lpush('testlist',2) #从列表右边插 r.rpush('testlist',3) #输出列表的内容 print(r.lrange('testlist',0,-1)) #计算列表的元素 print(r.llen('testlist')) #在列表指定位置插入值 r.linsert('testlist','after',3,4) #在testlist列表中找到下标为3的元素然后在它后面插入4 print(r.lrange('testlist',0,-1)) #更改列表中的指定下标的值 r.lset('testlist',0,10000) print(r.lrange('testlist',0,-1)) #删除列表中的元素 r.lpush('testlist',1) print(r.lrange('testlist',0,-1)) r.lrem('testlist',1) print(r.lrange('testlist',0,-1)) #删除列表中最后1个元素或者第一个元素 r.lpop('testlist') print(r.lrange('testlist',0,-1)) r.rpop('testlist') print(r.lrange('testlist',0,-1)) #根据下标获取某个值 r.lindex('testlist',0) print(r.lrange('testlist',0,-1))
c,无序集合操作(set)
#sadd 给集合添加元素 r.sadd('set1',1) r.sadd('set1',2) #scard 输出集合中元素的个数 print(r.scard('set1')) #smembers 获取字典中所有的元素 print(r.smembers('set1')) #spop 删除集合中的最后一个元素并将其返回 print(r.spop('set1')) print(r.smembers('set1')) #srem 删除集合中的元素 r.sadd('set1',4) r.srem('set1','4') print(r.smembers('set1'))
d,有序集合(sorted set),对于有序集合,每一个元素有两个值
#zadd 创建添加有序集合,默人是以升序的方式显示 # r.delete('set2') r.zadd('set2','apple',13,'banana',12) print(r.zrange('set2',0,-1)) #反序的形式输出 print(r.zrevrange('set2',0,-1)) #返回有序集合元素的个数 print(r.zcard('set2')) #删除有序集合的元素 print(r.zrem('set2','apple')) print(r.zrange('set2',0,-1))
e,hash操作
#hset 创建hash添加元素 r.hset('h1','name','dasini') print(r.hget('h1','name')) #hmset 创建多个元素 r.hmset('h2',{'name':'tom','sex':'male'}) print(r.hmget('h2','name','sex')) #hlen 判断hash的个数 print(r.hlen('h2')) #hkeys 获取set对应的hash中所有的key的值 print(r.hkeys('h2')) #hvals获取set对应的hash中所有的value的值 print(r.hvals('h2')) #hdel将set对应的hash中指定key的键值对删除 print(r.hdel('h2','name')) print(r.hgetall('h2'))