Redis散列類型
Redis是采用字典結(jié)構(gòu)以鍵值對的形式存儲數(shù)據(jù)的,而散列類型(hash)的鍵值也是一種字典結(jié)構(gòu),其存儲了字段和字段值的映射,但字段值只能是字符串,不支持其他數(shù)據(jù)類型,也就是說,散列類型不能嵌套其他的數(shù)據(jù)類型。一個散列類型鍵可以包含至多2^32-1個字段。
除了散列類型,Redis的其他數(shù)據(jù)類型同樣不支持?jǐn)?shù)據(jù)類型嵌套。比如集合類型的每個元素只能是字符串,不能是一個集合或者散列表等。
散列類型適合存儲對象:使用對象類別和ID構(gòu)成建名,使用字段表示對象的屬性,而字段值存儲屬性值。例如要存儲ID為2的汽車對象,可以分別使用名為color、name和price的三個字段來存儲該汽車的顏色、名稱和價(jià)格。
1、基本命令
例如現(xiàn)在要存儲ID為1的文章,分別有title、author、time、content
則鍵為post:1,字段分別為title、author、time、content,值分別為“the first post”、“me”、“2014-03-04”、“This is my first post.”,存儲如下
redis 127.0.0.1:6379> hmset post:1 title "the first post" author "JoJo" time 2016/08/25 content "this is my first post" OK
這里使用的是hmset命令,具體散列的基本賦值命令如下:
hset key field value
#例如hset post:2 title “second post”
hget key field
#例如hget post:2 title,獲取id為2的post的title值
hmset key field value [field value ...]
#這個同上,批量存值
hmget key field [field ...]
#批量取值,取得列表
例:
redis 127.0.0.1:6379> hmget post:1 time author 1) "2016/08/25" 2) "JoJo"
hgetall key
#取得key所對應(yīng)的所有鍵值列表,這里給出個例子
redis 127.0.0.1:6379> hgetall post:1 1) "title" 2) "the first post" 3) "author" 4) "JoJo" 5) "time" 6) "2016/08/25" 7) "content" 8) "this is my first post"
2、判斷是否存在
hexists key field
如果存在返回1,否則返回0(如果鍵不存在也返回0)。
3、當(dāng)字段不存在時(shí)賦值
hsetnx key field value
這個和hset
的區(qū)別就是如果字段存在,這個命令將不執(zhí)行任何操作,但是這里有一個區(qū)別就是Redis提供的這些命令都是原子操作,不會產(chǎn)生數(shù)據(jù)不一致問題。
例:
redis 127.0.0.1:6379> hexists post:1 time (integer) 1 //判斷是存在time字段的 redis 127.0.0.1:6379> hsetnx post:1 time 2016/08/26 (integer) 0 //不存在的話,設(shè)置time,存在的話返回0,值不變,原始值 redis 127.0.0.1:6379> hget post:1 time "2016/08/25" redis 127.0.0.1:6379> hsetnx post:1 age 23 (integer) 1 //不存在age字段,返回1,并設(shè)置age字段 redis 127.0.0.1:6379> hget post:1 age "23"
4、增加數(shù)字
hincrby key field number
這里就和incry
命令類似了。
例:
redis 127.0.0.1:6379> hincrby post:1 age 2 (integer) 25
5、刪除字段
hdel key field [field ...]
刪除字段,一個或多個,返回值是被刪除字段的個數(shù)。
6、其他命令
hkeys key
#獲取字段名
hvals key
#獲取字段名
示例如下:
redis 127.0.0.1:6379> hkeys post:1 1) "title" 2) "author" 3) "time" 4) "content" 5) "age" redis 127.0.0.1:6379> hvals post:1 1) "the first post" 2) "JoJo" 3) "2016/08/25" 4) "this is my first post" 5) "25"
最后還有一個就是獲取字段數(shù)量的命令:
hlen key
返回字段的數(shù)量
redis 127.0.0.1:6379> hlen post:1 (integer) 5
總結(jié)
以上就是Redis中散列類型常用命令的全部內(nèi)容了,希望能對大家的學(xué)習(xí)或者工作帶來一定的幫助,如果有疑問大家可以留言交流。
標(biāo)簽:揚(yáng)州 唐山 廣東 林芝 景德鎮(zhèn) 贛州 澳門 香港
巨人網(wǎng)絡(luò)通訊聲明:本文標(biāo)題《Redis中散列類型的常用命令小結(jié)》,本文關(guān)鍵詞 Redis,中散,列,類型,的,常用,;如發(fā)現(xiàn)本文內(nèi)容存在版權(quán)問題,煩請?zhí)峁┫嚓P(guān)信息告之我們,我們將及時(shí)溝通與處理。本站內(nèi)容系統(tǒng)采集于網(wǎng)絡(luò),涉及言論、版權(quán)與本站無關(guān)。