03-Redis 操作之Hash操作

Redis 操作之Hash操作

Hash操作,redis中Hash在內(nèi)存中的存儲格式如下:
h1 {
    'key1':value1,
    'key2':value2,
    'key3':value3,
}
h2 {
    'key4':4444,
    'key5':5555,
}
hset(name, key, value)
# name對應(yīng)的hash中設(shè)置一個鍵值對(不存在,則創(chuàng)建;否則,修改)
 
# 參數(shù):
    # name,redis的name
    # key,name對應(yīng)的hash中的key
    # value,name對應(yīng)的hash中的value
 
# 注:
    # hsetnx(name, key, value),當name對應(yīng)的hash中不存在當前key時則創(chuàng)建(相當于添加)
hmset(name, mapping)
# 在name對應(yīng)的hash中批量設(shè)置鍵值對
 
# 參數(shù):
    # name,redis的name
    # mapping,字典,如:{'k1':'v1', 'k2': 'v2'}
 
# 如:
    # r.hmset('xx', {'k1':'v1', 'k2': 'v2'})
hget(name,key)
# 在name對應(yīng)的hash中獲取根據(jù)key獲取value
hmget(name, keys, *args)
# 在name對應(yīng)的hash中獲取多個key的值
 
# 參數(shù):
    # name,reids對應(yīng)的name
    # keys,要獲取key集合,如:['k1', 'k2', 'k3']
    # *args,要獲取的key,如:k1,k2,k3
 
# 如:
    # r.mget('xx', ['k1', 'k2'])
    # 或
    # print r.hmget('xx', 'k1', 'k2')
hgetall(name)
# 獲取name對應(yīng)hash的所有鍵值
print(re.hgetall('xxx').get(b'name'))
hlen(name)
# 獲取name對應(yīng)的hash中鍵值對的個數(shù)
hkeys(name)
# 獲取name對應(yīng)的hash中所有的key的值
hvals(name)
# 獲取name對應(yīng)的hash中所有的value的值
hexists(name, key)
# 檢查name對應(yīng)的hash是否存在當前傳入的key
hdel(name,*keys)
# 將name對應(yīng)的hash中指定key的鍵值對刪除
print(re.hdel('xxx','sex','name'))
hincrby(name, key, amount=1)
# 自增name對應(yīng)的hash中的指定key的值,不存在則創(chuàng)建key=amount
# 參數(shù):
    # name,redis中的name
    # key, hash對應(yīng)的key
    # amount,自增數(shù)(整數(shù))
hincrbyfloat(name, key, amount=1.0)
# 自增name對應(yīng)的hash中的指定key的值,不存在則創(chuàng)建key=amount
 
# 參數(shù):
    # name,redis中的name
    # key, hash對應(yīng)的key
    # amount,自增數(shù)(浮點數(shù))
 
# 自增name對應(yīng)的hash中的指定key的值,不存在則創(chuàng)建key=amount
hscn(name, cursor=0, match=None, count=None)
# 增量式迭代獲取,對于數(shù)據(jù)大的數(shù)據(jù)非常有用,hscan可以實現(xiàn)分片的獲取數(shù)據(jù),并非一次性將數(shù)據(jù)全部獲取完,從而放置內(nèi)存被撐爆
 
# 參數(shù):
    # name,redis的name
    # cursor,游標(基于游標分批取獲取數(shù)據(jù))
    # match,匹配指定key,默認None 表示所有的key
    # count,每次分片最少獲取個數(shù),默認None表示采用Redis的默認分片個數(shù)
 
# 如:
    # 第一次:cursor1, data1 = r.hscan('xx', cursor=0, match=None, count=None)
    # 第二次:cursor2, data1 = r.hscan('xx', cursor=cursor1, match=None, count=None)
    # ...
    # 直到返回值cursor的值為0時,表示數(shù)據(jù)已經(jīng)通過分片獲取完畢
hscan_iter(name, match=None, count=None)
# 利用yield封裝hscan創(chuàng)建生成器,實現(xiàn)分批去redis中獲取數(shù)據(jù)
 
# 參數(shù):
    # match,匹配指定key,默認None 表示所有的key
    # count,每次分片最少獲取個數(shù),默認None表示采用Redis的默認分片個數(shù)
 
# 如:
    # for item in r.hscan_iter('xx'):
    #     print item
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

  • 簡介 redis當前最流行的鍵值對存儲型數(shù)據(jù)庫,非關(guān)系型數(shù)據(jù)庫。 Redis的外圍由一個鍵、值映射的字典構(gòu)成。Re...
    lvyz0207閱讀 554評論 0 1
  • Ubuntu下安裝redis 安裝redis 在 Ubuntu 系統(tǒng)安裝 Redi 可以使用以下命令: 啟動 Re...
    riverstation閱讀 1,045評論 0 0
  • 1、redis連接 redis提供兩個類Redis和StrictRedis用于實現(xiàn)Redis的命令,StrictR...
    君惜丶閱讀 232,274評論 15 117
  • python操作Redis 一. Redis是什么 Redis 是一個開源(BSD許可)的,內(nèi)存中的數(shù)據(jù)結(jié)構(gòu)存儲系...
    shu_ke閱讀 3,978評論 0 9
  • 連接數(shù)據(jù)庫 StrictRedis ConnectionPool 構(gòu)造url方式連接到數(shù)據(jù)庫,有以下三種模式: S...
    cnkai閱讀 3,210評論 0 2

友情鏈接更多精彩內(nèi)容