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)
相关文章
相关标签/搜索