Redis之hash操作
1 hset(name, key, value) 设置值
conn.hset('userinfo','name','xxx') conn.hset('userinfo','age',18)
2 hmset(name, mapping) 批量设置
conn.hmset('userinfo',{'name':'彭于晏','age':19})
3 hget(name,key)
print(conn.hget('userinfo','name'))
4 hmget(name, keys, *args) 批量获取
print(conn.hmget('userinfo','hobby','name','age')) # 另一种设置方式 print(conn.hmget('userinfo',['hobby','name','age']))
5 hgetall(name) 获取全部(慎用,内存溢出)
res=conn.hgetall('userinfo2') print(res)
6 hlen(name) 获取长度
print(conn.hlen('userinfo'))
7 hkeys(name)
print(conn.hkeys('userinfo'))
8 hvals(name)
print(conn.hvals('userinfo'))
9 hexists(name, key)
print(conn.hexists('userinfo2','hobby1'))
10 hdel(name,*keys)
res=conn.hdel('userinfo','hobby') print(res)
11 hincrby(name, key, amount=1) 增加
conn.hincrby('userinfo','age')
12 hincrbyfloat(name, key, amount=1.0)
conn.hincrbyfloat('userinfo2', 'age', amount=1.2)
13 hscan(name, cursor=0, match=None, count=None)
# 一点点取值 ---》hscan一般不单独用 # 造数据 for i in range(1000): conn.hset('map_demo',i,'鸡蛋_%s'%i)
# 一次性取出来 res=conn.hgetall("map_demo") print(res) # 一点点取---》取的数量不准确(上下相差一点点),下次取值取决于上次的结果---》不单独使用 res=conn.hscan('map_demo',cursor=0,count=20) print(res) # (数字,{数据}) print(len(res[1])) res=conn.hscan('map_demo',cursor=320,count=10) print(res) # (数字,{数据}) conn.hscan('map_demo')
14 hscan_iter(name, match=None, count=None)
# 取出所有数据等同于 hgetall,但是是一点点取(count的值),一点点用 # 内部是生成器 res=conn.hscan_iter('map_demo',count=10) # 这个数字并不是取10条,而是 每次取10条,把所有都取尽 print(res) # generator for item in res: print(item) # 内部具体如何实现---》内部使用了hscan res=conn.hscan_iter('map_demo',count=10) # 内部通过调用 hscan实现 每次取10条,用完再继续取10条,直到所有数据都取完
汇总:
''' 1 hset(name, key, value) 2 hmset(name, mapping) 3 hget(name,key) 4 hmget(name, keys, *args) 5 hgetall(name) 6 hlen(name) 7 hkeys(name) 8 hvals(name) 9 hexists(name, key) 10 hdel(name,*keys) 11 hincrby(name, key, amount=1) 12 hincrbyfloat(name, key, amount=1.0) 13 hscan(name, cursor=0, match=None, count=None) 14 hscan_iter(name, match=None, count=None) '''