首頁 > 类库下载 > 其它類別庫 > PHP+Redis:hash雜湊類型

PHP+Redis:hash雜湊類型

高洛峰
發布: 2016-10-20 14:04:04
原創
2700 人瀏覽過

3、hash雜湊類型

簡介

hash散列類似於一個小型的Redis資料庫

一個雜湊可以包含多個鍵值對

散列的每個鍵都不能重複,各不相同,無序排列

其值可以是字串或數字值

對於數字值,可以執行自增或自減操作

散列結構

下面的結構中,user代表鍵名,其可以包含多個不同的鍵值對

​​
[
    "user":[
        "name1":"yanying1",
        "name2":"yanying2",
        "name3":"yanying3"
    ]
]
登入後複製

操作方法

PHP+Redis:hash雜湊類型

演示(命令列+ PHP演示)

命令行:

首先,我們將一個鍵值對到散列。如果 成功則回傳1;如果鍵已經存在,回傳0

hset hash-key sub-key1 value1 // 返回 1
登入後複製

我們再增加一個不存在的鍵值對

​​
hset hash-key sub-key2 value2 // 返回 1
登入後複製

這個時候,散列中已經存在鍵sub-key1和sub-key2,接下來我們再新增一個相同的鍵sub-key1到散列中,看看會發生什麼:

hset hash-key sub-key1 value1 // 返回 0,由于该键已经存在
登入後複製

下面我們透過hget取得一個給定鍵sub-key1的值。

hget hash-key sub-key1 // "value1"
登入後複製

成功獲取了一個值。我們再取得新增的所有元素看看,剛剛的到底增加了哪幾個值

hgetall hash-key
登入後複製
登入後複製

其結果如下。我們發現,第一個結果為第一個鍵值對的鍵,第二個結果為鍵值對的值,以此類推,每兩個為一組。

"sub-key1""value1""sub-key2""value2"
登入後複製

下面我們試著刪除一個鍵試試,我們會發現如果 該鍵之前存在於散列中,那麼刪除時候則返回1,否則,返回0

hdel hash-key sub-key1 // 该键之前存在于散列,返回1
登入後複製

我們再試著刪除一次sub-key1,發現刪除 不存在的鍵的時候,回傳結果0

hdel hash-key sub-key1
登入後複製

我們再次取得全部鍵值對,看看還剩些什麼。

hgetall hash-key
登入後複製
登入後複製

其結果為,少了兩個結果,畢竟剛剛刪除了一個鍵值對

"sub-key1""value1"
登入後複製

PHP版本演示

第一步,鏈接redis數據庫

$redis = new Redis();$redis->connect('127.0.0.1', 6379);
登入後複製

我們先插入一個鍵值對到hash-key散列。 1代表插入成功;0元素代表已經存在

$redis->hset('hash-key','sub-key1','value1'); // int 1,元素插入成功,之前不存在该键
登入後複製

我們再次插入相同鍵值對

$redis->hset('hash-key','sub-key1','value1'); // int 0,元素插入失败,该键已经存在
登入後複製

為了下面的演示使用,我們繼續插入一些其他的值

$redis->hset('hash-key','sub-key2','value2'); // int 0
登入後複製

下面我們使用hget獲取鍵對應的值。我們試試看sub-key2的值。

$redis->hget('hash-key','sub-key2'); // 'value2'
登入後複製

獲取了一個後,我們在嘗試使用hgetall獲取剛剛插入的全部值,看看裡麵包含哪些鍵值對

$redis->hgetall('hash-key');
登入後複製
登入後複製

獲得結果,是一個包含完整鍵值得數組

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鍵,發現其返回0. 則說明該鍵不存在集合中,刪除失敗

$redis->hdel('hash-key','sub-key1'); // 该键不存在,返回int 0
登入後複製

下面我們使用hgetall查看下散列中還剩餘的所有鍵值對

$redis->hgetall('hash-key');
登入後複製
登入後複製

發現,只傳回了包含一個鍵值對的陣列。

array (size=1)  'sub-key2' => string 'value2' (length=6)
登入後複製

原因即是,剛剛sub-key1已經被刪除


相關標籤:
來源:php.cn
本網站聲明
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn
熱門推薦
熱門教學
更多>
最新下載
更多>
網站特效
網站源碼
網站素材
前端模板