python redis使用

时间:2019-08-24
本文章向大家介绍python redis使用,主要包括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)

原文地址:https://www.cnblogs.com/huay/p/11406440.html