python redis使用
Posted huay
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了python redis使用相关的知识,希望对你有一定的参考价值。
连接
‘‘‘ 连接 ‘‘‘ import redis conn=redis.Redis(host=‘47.98.55.191‘,port=6379,password=‘123456‘) conn.set(‘foo‘,‘bar‘) print(conn.get(‘foo‘))
连接池
‘‘‘ 连接池 edis-py使用connection pool来管理对一个redis server的所有连接,避免每次建立、释放连接的开销。默认,
每个Redis实例都会维护一个自己的连接池。可以直接建立一个连接池,然后作为参数Redis,这样就可以实现多个Redis实例共享一个连接池。 ‘‘‘ import redis pool=redis.ConnectionPool(host=‘47.98.55.191‘,port=‘6379‘,password=‘123456‘) r=redis.Redis(connection_pool=pool) r.set(‘name‘,‘rose‘) print(r.get(‘name‘))
字符串
‘‘‘ 字符串 set(name, value, ex=None, px=None, nx=False, xx=False) 在Redis中设置值,默认不存在则创建,存在则修改 参数: ex,过期时间(秒) px,过期时间(毫秒) nx,如果设置为True,则只有name不存在时,当前set操作才执行 xx,如果设置为True,则只有name存在时,岗前set操作才执行 ‘‘‘ #设置值,只有name不存在时,执行设置操作(添加) ret=r.setnx(‘name‘, ‘rose‘) #key timeout value,设置过期时间,单位秒 ret=r.setex(‘name‘,10,‘rose‘) #key timeout value,设置过期时间 单位毫秒 r.psetex(‘name‘, ‘10000‘,‘jack‘) print(r.get(‘name‘)) #批量设置值,亮亮取值 keydict = keydict[‘key1‘] = 324 keydict[‘key2‘] = ‘ag‘ print(r.mset(keydict)) list = [‘key1‘,‘key2‘] print(r.mget(list)) #取值 r.get(‘name‘) #设置新值并获取原来的值 ret=r.getset(‘name‘,‘jack‘) #取字符串部分内容 r.set(‘say‘,‘hello world‘) ret=r.getrange(‘say‘,0,4) print(ret) #从字符串下标为offset开始替换 r.set(‘say‘,‘hello world‘) ret=r.setrange(‘say‘,6,‘langlang‘) print(r.get(‘say‘)) #获取name对应的值的二进制表示中的某位的值 (0或1),从右往左数 r.set(‘num‘,5) print(bin(5).replace(‘b‘,‘‘)) print(r.getbit(‘num‘,1)) #返回字节的长度 r.strlen(‘name‘) # 自增 name对应的值,当name不存在时,则创建name=amount,否则,则自增。(整型) r.incr(‘count‘,2) # 自增 name对应的值,当name不存在时,则创建name=amount,否则,则自增。(浮点型) r.incrbyfloat(‘f‘,1.1) # 自减 name对应的值,当name不存在时,则创建name=amount,否则,则自增。(整型) r.decr(‘num‘,2) print(r.get(‘num‘)) #在字符串后面追加内容 r.append(‘say‘,‘ac‘)
hash操作
#name对应的hash中设置一个键值对(不存在,则创建;否则,修改) r.hset(‘userinfo‘,‘name‘,‘jack‘) #批量设置 dict=‘name‘:‘jack‘,‘age‘:22,‘sex‘:‘girl‘ r.hmset(‘userinfo‘,dict) #读取 ret=r.hget(‘userinfo‘,‘name‘) #批量读取 dict=‘name‘,‘age‘ ret=r.hmget(‘userinfo‘,dict) #读取对应userinfo所有 ret=r.hgetall(‘userinfo‘) print(ret) for i,j in ret.items(): print(i.decode(‘utf-8‘)+‘:‘+j.decode(‘utf-8‘)) # 获取name对应的hash中键值对的个数 ret=r.hlen(‘userinfo‘) # 获取name对应的hash中所有的keys ret=r.hkeys(‘userinfo‘) # 获取name对应的hash中所有的value的值 ret=r.hvals(‘userinfo‘) # 检查name对应的hash是否存在当前传入的key ret=r.hexists(‘userinfo‘,‘name‘) # 将name对应的hash中指定key的键值对删除 ret=r.hdel(‘userinfo‘,‘name‘) # 自增name对应的hash中的指定key的值,不存在则创建key=amount ret=r.hincrby(‘userinfo‘,‘age‘,1) print(r.hget(‘userinfo‘,‘age‘)) # 自增name对应的hash中的指定key的值,不存在则创建key=amount(浮点型) ret=r.hincrbyfloat(‘userinfo‘,‘hight‘,1.1) print(r.hget(‘userinfo‘,‘hight‘)) # # 增量式迭代获取,对于数据大的数据非常有用,hscan可以实现分片的获取数据,并非一次性将数据全部获取完,从而放置内存被撑爆 #数量必须足够多否则测不出(10000可以) #一万条数据查询一百次 cursor=0 i=0 while True: cursor1, data1 = r.hscan(‘num‘, cursor=cursor, match=None, count=100) i += 1 print(i) print(data1) if cursor1: cursor=cursor1 else: break #hscan_iter(name, match=None, count=None) #利用yield封装hscan创建生成器,实现分批去redis中获取数据 ret=r.hscan_iter(‘num‘,match=None,count=1000) for item in r.hscan_iter(‘num‘): print(item)
以上是关于python redis使用的主要内容,如果未能解决你的问题,请参考以下文章
使用Python客户端(redis-py)连接Redis--华为云DCS for Redis使用经验