redis五大數據類型以及經常使用操做命令

 

Redis的五大數據類型java

  • String(字符串)

string是redis最基本的類型,你能夠理解成與Memcached如出一轍的類型,一個key對應一個value。string類型是二進制安全的。意思是redis的string能夠包含任何數據。好比jpg圖片或者序列化的對象 。string類型是Redis最基本的數據類型,一個redis中字符串value最多能夠是512Mc++

  • Hash(哈希,相似java裏的Map)

Redis hash 是一個鍵值對集合。KV模式不變,但V是一個鍵值對。Redis hash是一個string類型的field和value的映射表,hash特別適合用於存儲對象。相似Java裏面的Map<String,Object>redis

  • List(列表)

Redis 列表是簡單的字符串列表,按照插入順序排序。你能夠添加一個元素導列表的頭部(左邊)或者尾部(右邊)。它的底層實際是個鏈表數據庫

  • Set(集合)

Redis的Set是string類型的無序集合。它是經過HashTable實現實現的,c#

  • zset(sorted set:有序集合)

Redis zset 和 set 同樣也是string類型元素的集合,且不容許重複的成員。不一樣的是每一個元素都會關聯一個double類型的分數。redis正是經過分數來爲集合中的成員進行從小到大的排序。zset的成員是惟一的,但分數(score)卻能夠重複。

redis常見數據類型操做命令: http://redisdoc.com/
Key(鍵)經常使用命令
安全

命令 用法 描述 示例
DEL DEL key [key ...] 刪除給定的一個或多個 key。 不存在的 key 會被忽略  
DUMP DUMP key 序列化給定 key ,並返回被序列化的值,使用 RESTORE 命令能夠將這個值反序列化爲 Redis 鍵  
EXISTS EXISTS key 檢查給定 key 是否存在  
EXPIRE EXPIRE key seconds 爲給定 key 設置生存時間,當 key 過時時(生存時間爲 0 ),它會被自動刪除  
PERSIST PERSIST key 移除 key 的過時時間,key 將持久保持。  
EXPIREAT EXPIREAT key timestamp EXPIREAT 的做用和 EXPIRE 相似,都用於爲 key 設置生存時間。 不一樣在於 EXPIREAT 命令接受的時間參數是 UNIX 時間戳(unix timestamp) EXPIREAT cache 1355292000 # 這個 key 將在 2012.12.12 過時
KEYS KEYS pattern 查找全部符合給定模式 pattern 的 key KEYS * # 匹配數據庫內全部 key
MOVE MOVE key db 將當前數據庫的 key 移動到給定的數據庫 db 當中
若是當前數據庫(源數據庫)和給定數據庫(目標數據庫)有相同名字的給定 key ,或者 key 不存在於當前數據庫,那麼 MOVE 沒有任何效果。

所以,也能夠利用這一特性,將 MOVE 看成鎖(locking)原語(primitive)
MOVE song 1 # 將 song 移動到數據庫 1
TTL TTL key 以秒爲單位,返回給定 key 的剩餘生存時間(TTL, time to live)
當 key 不存在時,返回 -2 。
當 key 存在但沒有設置剩餘生存時間時,返回 -1 。
不然,以秒爲單位,返回 key 的剩餘生存時間
 
PTTL PTTL key 以毫秒爲單位返回 key 的剩餘的過時時間。  
TYPE TYPE key 返回 key 所儲存的值的類型  
RENAME RENAME key newkey 將 key 更名爲 newkey 。
當 key 和 newkey 相同,或者 key 不存在時,返回一個錯誤。
當 newkey 已經存在時, RENAME 命令將覆蓋舊值
 


String (字符串)經常使用命令
大數據

命令 用法 描述 示例
SET SET key value [EX seconds] [PX milliseconds] [NX|XX] 將字符串值 value 關聯到 key 。
若是 key 已經持有其餘值, SET 就覆寫舊值,無視類型
SET key "value"
MSET MSET key value [key value ...] 同時設置一個或多個 key-value 對。
若是某個給定 key 已經存在,那麼 MSET 會用新值覆蓋原來的舊值,若是這不是你所但願的效果,請考慮使用 MSETNX 命令:它只會在全部給定 key 都不存在的狀況下進行設置操做
MSET date "2012.3.30" time "11:00 a.m." weather "sunny"
SETNX SETNX key value 將 key 的值設爲 value ,當且僅當 key 不存在。
若給定的 key 已經存在,則 SETNX 不作任何動做 SETNX 是『SET if Not eXists』(若是不存在,則 SET)的簡寫
 
