redis 操作 之 -Hash
Hash 操作:hash在內存中的存儲格式
name hash
n1 ------> k1 -> v1
k2 -> v2
k3 -> v3
hset(name,key,value):name對應的hash中設置一個鍵值對(不存在,則創建,存在則修改)
name:redis的name
key :name對應hash中的key
value:name對應hash中的value
hsetnx(name,key,value):當name對應的hash中不存在當前key時則創建
舉例:
r.hset('info','name','jack')
r.hset('info','age',22)
r.hset('info','id',22323)
print(r.hgetall('info')) # 查看info對應的所有信息,返回字典
print(r.hget('info','age')) # 查看info對應的age的值,返回字符串
print(r.hkeys('info')) # 查看info的所有鍵,返回列表
print(r.hvals('info')) # 查看info的所有值,返回列表
hmset(name,mapping):在name對應的hash中批量設置鍵值對
mapping:字典{'k1':'v1','k2':'v2'}
舉例:
r.hmset('info',{'name':'jack','age':22,'id':223}) # 批量設置
print(r.hgetall('info')) # 打印所有信息
print(r.hmget('info','name','age')) # 打印對應值
hgetall(name):獲取name對應hash的所有鍵值
hlen(name):獲取name對應的hash中鍵值對的個數
hkeys(name):獲取name對應的hash中所有的key
hvals(name):獲取name對應的hash中所有的value
hexists(name,key):判斷key是否存在
hdel(name,*keys):刪除指定name中的keys鍵值對
hincrby(name,key,amount=1):對name對應的key自增
hscan(name,cursor=0,match=None,count=None):增量式迭代獲取,對於數據量大的數據非常有用,hscan可以實現分片的獲取數據,
並非一次性將數據獲取完畢,
name:redis的name
cursor:游標(基於游標分批獲取數據)
match:匹配指定key,默認None,表示所有的key
count:每次分片最少獲取個數,默認None表示采用redis的默認分片個數
舉例:
r.hmset('info',{'name':'jack','age':22,'id':223})
print(r.hscan('info',cursor=0,match='a*'))
結果輸出:(0, {b'age': b'22'})
hscan_iter(name,match=None,count=None):利用yield封裝hscan創建生成器,實現分批去redis中獲取數據
match:匹配指定key,默認None表示所有key
count:每次分片最少獲取個數
r.hmset('info2',{'k1':'v1','k2':'v2','k3':'v3'})
for item in r.hscan('info2',cursor=0,match='k*'):
print(item)
輸出:{b'k1': b'v1', b'k2': b'v2', b'k3': b'v3'}