成人国产在线小视频_日韩寡妇人妻调教在线播放_色成人www永久在线观看_2018国产精品久久_亚洲欧美高清在线30p_亚洲少妇综合一区_黄色在线播放国产_亚洲另类技巧小说校园_国产主播xx日韩_a级毛片在线免费

資訊專(zhuān)欄INFORMATION COLUMN

Python--Redis實(shí)戰(zhàn):第三章:Redis命令:第四節(jié):散列

waterc / 2604人閱讀

摘要:實(shí)例導(dǎo)入包包與本地進(jìn)行鏈接,地址為,端口號(hào)為和字符串一樣,對(duì)散列中一個(gè)尚未存在的鍵執(zhí)行自增操作時(shí),會(huì)將鍵的值當(dāng)作來(lái)處理。

上一篇文章:Python--Redis實(shí)戰(zhàn):第三章:Redis命令:第三節(jié):集合
下一篇文章:Python--Redis實(shí)戰(zhàn):第三章:Redis命令:第五節(jié):有序集合

第一章提到過(guò),Redis的散列可以讓用戶(hù)將多個(gè)鍵值對(duì)存儲(chǔ)到一個(gè)Redis里面。從功能上來(lái)說(shuō),Redis為散列值提供了一些與字符串值相同的特性,使得散列非常適用于將一些相關(guān)的數(shù)據(jù)存儲(chǔ)在一起。我們可以把這種數(shù)據(jù)聚集看做是關(guān)系數(shù)據(jù)庫(kù)的行,或者文檔數(shù)據(jù)庫(kù)的文檔。

本節(jié)將對(duì)最常用的散列命令進(jìn)行介紹:其中包括添加和刪除鍵值對(duì)的命令、獲取所有鍵值對(duì)的命令、已經(jīng)對(duì)鍵值對(duì)的值進(jìn)行自增或者自減操作的命令。閱讀這一節(jié)可以讓讀者學(xué)習(xí)到如何將數(shù)據(jù)存儲(chǔ)到散列里面,以及這樣做的好處是什么。下表展示了一部分常用的散列命令:

命令 用例 用例描述
hmget hmget key-name key [key ...] 從散列里面獲取一個(gè)或多個(gè)鍵的值
hmset hmset key-name key value [key value ...] 為散列里面的一個(gè)或多個(gè)鍵設(shè)置值
hdel hdel key-name key [key ...] 刪除散列里面的一個(gè)或多個(gè)鍵值對(duì),返回成功找到并刪除的鍵值對(duì)數(shù)量。
hlen hlen key-name 返回散列包含的鍵值對(duì)數(shù)量。

hdel命令已經(jīng)在第一章中介紹過(guò)了,而hlen命令以及用于一次讀取或者設(shè)置多個(gè)鍵的hmget和hmset則是新出現(xiàn)的命令。像hmget和hmset這種批量處理多個(gè)鍵的命令既可以給用戶(hù)帶來(lái)方便,又可以通過(guò)減少命令的調(diào)用次數(shù)以及客戶(hù)端與Redis之前的通信往返次數(shù)來(lái)提升Redis的性能。

示例:

import redis # 導(dǎo)入redis包包

# 與本地redis進(jìn)行鏈接,地址為:localhost,端口號(hào)為6379
r = redis.StrictRedis(host="localhost", port=6379)


values = {"k1": "v1", "k2": "v2", "k3": "v3"}
#使用hmset命令可以一次將多個(gè)鍵值對(duì)添加多散列里面
print(r.hmset("hash-key", values))

keys = ["k2", "k3"]
#使用hmset命令可以一次獲取多個(gè)鍵的值
print(r.hmget("hash-key", keys))


print(r.hlen("hash-key"))

print(r.hdel("hash-key","k1","k3"))

結(jié)果:

True
[b"v2", b"v3"]
4
2

第一章介紹的hget命令和hset命令分別是hmget命令和hmset命令的單參數(shù)版本,這里的命令的唯一區(qū)別在于單參數(shù)版本每次執(zhí)行只能處理一個(gè)鍵值對(duì),而多參數(shù)版本的每次執(zhí)行可以處理多個(gè)鍵值對(duì)。

下表列出了散列的其他幾個(gè)批量操作命令,以及一些和字符串操作類(lèi)似的散列命令。

命令 用例 用例描述
hexists hexists key-name key 檢查給定鍵是否存在于散列中
hkeys hkeys key-name 獲取散列包含的所有鍵
hvals hvals key-name 獲取散列包含的所有值
hgetall hgetall key-name 獲取散列包含的所有鍵值對(duì)
hincrby hincrby key-name key increment 將鍵key存儲(chǔ)的值加上整數(shù)increment
hincrbyfloat hincrbyfloat key-name key increment 將鍵key存儲(chǔ)的值加上浮點(diǎn)數(shù)increment

