摘要:我們發(fā)現(xiàn),第一個(gè)結(jié)果為第一個(gè)鍵值對(duì)的鍵,第二個(gè)結(jié)果為鍵值對(duì)的值,以此類推,每?jī)蓚€(gè)為一組。其結(jié)果為,少了兩個(gè)結(jié)果,畢竟剛剛刪除了一個(gè)鍵值對(duì)版本演示第一步,鏈接數(shù)據(jù)庫我們先插入一個(gè)鍵值對(duì)到散列。原因即是,剛剛已經(jīng)被刪除
3、hash散列類型
簡(jiǎn)介
hash散列類似于一個(gè)小型的Redis數(shù)據(jù)庫
一個(gè)散列可以包含多個(gè)鍵值對(duì)
散列的每個(gè)鍵都不能重復(fù),各不相同,無序排列
其值可以是字符串或數(shù)字值
對(duì)于數(shù)字值,可以執(zhí)行自增或者自減操作
散列結(jié)構(gòu)
下面的結(jié)構(gòu)中,user代表鍵名,其可以包含多個(gè)不同的鍵值對(duì)。
[ "user":[ "name1":"yanying1", "name2":"yanying2", "name3":"yanying3" ] ]
操作方法
命令 | 行為 |
---|---|
hset | 將指定的元素添加到散列 |
hget | 獲取指定的鍵的值 |
hgetall | 獲取散列所有的鍵值對(duì) |
hdel | 刪除給定鍵 |
$redis->hset | PHP版本,添加元素到散列 |
$redis->hget | PHP版本,獲取指定鍵的值 |
$redis->hgetall | PHP版本,獲取散列所有的鍵值對(duì) |
$redis->hdel | PHP版本,刪除給定鍵 |
演示(命令行 + PHP演示)
命令行:
首先,我們添加一個(gè)鍵值對(duì)到散列。如果 成功則返回1;如果鍵已經(jīng)存在,返回0
hset hash-key sub-key1 value1 // 返回 1
我們?cè)偬砑右粋€(gè)不存在的鍵值對(duì)
hset hash-key sub-key2 value2 // 返回 1
這個(gè)時(shí)候,散列中已經(jīng)存在鍵sub-key1和sub-key2,接下來我們?cè)偬砑右粋€(gè)相同的鍵sub-key1到散列中,看看會(huì)發(fā)生什么:
hset hash-key sub-key1 value1 // 返回 0,由于該鍵已經(jīng)存在
下面我們通過hget獲取一個(gè)給定鍵sub-key1的值。
hget hash-key sub-key1 // "value1"
成功獲取了一個(gè)值。我們?cè)佾@取添加的所有元素看看,剛剛的到底添加了哪幾個(gè)值
hgetall hash-key
其結(jié)果如下。我們發(fā)現(xiàn),第一個(gè)結(jié)果為第一個(gè)鍵值對(duì)的鍵,第二個(gè)結(jié)果為鍵值對(duì)的值,以此類推,每?jī)蓚€(gè)為一組。
"sub-key1" "value1" "sub-key2" "value2"
下面我們?cè)囍鴦h除一個(gè)鍵試試,我們會(huì)發(fā)現(xiàn)如果 該鍵之前存在于散列中,那么刪除時(shí)候則返回1,否則,返回0
hdel hash-key sub-key1 // 該鍵之前存在于散列,返回1
我們?cè)僭囍鴦h除一次sub-key1,發(fā)現(xiàn)當(dāng)刪除 不存在的鍵的時(shí)候,返回結(jié)果0
hdel hash-key sub-key1
我們?cè)俅潍@取全部鍵值對(duì),看看還剩些什么。
hgetall hash-key
其結(jié)果為,少了兩個(gè)結(jié)果,畢竟剛剛刪除了一個(gè)鍵值對(duì)
"sub-key1" "value1"
PHP版本演示
第一步,鏈接redis數(shù)據(jù)庫
$redis = new Redis(); $redis->connect("127.0.0.1", 6379);
我們先插入一個(gè)鍵值對(duì)到hash-key散列。1代表插入成功;0元素代表已經(jīng)存在
$redis->hset("hash-key","sub-key1","value1"); // int 1,元素插入成功,之前不存在該鍵
我們?cè)俅尾迦胂嗤I值對(duì)
$redis->hset("hash-key","sub-key1","value1"); // int 0,元素插入失敗,該鍵已經(jīng)存在
為了下面的演示使用,我們繼續(xù)插入一些其他的值
$redis->hset("hash-key","sub-key2","value2"); // int 0
下面我們使用hget獲取鍵對(duì)應(yīng)的值。我們?cè)囋嚝@取sub-key2的值。
$redis->hget("hash-key","sub-key2"); // "value2"
獲取了一個(gè)后,我們?cè)趪L試使用hgetall獲取剛剛插入的全部值,看看里面包含哪些鍵值對(duì)
$redis->hgetall("hash-key");
獲得結(jié)果,是一個(gè)包含完整鍵值得數(shù)組
array (size=2) "sub-key1" => string "value1" (length=6) "sub-key2" => string "value2" (length=6)
查看完了所有的鍵值對(duì),我們嘗試刪除其中一個(gè)鍵。 如果之前鍵存在于散列中,則返回1,反之,返回0
$redis->hdel("hash-key","sub-key1"); // 該鍵之前存在,返回int 1
我們?cè)俅螄L試刪除sub-key1鍵,發(fā)現(xiàn)其返回0. 則說明該鍵不存在集合中,刪除失敗
$redis->hdel("hash-key","sub-key1"); // 該鍵不存在,返回int 0
下面我們使用hgetall查看下散列中還剩余的所有鍵值對(duì)
$redis->hgetall("hash-key");
發(fā)現(xiàn),只返回了包含一個(gè)鍵值對(duì)的數(shù)組。
array (size=1) "sub-key2" => string "value2" (length=6)
原因即是,剛剛sub-key1已經(jīng)被刪除
文章版權(quán)歸作者所有,未經(jīng)允許請(qǐng)勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。
轉(zhuǎn)載請(qǐng)注明本文地址:http://systransis.cn/yun/21930.html
摘要:本文為實(shí)戰(zhàn)讀書筆記簡(jiǎn)介是一個(gè)非關(guān)系型遠(yuǎn)程內(nèi)存數(shù)據(jù)庫,由于操作都在內(nèi)存中,所以的速度非???,性能十分強(qiáng)勁。同時(shí),還可以自動(dòng)的以兩種不同的方式將數(shù)據(jù)庫內(nèi)容持久化到硬盤,保證數(shù)據(jù)的完整性。數(shù)據(jù)格式支持字符串列表集合散列有序集合數(shù)據(jù)類型。 本文為《Redis實(shí)戰(zhàn)》讀書筆記 Redis簡(jiǎn)介 Redis是一個(gè)非關(guān)系型遠(yuǎn)程內(nèi)存數(shù)據(jù)庫,由于操作都在內(nèi)存中,所以Redis的速度非???,性能十分強(qiáng)勁。 它...
摘要:上一篇文章實(shí)戰(zhàn)第一章初識(shí)第一節(jié)簡(jiǎn)介下一篇文章實(shí)戰(zhàn)第一章初識(shí)第三節(jié)你好文章投票試煉可以存儲(chǔ)鍵與種不同的數(shù)據(jù)結(jié)構(gòu)類型之間的映射,這中數(shù)據(jù)結(jié)構(gòu)類別分別是字符串列表集合散列和有序集合。 上一篇文章:Python--Redis實(shí)戰(zhàn):第一章:初識(shí)Redis:第一節(jié):Redis簡(jiǎn)介下一篇文章:Python--Redis實(shí)戰(zhàn):第一章:初識(shí)Redis:第三節(jié):你好Redis-文章投票試煉 Redis可...
閱讀 1307·2021-10-08 10:04
閱讀 1940·2021-09-04 16:40
閱讀 2550·2019-08-30 13:21
閱讀 2292·2019-08-29 15:10
閱讀 2862·2019-08-29 12:35
閱讀 1201·2019-08-26 17:41
閱讀 3072·2019-08-26 17:03
閱讀 1154·2019-08-26 12:01