MSETNX MSETNX key value [key value ...] 同時設置一個或多個 key-value 對,當且僅當全部給定 key 都不存在。
即便只有一個給定 key 已存在, MSETNX 也會拒絕執行全部給定 key 的設置操做
 
SETRANGE SETRANGE key offset value 用 value 參數覆寫(overwrite)給定 key 所儲存的字符串值,從偏移量 offset 開始。
不存在的 key 看成空白字符串處理
 
SETBIT SETBIT key offset value 對 key 所儲存的字符串值,設置或清除指定偏移量上的位(bit) GETBIT bit 100 # bit 默認被初始化爲 0
SETEX SETEX key seconds value 將值 value 關聯到 key ,並將 key 的生存時間設爲 seconds (以秒爲單位)。
若是 key 已經存在, SETEX 命令將覆寫舊值。
 
PSETEX PSETEX key milliseconds value 這個命令和 SETEX 命令類似,但它以毫秒爲單位設置 key 的生存時間,而不是像 SETEX 命令那樣,以秒爲單位  
STRLEN STRLEN key 返回 key 所儲存的字符串值的長度。
當 key 儲存的不是字符串值時,返回一個錯誤
 
GET GET key 返回 key 所關聯的字符串值。
若是 key 不存在那麼返回特殊值 nil
 
MGET MGET key [key ...] 返回全部(一個或多個)給定 key 的值。
若是給定的 key 裏面,有某個 key 不存在,那麼這個 key 返回特殊值 nil 。所以,該命令永不失敗
 
GETRANGE GETRANGE key start end 返回 key 中字符串值的子字符串,字符串的截取範圍由 start 和 end 兩個偏移量決定(包括 start 和 end 在內)。
負數偏移量表示從字符串最後開始計數, -1 表示最後一個字符, -2 表示倒數第二個,以此類推。
GETRANGE greeting 0 4
GETSET GETSET key value 將給定 key 的值設爲 value ,並返回 key 的舊值(old value)。
當 key 存在但不是字符串類型時,返回一個錯誤。
 
GETBIT GETBIT key offset 對 key 所儲存的字符串值,獲取指定偏移量上的位(bit)。
當 offset 比字符串值的長度大,或者 key 不存在時,返回 0
 
APPEND APPEND key value 若是 key 已經存在而且是一個字符串, APPEND 命令將 value 追加到 key 原來的值的末尾。
若是 key 不存在, APPEND 就簡單地將給定 key 設爲 value ,就像執行 SET key value 同樣
 
DECR DECR key 將 key 中儲存的數字值減一。
若是 key 不存在,那麼 key 的值會先被初始化爲 0 ,而後再執行 DECR 操做
redis> SET failure_times 10
OK

redis> DECR failure_times
(integer) 9
DECRBY DECRBY key decrement 將 key 所儲存的值減去減量 decrement  
INCR INCR key 將 key 中儲存的數字值增一。
若是 key 不存在,那麼 key 的值會先被初始化爲 0 ,而後再執行 INCR 操做
 
INCRBY INCRBY key increment 將 key 所儲存的值加上增量 increment  
INCRBYFLOAT INCRBYFLOAT key increment 爲 key 中所儲存的值加上浮點數增量 increment INCRBYFLOAT mykey 0.1
BITCOUNT BITCOUNT key [start] [end] 計算給定字符串中,被設置爲 1 的比特位的數量  
BITOP BITOP operation destkey key [key ...] 對一個或多個保存二進制位的字符串 key 進行位元操做,並將結果保存到 destkey 上。  


List(列表)經常使用命令
spa

命令 用法 描述 示例
LPUSH LPUSH key value [value ...] 將一個或多個值 value 插入到列表 key 的表頭
若是有多個 value 值,那麼各個 value 值按從左到右的順序依次插入到表頭
正着進反着出
LPUSHX LPUSHX key value 將值 value 插入到列表 key 的表頭,當且僅當 key 存在而且是一個列表。
和 LPUSH 命令相反,當 key 不存在時, LPUSHX 命令什麼也不作
 
