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