最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

Redis數(shù)據(jù)類型string和Hash詳解

 更新時(shí)間:2022年03月04日 11:59:27   作者:灰小猿  
大家都知道Redis中有五大數(shù)據(jù)類型分別是String、List、Set、Hash和Zset,本文給大家分享Redis數(shù)據(jù)類型string和Hash的相關(guān)操作,感興趣的朋友跟隨小編一起看看吧

摘要:Redis中有五大數(shù)據(jù)類型,分別是String、List、Set、Hash和Zset。

先問大家一個(gè)問題:你知道Java的數(shù)據(jù)類型有哪些嗎?很多小伙伴肯定會(huì)直接想到int、byte、string等等~~~但是如果這樣回答就錯(cuò)啦!

Java中的數(shù)據(jù)類型包括:基本數(shù)據(jù)類型和引用數(shù)據(jù)類型,其中基本數(shù)據(jù)類型包括:byte、short、int、long、double、float、char、boolean八種,而引用數(shù)據(jù)類型則是另外三種,分別是類、接口和數(shù)組!注意是沒有string類型的,這可是面試的一個(gè)坑哈!

而在Redis中也是有數(shù)據(jù)類型的,和Java中有所不同,在Redis中有五大數(shù)據(jù)類型,分別是String、List、Set、Hash和Zset。而這五種數(shù)據(jù)類型中的每一個(gè),都對(duì)應(yīng)著很多不同的使用場景。接下來我們就先來學(xué)習(xí)一下在Redis中操作string和Hash字符串的命令有哪些?

String類型命令操作

String類型是在Redis中最常用的數(shù)據(jù)類型,它也是很多程序員在日常開發(fā)中最常使用甚至只會(huì)用的數(shù)據(jù)類型,這也就導(dǎo)致很多人在使用Redis的時(shí)候,就只知道使用string類型,而忽視了其他數(shù)據(jù)類型的重要性。所以我也希望大家在學(xué)習(xí)完這篇文章之后,對(duì)Redis中的數(shù)據(jù)類型有一個(gè)新的認(rèn)識(shí),不要只使用String類型進(jìn)行Redis的操作啦!

注意:在Redis的客戶端中進(jìn)行操作之前,一定要保證Redis的服務(wù)器界面處于開啟狀態(tài),否則會(huì)出現(xiàn)客戶端拒絕訪問或打不開的情況哈!

設(shè)置指定key的值

Redis中給string類型的數(shù)據(jù)設(shè)置指定key的方法就是最基本的設(shè)置key-value的方法,

語法如下:

SET key value
? ? key為索引
? ? value為對(duì)應(yīng)的值

例如我們要設(shè)置索引為k3,值為v3的鍵值對(duì)數(shù)據(jù)

127.0.0.1:6379> SET k3 v3
OK

返回值為ok,則說明設(shè)置成功!

獲取指定key的值

如果我們已經(jīng)在Redis中設(shè)置了數(shù)據(jù),那么我們可以通過該數(shù)據(jù)的key來獲取它,語法格式如下:

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)

返回key中字符串值的子串

這個(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)超出了字符串原本的長度,那么只會(huì)返回到字符串的最后一個(gè)字符!

獲取多個(gè)給定key的值

與GET命令不同,GET命令只能獲取一個(gè)key對(duì)應(yīng)的值,而這個(gè)命令可以用于獲取多個(gè)key對(duì)應(yīng)的值,格式如下:

MGET key1 [key2...]
? ? 在MGET的后面可以追加多個(gè)索引,以空格分開

如我們來獲取一下mykey、mykey1、mykey2分別對(duì)應(yīng)的值,

127.0.0.1:6379> MGET mykey mykey1 mykey2
1) "huixiaoyuan"
2) "value1"
3) "value2"

返回key所對(duì)應(yīng)的字符串的長度

這個(gè)命令的作用是獲取到當(dāng)前索引對(duì)應(yīng)的字符串的長度,格式如下:

STRLEN key
? ? key為字符串對(duì)應(yīng)的索引
127.0.0.1:6379> STRLEN mykey
(integer) 11

設(shè)置一個(gè)或多個(gè)鍵值對(duì)