RPUSH RPUSH key value [value ...] 將一個或多個值 value 插入到列表 key 的表尾(最右邊) 怎麼進怎麼出
RPUSHX RPUSHX key value 將值 value 插入到列表 key 的表尾,當且僅當 key 存在而且是一個列表。
和 RPUSH 命令相反,當 key 不存在時, RPUSHX 命令什麼也不作。
 
LPOP LPOP key 移除並返回列表 key 的頭元素。  
BLPOP BLPOP key [key ...] timeout 移出並獲取列表的第一個元素, 若是列表沒有元素會阻塞列表直到等待超時或發現可彈出元素爲止  
RPOP RPOP key 移除並返回列表 key 的尾元素。  
BRPOP BRPOP key [key ...] timeout 移出並獲取列表的最後一個元素, 若是列表沒有元素會阻塞列表直到等待超時或發現可彈出元素爲止。  
BRPOPLPUSH BRPOPLPUSH source destination timeout 從列表中彈出一個值,將彈出的元素插入到另一個列表中並返回它; 若是列表沒有元素會阻塞列表直到等待超時或發現可彈出元素爲止。  
RPOPLPUSH RPOPLPUSH source destination 命令 RPOPLPUSH 在一個原子時間內,執行如下兩個動做:將列表 source 中的最後一個元素(尾元素)彈出,並返回給客戶端。
將 source 彈出的元素插入到列表 destination ,做爲 destination 列表的的頭元素
RPOPLPUSH  list01 list02
LSET LSET key index value 將列表 key 下標爲 index 的元素的值設置爲 value  
LLEN LLEN key 返回列表 key 的長度。
若是 key 不存在,則 key 被解釋爲一個空列表,返回 0 .
若是 key 不是列表類型,返回一個錯誤
 
LINDEX LINDEX key index 返回列表 key 中,下標爲 index 的元素。
下標(index)參數 start 和 stop 都以 0 爲底,也就是說,以 0 表示列表的第一個元素,以 1 表示列表的第二個元素,以此類推。
 
LRANGE LRANGE key start stop 返回列表 key 中指定區間內的元素,區間以偏移量 start 和 stop 指定  
LREM LREM key count value 根據參數 count 的值,移除列表中與參數 value 相等的元素  
LTRIM LTRIM key start stop 對一個列表進行修剪(trim),就是說,讓列表只保留指定區間內的元素,不在指定區間以內的元素都將被刪除  
LINSERT LINSERT key BEFORE|AFTER pivot value 將值 value 插入到列表 key 當中,位於值 pivot 以前或以後。
當 pivot 不存在於列表 key 時,不執行任何操做。
當 key 不存在時, key 被視爲空列表,不執行任何操做。
若是 key 不是列表類型,返回一個錯誤。
LINSERT list01 before c++ c#(在c++以前加上C#)


Hash(哈希表)經常使用命令
unix

命令 用法 描述 示例
HSET HSET key field value 將哈希表 key 中的域 field 的值設爲 value 。
若是 key 不存在,一個新的哈希表被建立並進行 HSET 操做。
若是域 field 已經存在於哈希表中,舊值將被覆蓋。
 
HMSET HMSET key field value [field value ...] 同時將多個 field-value (域-值)對設置到哈希表 key 中。
此命令會覆蓋哈希表中已存在的域。
 
HSETNX HSETNX key field value 將哈希表 key 中的域 field 的值設置爲 value ,當且僅當域 field 不存在。
若域 field 已經存在,該操做無效
 
HGET HGET key field 返回哈希表 key 中給定域 field 的值  
HMGET HMGET key field [field ...] 返回哈希表 key 中,一個或多個給定域的值。  
HGETALL HGETALL key 返回哈希表 key 中,全部的域和值。
在返回值裏,緊跟每一個域名(field name)以後是域的值(value),因此返回值的長度是哈希表大小的兩倍
 
HDEL HDEL key field [field ...] 刪除哈希表 key 中的一個或多個指定域,不存在的域將被忽略  
HEXISTS HEXISTS key field 查看哈希表 key 中,給定域 field 是否存在  
HLEN HLEN key 返回哈希表 key 中域的數量  
HKEYS HKEYS key 返回哈希表 key 中的全部域  
HVALS HVALS key 返回哈希表 key 中全部域的值  
HSTRLEN HSTRLEN key field 返回哈希表 key 中,
與給定域 field 相關聯的值的字符串長度(string length)。
若是給定的鍵或者域不存在,
那麼命令返回 0
 
