国产xxxx99真实实拍_久久不雅视频_高清韩国a级特黄毛片_嗯老师别我我受不了了小说

資訊專欄INFORMATION COLUMN

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

waterc / 2595人閱讀

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

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

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

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

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

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

示例:

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

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


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

keys = ["k2", "k3"]
#使用hmset命令可以一次獲取多個鍵的值
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í)行只能處理一個鍵值對,而多參數(shù)版本的每次執(zhí)行可以處理多個鍵值對。

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

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

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

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

實例:

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


# 與本地redis進(jìn)行鏈接,地址為:localhost,端口號為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"))

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

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

結(jié)果:

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

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

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

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

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

轉(zhuǎn)載請注明本文地址:http://specialneedsforspecialkids.com/yun/44873.html

相關(guān)文章

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

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

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

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

    xinhaip 評論0 收藏0

發(fā)表評論

0條評論

最新活動
閱讀需要支付1元查看
<