<em>Mac</em>Book项目 2009年学校开始实施<em>Mac</em>Book项目,所有师生配备一本<em>Mac</em>Book,并同步更新了校园无线网络。学校每周进行电脑技术更新,每月发送技术支持资料,极大改变了教学及学习方式。因此2011
2021-06-01 09:32:01
摘要:Redis中有五巨量資料型別,分別是String、List、Set、Hash和Zset。
先問大家一個問題:你知道Java的資料型別有哪些嗎?很多小夥伴肯定會直接想到int、byte、string等等~~~但是如果這樣回答就錯啦!
Java中的資料型別包括:基本資料型別和參照資料型別,其中基本資料型別包括:byte、short、int、long、double、float、char、boolean八種,而參照資料型別則是另外三種,分別是類、介面和陣列!注意是沒有string型別的,這可是面試的一個坑哈!
而在Redis中也是有資料型別的,和Java中有所不同,在Redis中有五巨量資料型別,分別是String、List、Set、Hash和Zset。而這五種資料型別中的每一個,都對應著很多不同的使用場景。接下來我們就先來學習一下在Redis中操作string和Hash字串的命令有哪些?
String型別是在Redis中最常用的資料型別,它也是很多程式設計師在日常開發中最常使用甚至只會用的資料型別,這也就導致很多人在使用Redis的時候,就只知道使用string型別,而忽視了其他資料型別的重要性。所以我也希望大家在學習完這篇文章之後,對Redis中的資料型別有一個新的認識,不要只使用String型別進行Redis的操作啦!
注意:在Redis的使用者端中進行操作之前,一定要保證Redis的伺服器介面處於開啟狀態,否則會出現使用者端拒絕存取或打不開的情況哈!
Redis中給string型別的資料設定指定key的方法就是最基本的設定key-value的方法,
語法如下:
SET key value key為索引 value為對應的值
例如我們要設定索引為k3,值為v3的鍵值對資料
127.0.0.1:6379> SET k3 v3 OK
返回值為ok,則說明設定成功!
如果我們已經在Redis中設定了資料,那麼我們可以通過該資料的key來獲取它,語法格式如下:
GET key key為要獲取的值對應的索引
例如我們獲取剛才輸入的索引為k3,值為v3的資料,如果該索引存在,那麼將會返回對應的值,如果不存在就會返回(nil)也就是null的意思。
127.0.0.1:6379> GET k3 "v3" 127.0.0.1:6379> GET k4 (nil)
這個命令的作用是獲取Redis中已經存在的字串的子串,同時我們可以指定一個下標索引,指定要獲取哪一段字元。命令的格式如下:
GETRANGE key start end key為字串的索引 start為擷取的起始下標 end為擷取的終止下標
比如我們擷取索引為“mykey”,值為“huixiaoyuan”的資料的子串,
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"
講解一下上面的程式碼,因為字串的起始下標是0,所以第2個對應的字元是“i”,如果想要擷取字串從某一個字元到最後部分的子串,那麼可以直接將最後一個引數設定為-1.
如果你設定的獲取子串的範圍比較大,已經超出了字串原本的長度,那麼只會返回到字串的最後一個字元!
與GET命令不同,GET命令只能獲取一個key對應的值,而這個命令可以用於獲取多個key對應的值,格式如下:
MGET key1 [key2...] 在MGET的後面可以追加多個索引,以空格分開
如我們來獲取一下mykey、mykey1、mykey2分別對應的值,
127.0.0.1:6379> MGET mykey mykey1 mykey2 1) "huixiaoyuan" 2) "value1" 3) "value2"
這個命令的作用是獲取到當前索引對應的字串的長度,格式如下:
STRLEN key key為字串對應的索引 127.0.0.1:6379> STRLEN mykey (integer) 11
我們知道SET命令的作用是設定一個鍵值對,但是如果有多個鍵值對同時設定呢?這個時候就可以使用這個命令了,格式如下:
MSET key1 value1 [key2 value2 ...] key1 value1為要設定的第一個鍵值對,之後的以空格分隔
如下我們設定同時設定三個鍵值對
127.0.0.1:6379> MSET k1 v1 k2 v2 k3 v3 OK
和上面這個命令相對的還有一個,該命令僅能在key不存在的情況下才能設定,否則所有的key-value都將會賦值失敗,格式如下:
MSETNX key1 value1 [key2 value2 ...] key1 value1為要設定的第一個鍵值對,之後的以空格分隔
如我們給已經存在的k4設定值,那麼返回0,說明設定失敗,如果設定成功,則會返回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
這個命令可以將我們儲存的字元的值加1,之後返回相加後的結果,但是如果該key對應的字元不是一個數的話,就會返回一個錯誤資訊,格式如下:
INCR key key為要加1的數對應的索引
如下我們給剛才設定的k8加1,那麼就會報錯,重新設定一個數值的鍵值對,再進行加1,就可以返回對應的資料
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 命令對應的還有一個INCRBY 該命令可以給指定的key對應的資料加上指定的增量,格式如下:
INCRBY key increment key為索引 increment為要增加的值 127.0.0.1:6379> INCRBY num1 5 (integer) 16
既然存在增加的操作,那麼對應著也就是存在減少的操作,格式如下:
DECR key key為要加1的數對應的索引
上一步我們將num1對應的數值加5後得到16,現在我們對其進行減一操作。
127.0.0.1:6379> DECR num1 (integer) 15
與這個命令對應的還有減指定的資料的命令,格式如下:
DECRBY key increment key為索引 decrement為要增加的值 127.0.0.1:6379> DECRBY num1 2 (integer) 13
如果 key 已經存在並且是一個字串, APPEND 命令將指定的 value 追加到該 key 原來值(value)的末尾。返回的是追加後的長度,格式如下:
APPEND key value key為索引 value為要追加的字串
如我們在mykey1-value1的後面追加“hello”
127.0.0.1:6379> APPEND mykey1 hello (integer) 11 127.0.0.1:6379> GET mykey1 "value1hello"
Hash型別是一個String型別的field(欄位)和value(值)的對映表,它的作用是可以用來儲存我們定義的資料物件,所以簡單來說它是一個key下面儲存了多個key-value的情況,給大家簡單的話一個Hash的結構圖:
接下來我們來簡單講一下在Redis中對於Hash這種資料型別,常用的幾個命令,
設定Hash資料所使用的命令不是SET,而是HMSET,你可以理解為H代表Hash的意思,M代表Map的意思,該命令的格式如下:
HMSET key fieId1 value1 [fieId2 value2…]
如我們設定key為“myhash”,裡面儲存的field分別為name-huixiaoyuan、sex-nan、age-3的三個鍵值對
127.0.0.1:6379> HMSET myhash name huixiaoyuan sex nan age 3 OK
檢視指定雜湊表中所有的欄位和值的命令是HGETALL,作用是取出該hash中所有的資料,格式如下
HGETALL key
如我們檢視剛才設定的hash資料
127.0.0.1:6379> HGETALL myhash 1) "name" 2) "huixiaoyuan" 3) "sex" 4) "nan" 5) "age" 6) "3"
上一個命令是獲取所有的欄位,那麼現在這個命令是隻獲取指定雜湊表中指定欄位的值,命令的格式如下:
HGET key field
如我們獲取上面的雜湊表中欄位為name對應的值
127.0.0.1:6379> HGET myhash name "huixiaoyuan"
刪除一個或多個雜湊表欄位的命令是HDEL,該命令可以刪除指定雜湊表中指定的欄位,以及其對應的值,格式如下:
HDEL key field1 [field2…]
如我們要刪除索引為“myhash”的雜湊表中值為“3”,對應欄位為“age”的欄位和值為“nan”,對應欄位為“sex”的兩個欄位。
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"
該命令可以獲取指定雜湊表中欄位的數量,格式如下:
HLEN key
127.0.0.1:6379> HLEN myhash (integer) 1
該命令可以獲取指定雜湊表中所有的欄位,但是不返回欄位對應的值,格式如下:
HKEYS key
127.0.0.1:6379> HKEYS myhash 1) "name"
上一個命令是獲取到指定雜湊表中所有的欄位,但是不返回欄位對應的值,那麼這個命令就是獲取到所有的值,而不返回其對應的欄位,格式如下:
HVALS key
127.0.0.1:6379> HVALS myhash 1) "huixiaoyuan"
到此這篇關於Redis資料型別string和Hash詳解的文章就介紹到這了,更多相關Redis資料型別內容請搜尋it145.com以前的文章或繼續瀏覽下面的相關文章希望大家以後多多支援it145.com!
相關文章
<em>Mac</em>Book项目 2009年学校开始实施<em>Mac</em>Book项目,所有师生配备一本<em>Mac</em>Book,并同步更新了校园无线网络。学校每周进行电脑技术更新,每月发送技术支持资料,极大改变了教学及学习方式。因此2011
2021-06-01 09:32:01
综合看Anker超能充系列的性价比很高,并且与不仅和iPhone12/苹果<em>Mac</em>Book很配,而且适合多设备充电需求的日常使用或差旅场景,不管是安卓还是Switch同样也能用得上它,希望这次分享能给准备购入充电器的小伙伴们有所
2021-06-01 09:31:42
除了L4WUDU与吴亦凡已经多次共事,成为了明面上的厂牌成员,吴亦凡还曾带领20XXCLUB全队参加2020年的一场音乐节,这也是20XXCLUB首次全员合照,王嗣尧Turbo、陈彦希Regi、<em>Mac</em> Ova Seas、林渝植等人全部出场。然而让
2021-06-01 09:31:34
目前应用IPFS的机构:1 谷歌<em>浏览器</em>支持IPFS分布式协议 2 万维网 (历史档案博物馆)数据库 3 火狐<em>浏览器</em>支持 IPFS分布式协议 4 EOS 等数字货币数据存储 5 美国国会图书馆,历史资料永久保存在 IPFS 6 加
2021-06-01 09:31:24
开拓者的车机是兼容苹果和<em>安卓</em>,虽然我不怎么用,但确实兼顾了我家人的很多需求:副驾的门板还配有解锁开关,有的时候老婆开车,下车的时候偶尔会忘记解锁,我在副驾驶可以自己开门:第二排设计很好,不仅配置了一个很大的
2021-06-01 09:30:48
不仅是<em>安卓</em>手机,苹果手机的降价力度也是前所未有了,iPhone12也“跳水价”了,发布价是6799元,如今已经跌至5308元,降价幅度超过1400元,最新定价确认了。iPhone12是苹果首款5G手机,同时也是全球首款5nm芯片的智能机,它
2021-06-01 09:30:45