我們知道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,說明設(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

將key中所存儲(chǔ)的數(shù)值加一

這個(gè)命令可以將我們存儲(chǔ)的字符的值加1,之后返回相加后的結(jié)果,但是如果該key對(duì)應(yīng)的字符不是一個(gè)數(shù)的話,就會(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

將key中所存儲(chǔ)的數(shù)值減一

既然存在增加的操作,那么對(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 原來值(value)的末尾。返回的是追加后的長度,格式如下:

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類型

Hash類型是一個(gè)String類型的field(字段)和value(值)的映射表,它的作用是可以用來存儲(chǔ)我們定義的數(shù)據(jù)對(duì)象,所以簡單來說它是一個(gè)key下面存儲(chǔ)了多個(gè)key-value的情況,給大家簡單的話一個(gè)Hash的結(jié)構(gòu)圖:

接下來我們來簡單講一下在Redis中對(duì)于Hash這種數(shù)據(jù)類型,常用的幾個(gè)命令,

設(shè)置一個(gè)Hash數(shù)據(jù)

設(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"

獲取存儲(chǔ)在哈希表中指定字段的值

上一個(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è)哈希表字段

刪除一個(gè)或多個(gè)哈希表字段的命令是HDEL,該命令可以刪除指定哈希表中指定的字段,以及其對(duì)應(yīng)的值,格式如下:

HDEL key field1 [field2…]

  • key為指定的哈希表的索引
  • field為要?jiǎng)h除的值對(duì)應(yīng)的字段,如果要?jiǎng)h除多個(gè)就以空格分開

如我們要?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ù)量

該命令可以獲取指定哈希表中字段的數(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ù)類型string和Hash詳解的文章就介紹到這了,更多相關(guān)Redis數(shù)據(jù)類型內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

相關(guān)文章

  • Redis筆記點(diǎn)贊排行榜的實(shí)現(xiàn)示例

    Redis筆記點(diǎn)贊排行榜的實(shí)現(xiàn)示例

    探店筆記類似點(diǎn)評(píng)網(wǎng)站的評(píng)價(jià),本文主要介紹了Redis筆記點(diǎn)贊排行榜的實(shí)現(xiàn)示例,文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2023-01-01
  • 詳解Redis實(shí)現(xiàn)限流的三種方式

    詳解Redis實(shí)現(xiàn)限流的三種方式

    這篇文章主要介紹了詳解Redis實(shí)現(xiàn)限流的三種方式,文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2021-04-04
  • redis restore 命令的用法實(shí)例詳解

    redis restore 命令的用法實(shí)例詳解

    Redis的RESTORE命令用于將DUMP生成的序列化數(shù)據(jù)恢復(fù)為鍵值,適用于數(shù)據(jù)遷移、備份恢復(fù)和跨實(shí)例同步,本文介紹redis restore 命令的用法,感興趣的朋友一起看看吧
    2025-02-02
  • redis.clients.jedis.exceptions.JedisDataException異常的錯(cuò)誤解決

    redis.clients.jedis.exceptions.JedisDataException異常的錯(cuò)誤解決

    本文主要介紹了redis.clients.jedis.exceptions.JedisDataException異常的錯(cuò)誤解決,這個(gè)異常通常發(fā)生在嘗試連接到一個(gè)?Redis?服務(wù)器時(shí),客戶端發(fā)送了一個(gè)?AUTH?命令來驗(yàn)證密碼,但是沒有配置密碼驗(yàn)證,下來就來解決一下
    2024-05-05
  • Redis實(shí)現(xiàn)高并發(fā)計(jì)數(shù)器

    Redis實(shí)現(xiàn)高并發(fā)計(jì)數(shù)器

    這篇文章主要為大家詳細(xì)介紹了Redis實(shí)現(xiàn)高并發(fā)計(jì)數(shù)器,具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2018-10-10
  • redis學(xué)習(xí)之RDB、AOF與復(fù)制時(shí)對(duì)過期鍵的處理教程

    redis學(xué)習(xí)之RDB、AOF與復(fù)制時(shí)對(duì)過期鍵的處理教程

    這篇文章主要給大家介紹了關(guān)于redis學(xué)習(xí)之RDB、AOF與復(fù)制時(shí)對(duì)過期鍵處理的相關(guān)資料,文中通過示例代碼介紹的非常詳細(xì),對(duì)大家學(xué)習(xí)或者使用redis具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面來一起學(xué)習(xí)學(xué)習(xí)吧
    2019-11-11
  • Redis內(nèi)存碎片率調(diào)優(yōu)處理方式

    Redis內(nèi)存碎片率調(diào)優(yōu)處理方式

    Redis集群因內(nèi)存碎片率超過1.5觸發(fā)告警,分析發(fā)現(xiàn)內(nèi)因與外因?qū)е聝?nèi)存碎片,內(nèi)因?yàn)椴僮飨到y(tǒng)內(nèi)存分配機(jī)制,外因?yàn)镽edis操作特性,使用Redis內(nèi)置內(nèi)存碎片清理機(jī)制可有效降低碎片率,但需注意可能影響性能,建議使用MEMORY命令診斷內(nèi)存使用情況,合理配置參數(shù)以優(yōu)化性能
    2024-09-09
  • 淺談redis緩存在項(xiàng)目中的使用

    淺談redis緩存在項(xiàng)目中的使用

    最近由于項(xiàng)目需要,在系統(tǒng)緩存服務(wù)部分上用到了redis,本文就淺談下在redis緩存在項(xiàng)目中的使用,感興趣的小伙伴們可以參考一下
    2021-05-05
  • Redis實(shí)現(xiàn)庫存扣減的示例代碼

    Redis實(shí)現(xiàn)庫存扣減的示例代碼

    在日常開發(fā)中有很多地方都有類似扣減庫存的操作,本文主要介紹了Redis實(shí)現(xiàn)庫存扣減的示例代碼,具有一定的參考價(jià)值,感興趣的可以了解一下
    2023-07-07
  • redis實(shí)現(xiàn)延遲任務(wù)的項(xiàng)目實(shí)踐

    redis實(shí)現(xiàn)延遲任務(wù)的項(xiàng)目實(shí)踐

    本文主要介紹了redis實(shí)現(xiàn)延遲任務(wù)的項(xiàng)目實(shí)踐,文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2023-07-07

最新評(píng)論

黄梅县| 宁国市| 富宁县| 芷江| 团风县| 汉川市| 八宿县| 西吉县| 台北县| 英吉沙县| 昌图县| 安新县| 乌兰浩特市| 南和县| 新巴尔虎右旗| 奉新县| 广安市| 双柏县| 泾阳县| 庆阳市| 镇巴县| 武陟县| 大城县| 探索| 澄城县| 樟树市| 嘉义县| 南皮县| 泸溪县| 黎川县| 沁阳市| 玛曲县| 安仁县| 柘城县| 吴桥县| 苍山县| 武安市| 炉霍县| 星子县| 海原县| 东辽县|