HINCRBY HINCRBY key field increment 爲哈希表 key 中的域 field 的值加上增量 increment  
HINCRBYFLOAT HINCRBYFLOAT key field increment 爲哈希表 key 中的域 field 加上浮點數增量 increment  
HSCAN HSCAN key cursor [MATCH pattern] [COUNT count] 迭代哈希表中的鍵值對。  


Set(集合)經常使用命令
對象

命令 用法 描述 示例
SADD SADD key member [member ...] 將一個或多個 member 元素加入到集合 key 當中,已經存在於集合的 member 元素將被忽略。
假如 key 不存在,則建立一個只包含 member 元素做成員的集合。
當 key 不是集合類型時,返回一個錯誤
 
SCARD SCARD key 返回集合 key 的基數(集合中元素的數量)。  
SDIFF SDIFF key [key ...] 返回一個集合的所有成員,該集合是全部給定集合之間的差集。
不存在的 key 被視爲空集。
差集
SDIFFSTORE SDIFFSTORE destination key [key ...] 這個命令的做用和 SDIFF 相似,但它將結果保存到 destination 集合,而不是簡單地返回結果集。
若是 destination 集合已經存在,則將其覆蓋。
destination 能夠是 key 自己。
 
SINTER SINTER key [key ...] 返回一個集合的所有成員,該集合是全部給定集合的交集。
不存在的 key 被視爲空集。
當給定集合當中有一個空集時,結果也爲空集(根據集合運算定律)
交集
SINTERSTORE SINTERSTORE destination key [key ...] 這個命令相似於 SINTER 命令,但它將結果保存到 destination 集合,而不是簡單地返回結果集。
若是 destination 集合已經存在,則將其覆蓋。
destination 能夠是 key 自己
 
SUNION SUNION key [key ...] 返回一個集合的所有成員,該集合是全部給定集合的並集。
不存在的 key 被視爲空集
並集
SUNIONSTORE SUNIONSTORE destination key [key ...] 這個命令相似於 SUNION 命令,但它將結果保存到 destination 集合,而不是簡單地返回結果集。
若是 destination 已經存在,則將其覆蓋。
destination 能夠是 key 自己
 
SMEMBERS SMEMBERS key 返回集合 key 中的全部成員。
不存在的 key 被視爲空集合
 
SRANDMEMBER SRANDMEMBER key [count] 若是命令執行時,只提供了 key 參數,那麼返回集合中的一個隨機元素  
SISMEMBER SISMEMBER key member 判斷 member 元素是否集合 key 的成員  
SMOVE SMOVE source destination member 將 member 元素從 source 集合移動到 destination 集合。  
SPOP SPOP key 移除並返回集合中的一個隨機元素。
若是隻想獲取一個隨機元素,但不想該元素從集合中被移除的話,可使用 SRANDMEMBER 命令。
 
SREM SREM key member [member ...] 移除集合 key 中的一個或多個 member 元素,不存在的 member 元素會被忽略。
當 key 不是集合類型,返回一個錯誤
 
SSCAN SSCAN key cursor [MATCH pattern] [COUNT count] 迭代集合中的元素  



SortedSet(有序集合)經常使用命令

命令 用法 描述 示例
ZADD ZADD key score1 member1 [score2 member2] 向有序集合添加一個或多個成員,或者更新已存在成員的分數  
ZCARD ZCARD key 返回有序集 key 的基數。  
ZCOUNT ZCOUNT key min max 返回有序集 key 中, score 值在 min 和 max 之間(默認包括 score 值等於 min 或 max )的成員的數量。
關於參數 min 和 max 的詳細使用方法,請參考 ZRANGEBYSCORE 命令。
 
ZRANGE ZRANGE key start stop [WITHSCORES] 返回有序集 key 中,指定區間內的成員。
其中成員的位置按 score 值遞增(從小到大)來排序
 
