redis使用hash型別儲存多樣化資料

2021-09-26 08:47:53 字數 2629 閱讀 8167

import redis

pool=redis.connectionpool(host=『localhost』,port=6379)

conn=redis.redis(connection_pool=pool)

hset(self, name ,key,value)

name對應的hash中設定乙個鍵值對(不存在,則建立;否則,修改)

引數:# name,redis中hash資料的name

# key,name對應的hash中的key

# value,name對應的hash中的value

conn.hset(『student』,『name』,『mm』)

conn.hset(『student』,『age』,『11』)

conn.hset(『student』,『gender』,『f』)

在name對應的hash中獲取根據key獲取value

print(conn.hget(『student』,『age』))

#輸出—> b』11』

在name對應的hash中獲取多個key的值,keys需要放在列表

print(conn.hmget(『student』,[『age』,『gender』]))

#輸出—>[b』11』, b』f』]

獲取name對應的hash所有鍵值對

print(conn.hgetall(『student』))

#輸出—>

print(conn.hgetall(『teacher』))

#輸出—>

獲取name對應的hash中鍵值對的個數

print(conn.hlen(『teacher』))

#輸出—>3

獲取name對應的hash中所有的key的值

print(conn.hkeys(『student』))

#輸出—>[b』name』, b』gender』, b』age』

獲取name對應的hash中所有的value的值

print(conn.hvals(『teacher』))

#輸出—>[b』ww』, b』22』, b』m』]

檢查name對應的hash是否存在當前傳入的key

print(conn.hexists(『teacher』,『age』))

#輸出—>true

print(conn.hexists(『teacher』,『weight』))

#輸出—>false

將name對應的hash中指定key的鍵值對刪除

conn.hdel(『student』,『age』)

print(conn.hgetall(『student』))

#輸出—>

自增name對應的hash中的指定key的值,不存在則建立key=amount

#引數:

# name,redis中的name

# key, hash對應的key

# amount,自增數(整數):key值對應的value值按自贈數依次加法操作

#hincrbyfloat則為自增數為浮點數

conn.hincrby(『teacher』,『age』,1)

print(conn.hget(『teacher』,『age』))

#輸出—>b』23』

conn.hincrbyfloat(『student』,『age』,0.5)

print(conn.hget(『student』,『age』))

#輸出—>b』0.5』

#增量式迭代獲取,對於資料大的資料非常有用,

hscan可以實現分片的獲取資料,並非一次性將資料全部獲取完,從而放置記憶體被撐爆

#引數:

# cursor,游標(基於游標分批取獲取資料)

# match,匹配指定key,預設none 表示所有的key

# count,每次分片最少獲取個數,預設none表示採用redis的預設分片個數

conn.hmset(『docter』,)

print(conn.hscan(『docter』,cursor=0))

#輸出—>(0, )

print(conn.hscan(『docter』,cursor=0,count=5))

#輸出—>(0, )

當name對應的hash中不存在當前key時則建立(相當於新增)

conn.hsetnx(『docter』,『docter』,『mm』)

print(conn.hscan(『docter』,cursor=0,match=『d*』))

#輸出—>(0, )

利用yield封裝hscan建立生成器,實現分批去redis中獲取資料

#引數:

# match,匹配指定key,預設none 表示所有的key

# count,每次分片最少獲取個數,預設none表示採用redis的預設分片個數

print(conn.hscan_iter(『docter』))

#輸出—>

for i in conn.hscan_iter(『docter』):

print(i)

break

#輸出—>(b』westos0』, b』0』)

刪除所有鍵值對

conn.flushall()

print(conn.hkeys(『docter』))

#輸出—>

Redis儲存資料 Hash型別

redis儲存hash型別的資料,就是map裡儲存map 儲存的map的key為欄位名,值為字段值 儲存資料 hset key 欄位名 字段值 127.0.0.1 6379 1 hset user username wlf integer 1 獲取資料hget key 欄位名 127.0.0.1 6...

Redis 雜湊hash 型別

redis hash 是乙個 string 型別的 field 和 value 的對映表,hash 特別適合用於儲存物件 基本語法 設定值 hmset hmset zhangsan name 張三 age 20 男 設定值 hset hset zhangsan name 張三 獲取資料 hgetal...

redis資料型別 Hash型別

hash型別,是乙個string型別的field和value的對映表。hash存放的是鍵值對,可以很方便的存放物件。常用操作 hset 設定hash field為指定值,如果key不存在,則先建立 hset user1 name jack hset uer1 age 18 hget 獲取指定的has...