redis作為一個效能優越的索引值(key-value)型資料庫,支援多種資料結構。有strings–list–set–sorts set–hash幾種。有必要瞭解常用操作。 strings
Strings:字串是二進位安全的,這意味著一個一個redis的字串能包含任意類型的資料,比如:JPEG格式的圖片或者一個序列化的數組或對象。一個字串最多512M內容。
SET key value [EX #] [NX|XX] //設定鍵-值。NX表示鍵不存在才設定值。如果存在則不設定。XX相反。EX後加到期時間。還有PX類型,毫秒。GETINCR //加或減key中的數字,只能對整數操作。DECREXISTSETEX key seconds value
將值value關聯到key,並將 key 的存留時間設 為 seconds (以秒為單位)。如果 key 已經存在, SETEX 命令將覆寫舊值。
傳回值: 設定成功時返回 OK 。 當 seconds 參數不合法時,返回一個錯誤。
SETRANGE key offset value
用 value 參數覆寫(overwrite)給定 key 所儲存的 字串值,從位移量 offset 開始。 不存在的 key 當作空白字串處理。
- 傳回值: 被 SETRANGE 修改之後,字串的長度。
MSET key value [key value ...]
同時設定一個或多個 key-value 對。 如果某個給定 key 已經存在,那麼 MSET 會用新 值覆蓋原來的舊值,如果這不是你所希望的效果, 請考慮使用 MSETNX 命令:它只會在所有給定 key 都不存在的情況下進行設定作業。
- 傳回值: 總是返回 OK (因為 MSET 不可能失敗)
GETRANGE key start end
返回 key 中字串值的子字串,字串的截取範 圍由 start 和 end 兩個位移量決定(包括 start 和 end 在內)。 負數位移量表示從字串最後開始計數, -1 表示 最後一個字元, -2 表示倒數第二個,以此類推。
- 傳回值: 截取得出的子字串。
APPEND key value
如果 key 已經存在並且是一個字串, APPEND 命令將 value 追加到 key 原來的值的末尾。 如果 key 不存在, APPEND 就簡單地將給定 key 設為 value ,就像執行 SET key value 一樣。
- 傳回值: 追加 value 之後, key 中字串的長度 lists
Lists:鍵指向一個容器。可以在左右進行添加字串,主要功能是push.pop.擷取一個範圍的所有值,等等。list可當成是lists或是棧。
LPUSH //`LPUSH SS MON ` 定義了一個list,或者左側增加值。 返回list的長度。RPUSH //這是右側增加值,上面是右側增加。LPOP //左彈。返回的是被彈出的元素。彈完就沒了。不存在則返會null。RPOP //右彈。LINDEXLSET //LSET key index value將列表 key 下標為 index 的元素的值設定為 value 。 當 index 參數超出範圍,或對一個空列表( key 不 存在)進行 LSET 時,返回一個錯誤。 傳回值:操作成功返回OK,否則返回錯誤資訊。LINSERT //LINSERT key BEFORE|AFTER pivot value 將值value插入到列表key中, 位於值 pivot 之前或之 後。 當 pivot 不存在於列表 key 時,不執行任何操作。 當 key 不存在時, key 被視為空白列表,不執行任何操作。 如果 key 不是清單類型,返回一個錯誤。
傳回值:
如果命令執行成功,返回插入操作完成之後,列表 的長度。 如果沒有找到 pivot ,返回 -1 。 如果 key 不存在或為空白列表,返回 0 。
LTRIM //LTRIM key start stop 對一個列表進行修剪(trim),就是說,讓列表只保留指定區 間內的元素,不在指定區間之內的元素都將被刪除。 下標(index)參數 start 和 stop 都以 0 為底,也就是說, 以 0 表示列表的第一個元素,以 1 表示列表的第二個元素 ,以此類推。你也可以使用負數下標,以 -1 表示列表的最後一個元素, -2 表示列表的倒數第二個元素, 以此類推。當 key 不是清單類型時,返回一個錯誤。
傳回值: 命令執行成功時,返回 ok 。
RPOPLPUSH //RPOPLPUSH source destination 命令 RPOPLPUSH 在一個原子時間內,執行兩個動作:1 將列表 source 中的最後一個元素(尾元素)彈出,並返回給 用戶端。2.將 source 彈出的元素插入到列表 destination , 作為 destination 列表的的頭元素。 如果 source 不存在,值 nil 被返回,並且不執行其他動作。 如果 source 和 destination 相同,則列表中的表尾元素 被移動到表頭,並返回該元素,可以把這種特殊情況視作 列表的旋轉(rotation)操作。傳回值: 被彈出的元素。
sets
Sets:最多40億元素。
SADD //建立新的集合。`SADD w1 xxx xxx xx`。也可添加新的元素,重複元素會被忽略。返回被添加到集合中的新元素的數量,不包括被忽略的元素。SINTER //插入。SUNION //SUNION key [key] 返回一個集合的全部成員的列表。SPOP //隨機彈出。如果不彈出只是查看的話,使用SRANDMEMBER命令。傳回值:被移除的隨機元素。或是空。SISMEMBER //查看某一元素在不在列表中。SINTER //求交集。SDIFF//SDIFF key [key] 返回一個集合的全部成員,該集合是所有給定集合之間的差積。傳回值:一個包含差積成員的列表。SMOVE sources destination member 將member元素從source集合移動到destination集合。源集合沒有的元素不執行操作,否則執行。源和目的都有該元素,則源會被移除。元素不存在返回錯誤。成功返回1,如果不是source的元素則返回0.
sorted sets
Sorted Sets: //有序集合。
ZADD //定義或增加引索。ZADD key score member [[score member] [score member] ...]ZRANGE //指明起始和結束索引。ZCARD //定義ZRANK //ZRANK key member 返回成員的排名。其中有序整合員按照score值遞增以排名為0。使用ZREVRANK命令可以獲得成員按score值遞減(從大到小)排列的排名。排名以 0 為底,也就是說, score 值最小的成員排名 為 0 。使用 ZREVRANK 命令可以獲得成員按 score 值遞減(從大到小)排列的排名。
傳回值:如果member是有序集key的成員,返返回 member 的 排名。 如果 member 不是有序集 key 的成員,返回nil
ZINCRBY //ZINCRBY key increment member 為集合 key 的成員member的score 值加上增量 increment 。可以通過傳遞一個負數值 increment ,讓 score 減去相應的值,比如 ZINCRBY key -5 member , 就是讓 member 的 score 值減去 5 。 當 key 不存在,或 member 不是 key 的成員時, ZINCRBY key increment member 等同於 ZADD key increment member 。
當key不是有序集類型時,返回一個錯誤。score值可以是整數值或雙精確度浮點數。
傳回值:member成員的新score值,以字串形式表示。
ZREMRANGEBYRANK key start stop //移除有序集 key 中,指定排名(rank)區間內的所有成員。 區間分別以下標參數 start 和 stop 指出,包含 start 和 stop 在內。 下標參數 start 和 stop 都以 0 為底,也就是說,以 0 表 示有序集第一個成員,以 1 表示有序集第二個成員,以此 類推。 你也可以使用負數下標,以 -1 表示最後一個成員, -2 表 示倒數第二個成員,以此類推。 傳回值: 被移除成員的數量。
ZADD weekday1 1 mon 2 tue 3 web //定義一個有序集合。或者添加。或者更新集合。返回被成功添加的新成員的數量,不包括被更新的,已存在的成員。ZRANGE weekday1 //返回 integer 3 ZRANGE weekday1 tue //返回 integer 1ZSCORE weekday1 1 //根據元素返回SCORE.
hash
Hash:關聯陣列,2.0引入。Redis hash是一個string類型的field和valu e的映射表。 它的添加、 刪除操作都是0(1)( 平均)。 hash特別適合用於儲存物件。 相較 於將對象的每個欄位存成單個string類型。 將一個Object Storage Service在hash類型中會佔用更少的 記憶體, 並且可以更方便的存取整個對象。
HSET //HSET key field value 將雜湊表 key 中的域 field 的值設為 value 。 如果 key 不存在,一個新的雜湊表被建立並進行 HSET 操作。 如果域 field 已經存在於雜湊表中,舊值將被覆蓋。
傳回值: 如果 field 是雜湊表中的一個建立域,並且值 設定成功,返回 1 。 如果雜湊表中域 field 已經存在且舊值已被新 值覆蓋,返回 0 。
HMSET //HMSET key field value [field value ...] 同時將多個 field-value (域-值)對設定到雜湊表 key 中。 此命令會覆蓋雜湊表中已存在的域。 如果 key 不存在,一個空雜湊表被建立並執行 HMSET 操作。
傳回值: 如果命令執行成功,返回 OK 。 當 key 不是雜湊表(hash)類型時,返回一個錯誤。
HINCRBY //HINCRBY key field increment 為雜湊表 key 中的域 field 的值加上增量 increment 。 增量也可以為負數,相當於對給定域進行減法操作。 如果 key 不存在,一個新的雜湊表被建立並執行 HINCRBY 命令。 如果域 field 不存在,那麼在執行命令前,域的值被初始 化為 0 。 對一個儲存字串值的域 field 執行 HINCRBY 命令將造 成一個錯誤。
傳回值: 執行 HINCRBY 命令之後,雜湊表 key 中域 field 的值
HMGET //HMGET key field [field ...] 返回雜湊表 key 中,一個或多個給定域的值。 如果給定的域不存在於雜湊表,那麼返回一個 nil 值。
傳回值:一個包含多個給定域的關聯值的表,表值的排列順序和給定參數的請求順序一樣。
HSETNX //HGET //取值HKEYS // 返回雜湊表Key中的所有域。
傳回值:一個包含雜湊表中所有域的表。 當key不存在時,返回一個空表。
HVALS //
HDEL //刪除
hash h1 a mon //增加索引值hash h1 b tue