概述app
Redis的鍵值能夠使用物種數據類型:字符串,散列表,列表,集合,有序集合。本文詳細介紹這五種數據類型的使用方法。本文命令介紹部分只是列舉了基本的命令,至於具體的使用示例,能夠參考Redis官方文檔:Redis命令大全ui
字符串類型.net
字符串是Redis中最基本的數據類型,它可以存儲任何類型的字符串,包含二進制數據。能夠用於存儲郵箱,JSON化的對象,甚至是一張圖片,一個字符串容許存儲的最大容量爲512MB。字符串是其餘四種類型的基礎,與其餘幾種類型的區別從本質上來講只是組織字符串的方式不一樣而已。code
基本命令對象
字符串操做blog
SET 賦值,用法: SET key value
排序
GET 取值,用法: GET key
索引
INCR 遞增數字,僅僅對數字類型的鍵有用,至關於Java的i++運算,用法: INCR key
隊列
INCRBY 增長指定的數字,僅僅對數字類型的鍵有用,至關於Java的i+=3,用法:INCRBY key increment
,意思是key自增increment,increment能夠爲負數,表示減小。圖片
DECR 遞減數字,僅僅對數字類型的鍵有用,至關於Java的i–,用法:DECR key
DECRBY 減小指定的數字,僅僅對數字類型的鍵有用,至關於Java的i-=3,用法:DECRBY key decrement
,意思是key自減decrement,decrement能夠爲正數,表示增長。
INCRBYFLOAT 增長指定浮點數,僅僅對數字類型的鍵有用,用法:INCRBYFLOAT key increment
APPEND 向尾部追加值,至關於Java中的」hello」.append(「 world」),用法:APPEND key value
STRLEN 獲取字符串長度,用法:STRLEN key
MSET 同時設置多個key的值,用法:MSET key1 value1 [key2 value2 ...]
MGET 同時獲取多個key的值,用法:MGET key1 [key2 ...]
位操做
GETBIT 獲取一個鍵值的二進制位的指定位置的值(0/1),用法:GETBIT key offset
SETBIT 設置一個鍵值的二進制位的指定位置的值(0/1),用法:SETBIT key offset value
BITCOUNT 獲取一個鍵值的一個範圍內的二進制表示的1的個數,用法:BITCOUNT key [start end]
BITOP 該命令能夠對多個字符串類型鍵進行位運算,並將結果存儲到指定的鍵中,BITOP支持的運算包含:OR,AND,XOR,NOT,用法:BITOP OP desKey key1 key2
BITPOS 獲取指定鍵的第一個位值爲0或者1的位置,用法:BITPOS key 0/1 [start, end]
散列類型
散列類型至關於Java中的HashMap,他的值是一個字典,保存不少key,value對,每對key,value的值個鍵都是字符串類型,換句話說,散列類型不能嵌套其餘數據類型。一個散列類型鍵最多能夠包含2的32次方-1個字段。
基本命令
HSET 賦值,用法:HSET key field value
HMSET 一次賦值多個字段,用法:HMSET key field1 value1 [field2 values]
HGET 取值,用法:HSET key field
HMGET 一次取多個字段的值,用法:HMSET key field1 [field2]
HGETALL 一次取全部字段的值,用法:HGETALL key
HEXISTS 判斷字段是否存在,用法:HEXISTS key field
HSETNX 當字段不存在時賦值,用法:HSETNX key field value
HINCRBY 增長數字,僅對數字類型的值有用,用法:HINCRBY key field increment
HDEL 刪除字段,用法:HDEL key field
HKEYS 獲取全部字段名,用法:HKEYS key
HVALS 獲取全部字段值,用法:HVALS key
HLEN 獲取字段數量,用法:HLEN key
列表類型
列表類型(list)用於存儲一個有序的字符串列表,經常使用的操做是向隊列兩端添加元素或者得到列表的某一片斷。列表內部使用的是雙向鏈表(double linked list)實現的,因此向列表兩端添加元素的時間複雜度是O(1),獲取越接近列表兩端的元素的速度越快。可是缺點是使用列表經過索引訪問元素的效率過低(須要從端點開始遍歷元素)。因此列表的使用場景通常如:朋友圈新鮮事,只關心最新的一些內容。藉助列表類型,Redis還能夠做爲消息隊列使用。
基本命令
LPUSH 向列表左端添加元素,用法:LPUSH key value
RPUSH 向列表右端添加元素,用法:RPUSH key value
LPOP 從列表左端彈出元素,用法:LPOP key
RPOP 從列表右端彈出元素,用法:RPOP key
LLEN 獲取列表中元素個數,用法:LLEN key
LRANGE 獲取列表中某一片斷的元素,用法:LRANGE key start stop
,index從0開始,-1表示最後一個元素
LREM 刪除列表中指定的值,用法:LREM key count value
,刪除列表中前count個值爲value的元素,當count>0時從左邊開始數,count<0時從右邊開始數,count=0時會刪除全部值爲value的元素
LINDEX 獲取指定索引的元素值,用法:LINDEX key index
LSET 設置指定索引的元素值,用法:LSET key index value
LTRIM 只保留列表指定片斷,用法:LTRIM key start stop
,包含start和stop
LINSERT 像列表中插入元素,用法:LINSERT key BEFORE|AFTER privot value
,從左邊開始尋找值爲privot的第一個元素,而後根據第二個參數是BEFORE仍是AFTER決定在該元素的前面仍是後面插入value
RPOPLPUSH 將元素從一個列表轉義到另外一個列表,用法:RPOPLPUSH source destination
集合類型
集合在概念在高中課本就學過,集合中每一個元素都是不一樣的,集合中的元素個數最多爲2的32次方-1個,集合中的元素師沒有順序的。
基本命令
SADD 添加元素,用法:SADD key value1 [value2 value3 ...]
SREM 刪除元素,用法:SREM key value2 [value2 value3 ...]
SMEMBERS 得到集合中全部元素,用法:SMEMBERS key
SISMEMBER 判斷元素是否在集合中,用法:SISMEMBER key value
SDIFF 對集合作差集運算,用法:SDIFF key1 key2 [key3 ...]
,先計算key1和key2的差集,而後再用結果與key3作差集
SINTER 對集合作交集運算,用法:SINTER key1 key2 [key3 ...]
SUNION 對集合作並集運算,用法:SUNION key1 key2 [key3 ...]
SCARD 得到集合中元素的個數,用法:SCARD key
SDIFFSTORE 對集合作差集並將結果存儲,用法:SDIFFSTORE destination key1 key2 [key3 ...]
SINTERSTORE 對集合作交集運算並將結果存儲,用法:SINTERSTORE destination key1 key2 [key3 ...]
SUNIONSTORE 對集合作並集運算並將結果存儲,用法:SUNIONSTORE destination key1 key2 [key3 ...]
SRANDMEMBER 隨機獲取集合中的元素,用法:SRANDMEMBER key [count]
,當count>0時,會隨機中集合中獲取count個不重複的元素,當count<0時,隨機中集合中獲取|count|和可能重複的元素。
SPOP 從集合中隨機彈出一個元素,用法:SPOP key
有序集合類型
有序集合類型與集合類型的區別就是他是有序的。有序集合是在集合的基礎上爲每個元素關聯一個分數,這就讓有序集合不只支持插入,刪除,判斷元素是否存在等操做外,還支持獲取分數最高/最低的前N個元素。有序集合中的每一個元素是不一樣的,可是分數卻能夠相同。有序集合使用散列表和跳躍表實現,即便讀取位於中間部分的數據也很快,時間複雜度爲O(log(N)),有序集合比列表更費內存。
基本命令
ZADD 添加元素,用法:ZADD key score1 value1 [score2 value2 score3 value3 ...]
ZSCORE 獲取元素的分數,用法:ZSCORE key value
ZRANGE 獲取排名在某個範圍的元素,用法:ZRANGE key start stop [WITHSCORE]
,按照元素從小到大的順序排序,從0開始編號,包含start和stop對應的元素,WITHSCORE選項表示是否返回元素分數
ZREVRANGE 獲取排名在某個範圍的元素,用法:ZREVRANGE key start stop [WITHSCORE]
,和上一個命令用法同樣,只是這個倒序排序的。
ZRANGEBYSCORE 獲取指定分數範圍內的元素,用法:ZRANGEBYSCORE key min max
,包含min和max,(min
表示不包含min,(max
表示不包含max,+inf
表示無窮大
ZINCRBY 增長某個元素的分數,用法:ZINCRBY key increment value
ZCARD 獲取集合中元素的個數,用法:ZCARD key
ZCOUNT 獲取指定分數範圍內的元素個數,用法:ZCOUNT key min max
,min和max的用法和5中的同樣
ZREM 刪除一個或多個元素,用法:ZREM key value1 [value2 ...]
ZREMRANGEBYRANK 按照排名範圍刪除元素,用法:ZREMRANGEBYRANK key start stop
ZREMRANGEBYSCORE 按照分數範圍刪除元素,用法:ZREMRANGEBYSCORE key min max
,min和max的用法和4中的同樣
ZRANK 獲取正序排序的元素的排名,用法:ZRANK key value
ZREVRANK 獲取逆序排序的元素的排名,用法:ZREVRANK key value
ZINTERSTORE 計算有序集合的交集並存儲結果,用法:ZINTERSTORE destination numbers key1 key2 [key3 key4 ...] WEIGHTS weight1 weight2 [weight3 weight4 ...] AGGREGATE SUM | MIN | MAX
,numbers表示參加運算的集合個數,weight表示權重,aggregate表示結果取值
ZUNIONSTORE 計算有序幾個的並集並存儲結果,用法和14同樣,再也不贅述。
http://blog.csdn.net/hechurui/article/details/49508735