ZREVRANGE ZREVRANGE key start stop [WITHSCORES] 返回有序集 key 中,指定區間內的成員。其中成員的位置按 score 值遞減(從大到小)來排列。
具備相同 score 值的成員按字典序的逆序(reverse lexicographical order)排列。除了成員按 score 值遞減的次序排列這一點外, ZREVRANGE 命令的其餘方面和 ZRANGE 命令同樣。
 
ZREVRANGEBYSCORE ZREVRANGEBYSCORE key max min [WITHSCORES] [LIMIT offset count] 返回有序集 key 中, score 值介於 max 和 min 之間(默認包括等於 max 或 min )的全部的成員。有序集成員按 score 值遞減(從大到小)的次序排列。  
ZREVRANK ZREVRANK key member 返回有序集 key 中成員 member 的排名。其中有序集成員按 score 值遞減(從大到小)排序。
排名以 0 爲底,也就是說, score 值最大的成員排名爲 0 。
使用 ZRANK 命令能夠得到成員按 score 值遞增(從小到大)排列的排名。
 
ZSCORE ZSCORE key member 返回有序集 key 中,成員 member 的 score 值。
若是 member 元素不是有序集 key 的成員,或 key 不存在,返回 nil 。
 
ZRANGEBYSCORE ZRANGEBYSCORE key min max [WITHSCORES] [LIMIT offset count] 返回有序集 key 中,全部 score 值介於 min 和 max 之間(包括等於 min 或 max )的成員。有序集成員按 score 值遞增(從小到大)次序排列。  
ZRANK ZRANK key member 返回有序集 key 中成員 member 的排名。其中有序集成員按 score 值遞增(從小到大)順序排列。  
ZINCRBY ZINCRBY key increment member 爲有序集 key 的成員 member 的 score 值加上增量 increment  
ZREM ZREM key member [member ...] 移除有序集 key 中的一個或多個成員,不存在的成員將被忽略。
當 key 存在但不是有序集類型時,返回一個錯誤。
 
ZREMRANGEBYRANK ZREMRANGEBYRANK key start stop 移除有序集 key 中,指定排名(rank)區間內的全部成員  
ZREMRANGEBYSCORE ZREMRANGEBYSCORE key min max 移除有序集 key 中,全部 score 值介於 min 和 max 之間(包括等於 min 或 max )的成員。  
ZUNIONSTORE ZUNIONSTORE destination numkeys key [key ...] [WEIGHTS weight [weight ...]] [AGGREGATE SUM|MIN|MAX] 計算給定的一個或多個有序集的並集,其中給定 key 的數量必須以 numkeys 參數指定,並將該並集(結果集)儲存到 destination 。
默認狀況下,結果集中某個成員的 score 值是全部給定集下該成員 score 值之 和 。
 
ZINTERSTORE ZINTERSTORE destination numkeys key [key ...] [WEIGHTS weight [weight ...]] [AGGREGATE SUM|MIN|MAX] 計算給定的一個或多個有序集的交集,其中給定 key 的數量必須以 numkeys 參數指定,並將該交集(結果集)儲存到 destination 。
默認狀況下,結果集中某個成員的 score 值是全部給定集下該成員 score 值之和.
 
ZSCAN ZSCAN key cursor [MATCH pattern] [COUNT count] 迭代有序集合中的元素(包括元素成員和元素分值)  
ZRANGEBYLEX ZRANGEBYLEX key min max [LIMIT offset count] 當有序集合的全部成員都具備相同的分值時,
有序集合的元素會根據成員的字典序(lexicographical ordering)來進行排序,
而這個命令則能夠返回給定的有序集合鍵 key 中,
值介於 min 和 max 之間的成員。
 
ZLEXCOUNT ZLEXCOUNT key min max 對於一個全部成員的分值都相同的有序集合鍵 key 來講,
這個命令會返回該集合中,
成員介於 min 和 max 範圍內的元素數量。
這個命令的 min 參數和 max 參數的意義和 ZRANGEBYLEX 命令的 min 參數和 max 參數的意義同樣
 
ZREMRANGEBYLEX ZREMRANGEBYLEX key min max 對於一個全部成員的分值都相同的有序集合鍵 key 來講,這個命令會移除該集合中,成員介於 min 和 max 範圍內的全部元素。這個命令的 min 參數和 max 參數的意義和 ZRANGEBYLEX 命令的 min 參數和 max 參數的意義同樣
相關文章
相關標籤/搜索