您好,登錄后才能下訂單哦!
這篇文章給大家分享的是有關(guān)Redis數(shù)據(jù)類(lèi)型string和Hash怎么用的內(nèi)容。小編覺(jué)得挺實(shí)用的,因此分享給大家做個(gè)參考,一起跟隨小編過(guò)來(lái)看看吧。
String類(lèi)型是在Redis中最常用的數(shù)據(jù)類(lèi)型,它也是很多程序員在日常開(kāi)發(fā)中最常使用甚至只會(huì)用的數(shù)據(jù)類(lèi)型,這也就導(dǎo)致很多人在使用Redis的時(shí)候,就只知道使用string類(lèi)型,而忽視了其他數(shù)據(jù)類(lèi)型的重要性。所以我也希望大家在學(xué)習(xí)完這篇文章之后,對(duì)Redis中的數(shù)據(jù)類(lèi)型有一個(gè)新的認(rèn)識(shí),不要只使用String類(lèi)型進(jìn)行Redis的操作啦!
注意:在Redis的客戶(hù)端中進(jìn)行操作之前,一定要保證Redis的服務(wù)器界面處于開(kāi)啟狀態(tài),否則會(huì)出現(xiàn)客戶(hù)端拒絕訪(fǎng)問(wèn)或打不開(kāi)的情況哈!
Redis中給string類(lèi)型的數(shù)據(jù)設(shè)置指定key的方法就是最基本的設(shè)置key-value的方法,
語(yǔ)法如下:
SET key value key為索引 value為對(duì)應(yīng)的值
例如我們要設(shè)置索引為k3,值為v3的鍵值對(duì)數(shù)據(jù)
127.0.0.1:6379> SET k3 v3 OK
返回值為ok,則說(shuō)明設(shè)置成功!
如果我們已經(jīng)在Redis中設(shè)置了數(shù)據(jù),那么我們可以通過(guò)該數(shù)據(jù)的key來(lái)獲取它,語(yǔ)法格式如下:
GET key key為要獲取的值對(duì)應(yīng)的索引
例如我們獲取剛才輸入的索引為k3,值為v3的數(shù)據(jù),如果該索引存在,那么將會(huì)返回對(duì)應(yīng)的值,如果不存在就會(huì)返回(nil)也就是null的意思。
127.0.0.1:6379> GET k3 "v3" 127.0.0.1:6379> GET k4 (nil)
這個(gè)命令的作用是獲取Redis中已經(jīng)存在的字符串的子串,同時(shí)我們可以指定一個(gè)下標(biāo)索引,指定要獲取哪一段字符。命令的格式如下:
GETRANGE key start end key為字符串的索引 start為截取的起始下標(biāo) end為截取的終止下標(biāo)
比如我們截取索引為“mykey”,值為“huixiaoyuan”的數(shù)據(jù)的子串,
127.0.0.1:6379> GETRANGE mykey 2 5 "ixia" 127.0.0.1:6379> GETRANGE mykey 2 -1 "ixiaoyuan" 127.0.0.1:6379> GETRANGE mykey 1 100 "uixiaoyuan"
講解一下上面的代碼,因?yàn)樽址钠鹗枷聵?biāo)是0,所以第2個(gè)對(duì)應(yīng)的字符是“i”,如果想要截取字符串從某一個(gè)字符到最后部分的子串,那么可以直接將最后一個(gè)參數(shù)設(shè)置為-1.
如果你設(shè)置的獲取子串的范圍比較大,已經(jīng)超出了字符串原本的長(zhǎng)度,那么只會(huì)返回到字符串的最后一個(gè)字符!
與GET命令不同,GET命令只能獲取一個(gè)key對(duì)應(yīng)的值,而這個(gè)命令可以用于獲取多個(gè)key對(duì)應(yīng)的值,格式如下:
MGET key1 [key2...] 在MGET的后面可以追加多個(gè)索引,以空格分開(kāi)
如我們來(lái)獲取一下mykey、mykey1、mykey2分別對(duì)應(yīng)的值,
127.0.0.1:6379> MGET mykey mykey1 mykey2 1) "huixiaoyuan" 2) "value1" 3) "value2"
這個(gè)命令的作用是獲取到當(dāng)前索引對(duì)應(yīng)的字符串的長(zhǎng)度,格式如下:
STRLEN key key為字符串對(duì)應(yīng)的索引 127.0.0.1:6379> STRLEN mykey (integer) 11
我們知道SET命令的作用是設(shè)置一個(gè)鍵值對(duì),但是如果有多個(gè)鍵值對(duì)同時(shí)設(shè)置呢?這個(gè)時(shí)候就可以使用這個(gè)命令了,格式如下:
MSET key1 value1 [key2 value2 ...] key1 value1為要設(shè)置的第一個(gè)鍵值對(duì),之后的以空格分隔
如下我們?cè)O(shè)置同時(shí)設(shè)置三個(gè)鍵值對(duì)
127.0.0.1:6379> MSET k1 v1 k2 v2 k3 v3 OK
和上面這個(gè)命令相對(duì)的還有一個(gè),該命令僅能在key不存在的情況下才能設(shè)置,否則所有的key-value都將會(huì)賦值失敗,格式如下:
MSETNX key1 value1 [key2 value2 ...] key1 value1為要設(shè)置的第一個(gè)鍵值對(duì),之后的以空格分隔
如我們給已經(jīng)存在的k4設(shè)置值,那么返回0,說(shuō)明設(shè)置失敗,如果設(shè)置成功,則會(huì)返回1
127.0.0.1:6379> MSETNX k1 v1 k4 v4 (integer) 0 127.0.0.1:6379> MSETNX k4 v4 k5 v5 (integer) 1
這個(gè)命令可以將我們存儲(chǔ)的字符的值加1,之后返回相加后的結(jié)果,但是如果該key對(duì)應(yīng)的字符不是一個(gè)數(shù)的話(huà),就會(huì)返回一個(gè)錯(cuò)誤信息,格式如下:
INCR key key為要加1的數(shù)對(duì)應(yīng)的索引
如下我們給剛才設(shè)置的k8加1,那么就會(huì)報(bào)錯(cuò),重新設(shè)置一個(gè)數(shù)值的鍵值對(duì),再進(jìn)行加1,就可以返回對(duì)應(yīng)的數(shù)據(jù)
127.0.0.1:6379> INCR k8 (error) ERR value is not an integer or out of range 127.0.0.1:6379> SET num1 10 OK 127.0.0.1:6379> INCR num1 (integer) 11
與INCR 命令對(duì)應(yīng)的還有一個(gè)INCRBY 該命令可以給指定的key對(duì)應(yīng)的數(shù)據(jù)加上指定的增量,格式如下:
INCRBY key increment key為索引 increment為要增加的值 127.0.0.1:6379> INCRBY num1 5 (integer) 16
既然存在增加的操作,那么對(duì)應(yīng)著也就是存在減少的操作,格式如下:
DECR key key為要加1的數(shù)對(duì)應(yīng)的索引
上一步我們將num1對(duì)應(yīng)的數(shù)值加5后得到16,現(xiàn)在我們對(duì)其進(jìn)行減一操作。
127.0.0.1:6379> DECR num1 (integer) 15
與這個(gè)命令對(duì)應(yīng)的還有減指定的數(shù)據(jù)的命令,格式如下:
DECRBY key increment key為索引 decrement為要增加的值 127.0.0.1:6379> DECRBY num1 2 (integer) 13
如果 key 已經(jīng)存在并且是一個(gè)字符串, APPEND 命令將指定的 value 追加到該 key 原來(lái)值(value)的末尾。返回的是追加后的長(zhǎng)度,格式如下:
APPEND key value key為索引 value為要追加的字符串
如我們?cè)趍ykey1-value1的后面追加“hello”
127.0.0.1:6379> APPEND mykey1 hello (integer) 11 127.0.0.1:6379> GET mykey1 "value1hello"
Hash類(lèi)型是一個(gè)String類(lèi)型的field(字段)和value(值)的映射表,它的作用是可以用來(lái)存儲(chǔ)我們定義的數(shù)據(jù)對(duì)象,所以簡(jiǎn)單來(lái)說(shuō)它是一個(gè)key下面存儲(chǔ)了多個(gè)key-value的情況,給大家簡(jiǎn)單的話(huà)一個(gè)Hash的結(jié)構(gòu)圖:
接下來(lái)我們來(lái)簡(jiǎn)單講一下在Redis中對(duì)于Hash這種數(shù)據(jù)類(lèi)型,常用的幾個(gè)命令,
設(shè)置Hash數(shù)據(jù)所使用的命令不是SET,而是HMSET,你可以理解為H代表Hash的意思,M代表Map的意思,該命令的格式如下:
HMSET key fieId1 value1 [fieId2 value2…]
key為這個(gè)Hash數(shù)據(jù)對(duì)應(yīng)的唯一性索引
field為下面存儲(chǔ)的一個(gè)鍵值對(duì)的鍵
value為該鍵對(duì)應(yīng)的值
如我們?cè)O(shè)置key為“myhash”,里面存儲(chǔ)的field分別為name-huixiaoyuan、sex-nan、age-3的三個(gè)鍵值對(duì)
127.0.0.1:6379> HMSET myhash name huixiaoyuan sex nan age 3 OK
查看指定哈希表中所有的字段和值的命令是HGETALL,作用是取出該hash中所有的數(shù)據(jù),格式如下
HGETALL key
其中key為對(duì)應(yīng)著這個(gè)Hash數(shù)據(jù)的索引
如我們查看剛才設(shè)置的hash數(shù)據(jù)
127.0.0.1:6379> HGETALL myhash 1) "name" 2) "huixiaoyuan" 3) "sex" 4) "nan" 5) "age" 6) "3"
上一個(gè)命令是獲取所有的字段,那么現(xiàn)在這個(gè)命令是只獲取指定哈希表中指定字段的值,命令的格式如下:
HGET key field
key哈希表的索引
field獲取的值對(duì)應(yīng)的字段
如我們獲取上面的哈希表中字段為name對(duì)應(yīng)的值
127.0.0.1:6379> HGET myhash name "huixiaoyuan"
刪除一個(gè)或多個(gè)哈希表字段的命令是HDEL,該命令可以刪除指定哈希表中指定的字段,以及其對(duì)應(yīng)的值,格式如下:
HDEL key field1 [field2…]
key為指定的哈希表的索引
field為要?jiǎng)h除的值對(duì)應(yīng)的字段,如果要?jiǎng)h除多個(gè)就以空格分開(kāi)
如我們要?jiǎng)h除索引為“myhash”的哈希表中值為“3”,對(duì)應(yīng)字段為“age”的字段和值為“nan”,對(duì)應(yīng)字段為“sex”的兩個(gè)字段。
127.0.0.1:6379> HGET myhash name "huixiaoyuan" 127.0.0.1:6379> HDEL myhash age sex (integer) 2 127.0.0.1:6379> HGETALL myhash 1) "name" 2) "huixiaoyuan"
該命令可以獲取指定哈希表中字段的數(shù)量,格式如下:
HLEN key
key為指定的哈希表的索引
127.0.0.1:6379> HLEN myhash (integer) 1
該命令可以獲取指定哈希表中所有的字段,但是不返回字段對(duì)應(yīng)的值,格式如下:
HKEYS key
key為指定的哈希表的索引
127.0.0.1:6379> HKEYS myhash 1) "name"
上一個(gè)命令是獲取到指定哈希表中所有的字段,但是不返回字段對(duì)應(yīng)的值,那么這個(gè)命令就是獲取到所有的值,而不返回其對(duì)應(yīng)的字段,格式如下:
HVALS key
key為指定的哈希表的索引
127.0.0.1:6379> HVALS myhash 1) "huixiaoyuan"
感謝各位的閱讀!關(guān)于“Redis數(shù)據(jù)類(lèi)型string和Hash怎么用”這篇文章就分享到這里了,希望以上內(nèi)容可以對(duì)大家有一定的幫助,讓大家可以學(xué)到更多知識(shí),如果覺(jué)得文章不錯(cuò),可以把它分享出去讓更多的人看到吧!
免責(zé)聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀(guān)點(diǎn)不代表本網(wǎng)站立場(chǎng),如果涉及侵權(quán)請(qǐng)聯(lián)系站長(zhǎng)郵箱:is@yisu.com進(jìn)行舉報(bào),并提供相關(guān)證據(jù),一經(jīng)查實(shí),將立刻刪除涉嫌侵權(quán)內(nèi)容。