上圖中即為redis中5種基本數據類型,在沒接觸過redis之前,聽過最多相關的字眼就是鍵值對key-value之類,立馬讓我想到了HashMap。在HashMap中,key和value的的數據類型都可以指定,value也可以是HashMap類型。而在這裡,redis的基本數據類型是針對的value ...
上圖中即為redis中5種基本數據類型,在沒接觸過redis之前,聽過最多相關的字眼就是鍵值對key-value之類,立馬讓我想到了HashMap。在HashMap中,key和value的的數據類型都可以指定,value也可以是HashMap類型。而在這裡,redis的基本數據類型是針對的value,有這5種。
文中所用測試記錄環境在Linux下,命令操作在SSH客戶端下,這裡使用的是Xshell 5,個人使用感覺很方便,同一系列的Xftp 5用於遠程文件上傳操作也很不錯。如有需要,可直接進入官網下載,有免費版本(Free for Home/School),點擊傳送門,也可以留下郵箱,我會儘快發送過去。
一、字元串(String)常用命令
1 SET key value 設置指定 key 的值 2 GET key 獲取指定 key 的值 3 GETRANGE key start end 返回 key 中字元串值的子字元串(這裡的start和end即起始子字元的索引,例如字元串abcde,取1至3,即拿到bcd,索引從0開始計數) 4 GETSET key value 將給定 key 的值設為 value ,並返回 key 的舊值 5 MSET key value [key value ...] 同時設置一個或多個 key-value 對。(對比MGET) 6 MGET key1 [key2..] 獲取所有(一個或多個)給定 key 的值。(這裡的M可以記憶為Many,許多的意思,便於理解) 7 SETEX key seconds value 將值 value 關聯到 key ,並將 key 的過期時間設為 seconds (以秒為單位)。 8 SETNX key value 只有在 key 不存在時設置 key 的值。(這裡的SETNX,後面的NX,個人記憶為Not Exists,不存在的) 9 MSETNX key value [key value ...] 同時設置一個或多個 key-value 對,當且僅當所有給定 key 都不存在。 10 STRLEN key 返回 key 所儲存的字元串值的長度。(String 的 Length) 11 SETEX key seconds value 將值 value 關聯到 key ,並將 key 的過期時間設為 seconds (以秒為單位)。 12 PSETEX key milliseconds value 這個命令和 SETEX 命令相似,但它以毫秒為單位設置 key 的生存時間,而不是像 SETEX 命令那樣,以秒為單位。 13 INCR key 將 key 中儲存的數字值增一。(String中存為類似102、88的數字字元串情況) 14 INCRBY key increment 將 key 所儲存的值加上給定的增量值(increment)(上面的是加一,如果想增量為指定數值,即可用該命令) 15 INCRBYFLOAT key increment 將 key 所儲存的值加上給定的浮點增量值(increment) 。 16 DECR key 將 key 中儲存的數字值減一。 17 DECRBY key decrement key 所儲存的值減去給定的減量值(decrement) 。 18 APPEND key value 如果 key 已經存在並且是一個字元串, APPEND 命令將 value 追加到 key 原來的值的末尾。
二、Hash(哈希)常用命令
由於是Hash類型的相關命令,可以看到,命令開頭字元均為H。說起Hash、Key-Value、鍵值對,第一時間想到了Map/HashMap,多個鍵值對?同時,我們在開發過程中操作的那些實體對象,往往有多個屬性,而它們的屬性和屬性值一一對應起來是不是跟這裡的鍵值對有點吻合,在redis里,每個hash可以存儲2的32次方-1個鍵值對(40多億),所以hash很適合存儲對象。
1 HSET key field value 將哈希表 key 中的欄位 field 的值設為 value 。 2 HSETNX key field value 只有在欄位 field 不存在時,設置哈希表欄位的值。 3 HGET key field 獲取存儲在哈希表中指定欄位的值。 4 HMSET key field1 value1 [field2 value2 ] 同時將多個 field-value (域-值)對設置到哈希表 key 中。 5 HMGET key field1 [field2] 獲取所有給定欄位的值 6 HGETALL key 獲取在哈希表中指定 key 的所有欄位和值(這個命令獲取到其中完整內容了,實際情況下數據量巨大的時候不適用) 7 HKEYS key 獲取所有哈希表中的欄位 8 HVALS key 獲取哈希表中所有值 9 HEXISTS key field 查看哈希表 key 中,指定的欄位是否存在。 10 HLEN key 獲取哈希表中欄位的數量 11 HDEL key field1 [field2] 刪除一個或多個哈希表欄位 12 HINCRBY key field increment 為哈希表 key 中的指定欄位的整數值加上增量 increment 。 13 HINCRBYFLOAT key field increment 為哈希表 key 中的指定欄位的浮點數值加上增量 increment 。
三、列表(List)常用命令
Redis的list是元素都為String類型的雙向鏈表,既然是雙向列表,操作也分雙向,這裡的列表頭部即左邊第一個或者首個,列表尾部即右邊方向第一個或者首個。以LRANGE key start stop為例,該命令用於獲取列表指定範圍內的元素,這裡LRANGE指定從左到右方向,key為鍵名稱,start和end分別代表想要獲取的範圍起始元素的索引,例子:創建列表testList,內容為 C C++ C# Java Php Python,一共6個元素(命令RPUSH testList C C++ C# Java Php Python),瞭解數組等結構的不難知道,由於索引是從0開始,所以這6個元素的索引從左至右分別為0 1 2 3 4 5,所以如果我們想要獲取Java Php Python這3個元素,我們用(命令LRANGE testList 3 5)即可得到想要的結果,引申到這裡的redis雙向列表,使用負數下標,以 -1 表示列表的最後一個元素, -2 表示列表的倒數第二個元素,以此類推,則上述6個元素的索引從左到右也可以置為-6 -5 -4 -3 -2 -1 ,這樣一來,我們的獲取方式更加靈活了,不論列表長度多少,我們想要獲取全部元素的話都可以通用 LRANGE Key 0 -1來實現。例子中四種方式如下圖示意。
List作為雙向鏈表,下圖簡單示例雙向操作過程
1 LPUSH key value1 [value2] 將一個或多個值從左插入到列表頭部 2 LPUSHX key value 將一個值從左插入到已存在的列表頭部 3 RPUSH key value1 [value2] 將一個或多個值從右插入到列表尾部 4 RPUSHX key value 將一個值從右插入到已存在的列表尾部 5 LLEN key 獲取列表長度 6 LPOP key 移出並獲取列表的第一個元素 7 RPOP key 移除並獲取列表最後一個元素 8 LINDEX key index 通過索引獲取列表中的元素 9 LSET key index value 通過索引設置列表元素的值 10 LRANGE key start stop 獲取列表指定範圍內的元素 11 LREM key count value 移除列表元素(記憶為left remove) count > 0 : 從左向右,移除與 VALUE 相等的元素,數量為 COUNT 。 count < 0 : 從右向左,移除與 VALUE 相等的元素,數量為 COUNT 的絕對值。 count = 0 : 移除表中所有與 VALUE 相等的值。 12 LTRIM key start stop 對一個列表進行修剪(trim),就是說,讓列表只保留指定區間內的元素,不在指定區間之內的元素都將被刪除。 13 BLPOP key1 [key2 ] timeout 移出並獲取列表的第一個元素, 如果列表沒有元素會阻塞列表直到等待超時或發現可彈出元素為止。 14 BRPOP key1 [key2 ] timeout 移出並獲取列表的最後一個元素, 如果列表沒有元素會阻塞列表直到等待超時或發現可彈出元素為止。(與上者區別,一個是針對左邊也就是列表首部,一個是右邊 也就是尾部。這個timeout是阻塞時間,以秒為單位) 15 BRPOPLPUSH source destination timeout 從列表中彈出一個值,將彈出的元素插入到另外一個列表中並返回它; 如果列表沒有元素會阻塞列表直到等待超時或發現可彈出元素為止。 16 LINSERT key BEFORE|AFTER pivot value 在列表的元素前或者後插入元素(這個地方要註意,如果里列表中有重覆元素,插入過程只會發生在第一個元素上) 17 RPOPLPUSH source destination 移除列表的最後一個元素,並將該元素添加到另一個列表並返回
四、集合(Set)常用命令
Set是string類型的無序集合,與列表List中可存放重覆元素不同,Set中不能出現重覆元素。
命令均以首字母s開頭 1 SADD key member1 [member2] 向集合添加一個或多個成員 2 SCARD key 獲取集合的成員數 3 SISMEMBER key member 判斷 member 元素是否是集合 key 的成員(是的話返回1,否則返回0) 4 SMEMBERS key 返回集合中的所有成員 5 SREM key member1 [member2] 移除集合中一個或多個成員(返回刪除數量) 6 SPOP key 移除並返回集合中的一個隨機元素 7 SRANDMEMBER key [count] 返回集合中一個或多個隨機數 8 SDIFF key1 [key2] 返回給定所有集合的