盡管有hgetall存在,但hkeys和hvals也是非常有用的:如果散列包含的值非常大,那么用戶(hù)可以先使用hkeys取出散列包含的所有鍵,然后再使用hget一個(gè)接一個(gè)地取出鍵的值,從而避免因?yàn)橐淮潍@取多個(gè)大體積的值而導(dǎo)致服務(wù)器阻塞。

hincrby和hincrbyfloat可能會(huì)讓讀者回想起用于處理字符串的incrby和incrbyfloat,這兩個(gè)命令擁有相同的語(yǔ)義,他們的不同在于hincrby和hincrbyfloat處理的是散列,而不是字符串。

實(shí)例:

import redis # 導(dǎo)入redis包包


# 與本地redis進(jìn)行鏈接,地址為:localhost,端口號(hào)為6379
r = redis.StrictRedis(host="localhost", port=6379)

r.delete("hash-key2")

print(r.hmset("hash-key2",{"short:":"hello","long":1000*"1"}))

print(r.hkeys("hash-key2"))

print(r.hexists("hash-key2","num"))

#和字符串一樣,對(duì)散列中一個(gè)尚未存在的鍵執(zhí)行自增操作時(shí),Redis會(huì)將鍵的值當(dāng)作0來(lái)處理。
print(r.hincrby("hash-key2","num"))

print(r.hexists("hash-key2","num"))

結(jié)果:

True
[b"short:", b"long"]
False
1
True

正如前面所說(shuō),在對(duì)散列進(jìn)行處理的時(shí)候,如果鍵值對(duì)的值的體積非常龐大,那么用戶(hù)可以先使用hkeys獲取散列的所有鍵,然后通過(guò)只獲取必要的值來(lái)減少需要傳輸?shù)臄?shù)據(jù)量。除此之外,用戶(hù)還可以像使用sismemeber檢查一個(gè)元素是否存在于集合里面一樣,使用hexists檢查一個(gè)鍵是否存在于散列中。

在接下來(lái)的一節(jié)中,我們要了解的是之后的章節(jié)會(huì)經(jīng)常用到的有序集合結(jié)構(gòu)。

上一篇文章:Python--Redis實(shí)戰(zhàn):第三章:Redis命令:第三節(jié):集合
下一篇文章:Python--Redis實(shí)戰(zhàn):第三章:Redis命令:第五節(jié):有序集合

文章版權(quán)歸作者所有,未經(jīng)允許請(qǐng)勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。

轉(zhuǎn)載請(qǐng)注明本文地址:http://systransis.cn/yun/44873.html

相關(guān)文章

  • Python--Redis實(shí)戰(zhàn)三章Redis命令第三節(jié):集合

    摘要:上一篇文章實(shí)戰(zhàn)第三章命令第二節(jié)列表下一篇文章實(shí)戰(zhàn)第三章命令第四節(jié)散列 上一篇文章:Python--Redis實(shí)戰(zhàn):第三章:Redis命令:第二節(jié):列表下一篇文章:Python--Redis實(shí)戰(zhàn):第三章:Redis命令:第四節(jié):散列 Redis的集合以無(wú)序的方式來(lái)存儲(chǔ)多個(gè)各不相同的元素,用戶(hù)可以快速地對(duì)集合執(zhí)行添加元素操作、移除元素操作、以及檢查一個(gè)元素是否存在于集合里。本節(jié)將對(duì)最常用...

    HollisChuang 評(píng)論0 收藏0
  • Python--Redis實(shí)戰(zhàn)三章Redis命令:第五節(jié):有序集合

    摘要:對(duì)給定的有序集合執(zhí)行類(lèi)似于集合的并集運(yùn)算。用戶(hù)可以把集合作為輸入傳給和,命令會(huì)將集合看作是成員分值全為的有序集合來(lái)處理。上一篇文章實(shí)戰(zhàn)第三章命令第四節(jié)散列下一篇文章實(shí)戰(zhàn)第三章命令第六節(jié)發(fā)布與訂閱 上一篇文章:Python--Redis實(shí)戰(zhàn):第三章:Redis命令:第四節(jié):散列下一篇文章:Python--Redis實(shí)戰(zhàn):第三章:Redis命令:第六節(jié):發(fā)布與訂閱 和散列存儲(chǔ)著鍵與值之間...

    xinhaip 評(píng)論0 收藏0

發(fā)表評(píng)論

0條評(píng)論

閱讀需要支付1元查看
<