轉自:
http://www.verydemo.com/demo_c230_i3005.htmlhtml
1. 字符串數據類型(String)接口說明web
字符串類型是Redis中最爲基礎的數據存儲類型,它在Redis中是二進制安全的,這便意味着該類型能夠接受任何格式的數據,如JPEG圖像數據或Json對象描述信息等。在Redis中字符串類型的Value最多能夠容納的數據長度是512M。數據庫
#設定該Key持有指定的字符串Value,若是該Key已經存在,則覆蓋其原有值。安全
void set(final String key, final String value)服務器
#獲取指定Key的Value,若是該Key不存在,返回null。網絡
byte[] get(finalString key)數據結構
#判斷該鍵是否存在,存在返回1,不然返回0app
boolean exists(finalString key)ide
//刪除指定的Key佈局
long delete(finalString... keys)
//重命名指定的Key,若是參數中的兩個Keys的命令相同,或者是源Key不存在,該命令都會返回相關的錯誤信息。若是newKey已經存在,則直接覆蓋。
void rename(finalString oldkey, final String newkey)
//若是新值不存在,則將參數中的原值修改成新值。其它條件和RENAME一致。
boolean renamenx(final String oldkey, final String newkey)
//設置某個key的過時時間(單位:秒),在超過該時間後,Key被自動的刪除。若是該Key在超時以前被修改,與該鍵關聯的超時將被移除。
boolean expire(final String key, final int seconds)
# EXPIREAT的做用和EXPIRE相似,都用於爲 key 設置生存時間。不一樣在於 EXPIREAT命令接受的時間參數是 UNIX時間戳(unix timestamp)。
boolean expireAt(final String key, final long unixTime)
#經過ttl命令查看一下指定Key的剩餘存活時間(秒數),0表示已通過期,-1表示永不過時。longttl(final String key)
#將當前數據庫中的mysetkey鍵移入到ID爲dbIndex的數據庫中
boolean move(finalString key, final int dbIndex)
#原子性的設置該Key爲指定的Value,返回該Key的原有值,若是該Key以前並不存在,則返回null。
byte[]getSet(final String key, final String value)
#返回一組指定Keys的Values的列表。
List<byte[]> mget(final String... keys)
#若是指定的Key不存在,則設定該Key持有指定字符串Value,此時其效果等價於SET命令。相反,若是該Key已經存在,該命令將不作任何操做並返回。
boolean setnx(final String key, final String value)
boolean setex(final String key, final int seconds, final String value)
#該命令原子性的完成參數中全部key/value的設置操做,若是在這一批Keys中有任意一個Key已經存在了,那麼該操做將所有回滾,即全部的修改都不會生效。
boolean msetnx(final String... keysvalues)
#將指定Key的Value原子性的遞增1。若是該Key不存在,其初始值爲0,在incr以後其值爲1,返回遞增後的值。
void incrBy(final String key, final long integer) {
void incr(final String key)
#將指定Key的Value原子性的遞減1。若是該Key不存在,其初始值爲-1,在incr以後其值爲1,返回遞減後的值。
long decrBy(final String key, final long integer)
long decr(final String key)
#若是該Key已經存在,APPEND命令將參數Value的數據追加到已存在Value的末尾。若是該Key不存在,APPEND命令將會建立一個新的Key/Value。返回追加後的Value的長度。
long append(final String key, final String value)
2. 字符鏈表(List)數據類型接口說明
在Redis中,List類型是按照插入順序排序的字符串鏈表。和數據結構中的普通鏈表同樣,咱們能夠在其頭部 (left)和尾部(right)添加新的元素。在插入時,若是該鍵並不存在,Redis將爲該鍵建立一個新的鏈表。與此相反,若是鏈表中全部的元素均被 移除,那麼該鍵也將會被從數據庫中刪除。List中能夠包含的最大元素數量是4,294,967,295(42億左右)。
#在指定Key所關聯的List Value的尾部插入參數中給出的全部Values。若是該Key不存在,該命令將在插入以前建立一個與該Key關聯的空鏈表,以後再將數據從鏈表的尾部插入。若是該鍵的Value不是鏈表類型,該命令將返回相關的錯誤信息。
void rpush(final String key, final String... string)
#在指定Key所關聯的List Value的頭部插入參數中給出的全部Values。若是該Key不存在,該命令將在插入以前建立一個與該Key關聯的空鏈表,以後再將數據從鏈表的頭部插入。若是該鍵的Value不是鏈表類型,該命令將返回相關的錯誤信息。
void lpush(final String key, final String... string)
#返回指定Key關聯的鏈表中元素的數量,若是該Key不存在,則返回0。若是與該Key關聯的Value的類型不是鏈表,則返回相關的錯誤信息。
long llen(final String key)
#返回指定範圍內元素的列表。該命令的參數start和end都是0-based。即0表示鏈表頭部(leftmost)的第一個元素。其中start的值也能夠爲負值,-1將表示鏈表中的最後一個元素,即尾部元素,-2表示倒數第二個並以此類推。該命令在獲取元素時,start和end位置上的元素也會被取出。若是start的值大於鏈表中元素的數量,空鏈表將會被返回。若是end的值大於元素的數量,該命令則獲取從start(包括start)開始,鏈表中剩餘的全部元素。
List<byte[]>lrange(final String key, final long start, final long end)
#該命令將僅保留指定範圍內的元素,從而保證連接中的元素數量相對恆定。start和stop參數都是0-based,0表示頭部元素。和其餘命令同樣,start和stop也能夠爲負值,-1表示尾部元素。若是start大於鏈表的尾部,或start大於stop,該命令不錯報錯,而是返回一個空的鏈表,與此同時該Key也將被刪除。若是stop大於元素的數量,則保留從start開始剩餘的全部元素。
void ltrim(finalString key, final long start, final long end)
#該命令將返回鏈表中指定位置(index)的元素,index是0-based,表示頭部元素,若是index爲-1,表示尾部元素。若是與該Key關聯的不是鏈表,該命令將返回相關的錯誤信息。
byte[]lindex(final String key, final long index)
#設定鏈表中指定位置的值爲新值,其中0表示第一個元素,即頭部元素,-1表示尾部元素。若是索引值Index超出了鏈表中元素的數量範圍,該命令將返回相關的錯誤信息。
void lset(final String key, final long index, final String value)
#在指定Key關聯的鏈表中,刪除前count個值等於value的元素。若是count大於0,從頭向尾遍歷並刪除,若是count小於0,則從尾向頭遍歷並刪除。若是count等於0,則刪除鏈表中全部等於value的元素。若是指定的Key不存在,則直接返回0,返回被刪除的元素數量。
long lrem(final String key, long count, final String value)
#返回並彈出指定Key關聯的鏈表中的第一個元素,即頭部元素。若是該Key不存,返回null。
byte[]lpop(final String key)
#返回並彈出指定Key關聯的鏈表中的最後一個元素,即尾部元素。若是該Key不存,返回nil。
byte[]rpop(final String key)
#原子性的從與srckey鍵關聯的鏈表尾部彈出一個元素,同時再將彈出的元素插入到與dstkey鍵關聯的鏈表的頭部。若是srckey鍵不存在,該命令將返回null,同時再也不作任何其它的操做了。若是srckey和dstkey是同一個鍵,則至關於原子性的將其關聯鏈表中的尾部元素移到該鏈表的頭部。
byte[]rpoplpush(final String srckey, final String dstkey)
3. Hashes數據類型接口說明
咱們能夠將Redis中的Hashes類型當作具備String Key和String Value的map容器。因此該類型很是適合於存儲值對象的信息。如Username、Password和Age等。若是Hash中包含不多的字段,那麼 該類型的數據也將僅佔用不多的磁盤空間。每個Hash能夠存儲4,294,967,295個鍵值對。
#爲指定的Key設定Field/Value對,若是Key不存在,該命令將建立新Key以參數中的Field/Value對,若是參數中的Field在該Key中已經存在,則用新值覆蓋其原有值。
boolean hset(final String key, final String field, final String value)
#返回參數中Field的關聯值,若是參數中的Key或Field不存,返回null。
void hget(final String key, final String field)
#只有當參數中的Key或Field不存在的狀況下,爲指定的Key設定Field/Value對,不然該命令不會進行任何操做。
void hsetnx(final String key, final String field, final String value)
#逐對依次設置參數中給出的Field/Value對。若是其中某個Field已經存在,則用新值覆蓋原有值。若是Key不存在,則建立新Key,同時設定參數中的Field/Value。
void hmset(final String key, final Map<String, String> hash)
#獲取和參數中指定Fields關聯的一組Values。若是請求的Field不存在,其值返回null。若是Key不存在,該命令將其視爲空Hash,所以返回一組null。
byte[]hmget(final String key, final String... fields)
#增長指定Key中指定Field關聯的Value的值。若是Key或Field不存在,該命令將會建立一個新Key或新Field,並將其關聯的Value初始化爲0,以後再指定數字增長的操做。返回運算後的值
long hincrBy(final String key, final String field, final long value)
#判斷指定Key中的指定Field是否存在。
void hexists(final String key, final String field)
#從指定Key的Hashes Value中刪除參數中指定的多個字段,若是不存在的字段將被忽略。若是Key不存在,則將其視爲空Hashes,並返回0.返回實際刪除的Field數量。
void hdel(final String key, final String... fields)
#獲取該Key所包含的Field的數量。
void hlen(finalString key)
#返回指定Key的全部Fields名。
List<byte[]> hkeys(final String key)
#返回指定Key的全部Values名。
List<byte[]> hvals(final String key)
#獲取該鍵包含的全部Field/Value。其返回格式爲一個Field、一個Value,並以此類推。
Map<byte[],byte[]> hgetAll(final String key)
4. 字符集合(Set)數據類型接口說明
在Redis中,咱們能夠將Set類型看做爲沒有排序的字符集合,和List類型同樣,咱們也能夠在該類型的數據值上執 行添加、刪除或判斷某一元素是否存在等操做。須要說明的是,這些操做的時間複雜度爲O(1),即常量時間內完成次操做。Set可包含的最大元素數量是 4,294,967,295。
和List類型不一樣的是,Set集合中不容許出現重複的元素,這一點和C++標準庫中的set容器是徹底相同的。換句話 說,若是屢次添加相同元素,Set中將僅保留該元素的一份拷貝。和List類型相比,Set類型在功能上還存在着一個很是重要的特性,即在服務器端完成多 個Sets之間的聚合計算操做,如unions、intersections和differences。因爲這些操做均在服務端完成,所以效率極高,並且 也節省了大量的網絡IO開銷。
#若是在插入的過程用,參數中有的成員在Set中已經存在,該成員將被忽略,而其它成員仍將會被正常插入。若是執行該命令以前,該Key並不存在,該命令將會建立一個新的Set,此後再將參數中的成員陸續插入。若是該Key的Value不是Set類型,該命令將返回相關的錯誤信息。
boolean sadd(final String key, final String... members)
#獲取與該Key關聯的Set中全部的成員。
List<byte[]> smembers(final String key)
#從與Key關聯的Set中刪除參數中指定的成員,不存在的參數成員將被忽略,若是該Key並不存在,將視爲空Set處理。
void srem(final String key, final String... members)
#隨機的移除並返回Set中的某一成員。因爲Set中元素的佈局不受外部控制,所以沒法像List那樣肯定哪一個元素位於Set的頭部或者尾部。
byte[]spop(final String key)
#原子性的將參數中的成員從srckey鍵移入到dstkey鍵所關聯的Set中。所以在某一時刻,該成員或者出如今source中,或者出如今dstkey中。若是該成員在srckey中並不存在,該命令將不會再執行任何操做並返回0,不然,該成員將從srckey移入到dstkey。若是此時該成員已經在dstkey中存在,那麼該命令僅是將該成員從srckey中移出。若是和Key關聯的Value不是Set,將返回相關的錯誤信息。
boolean smove(final String srckey, final String dstkey,final String member)
#獲取Set中成員的數量。
long scard(final String key)
#判斷參數中指定成員是否已經存在於與Key相關聯的Set集合中。
boolean sismember(final String key, final String member)
#該命令將返回參數中全部Keys關聯的Sets中成員的交集。所以若是參數中任何一個Key關聯的Set爲空,或某一Key不存在,那麼該命令的結果將爲空集。
List<byte[]> sinter(final String... keys)
#該命令和sinter命令在功能上徹底相同,二者之間惟一的差異是sinter返回交集的結果成員,而該命令將交集成員存儲在dstkey關聯的Set中。若是dstkey鍵已經存在,該操做將覆蓋它的成員。
void sinterstore(final String dstkey, final String... keys)
#該命令將返回參數中全部Keys關聯的Sets中成員的並集。
List<byte[]> sunion(final String... keys)
#該命令和sunion命令在功能上徹底相同,二者之間惟一的差異是sunion返回並集的結果成員,而該命令將並集成員存儲在dstkey關聯的Set中。若是dstkey鍵已經存在,該操做將覆蓋它的成員。
void sunionstore(final String dstkey, final String... keys)
#返回參數中第一個Key所關聯的Set和其後全部Keys所關聯的Sets中成員的差別。若是Key不存在,則視爲空Set。
List<byte[]>sdiff(final String... keys)
#該命令和SDIFF命令在功能上徹底相同,二者之間惟一的差異是SDIFF返回差別的結果成員,而該命令將差別成員存儲在dstkey關聯的Set中。若是dstkey鍵已經存在,該操做將覆蓋它的成員。
void sdiffstore(final String dstkey, final String... keys)
#和SPOP同樣,隨機的返回Set中的一個成員,不一樣的是該命令並不會刪除返回的成員。
void srandmember(final String key)
5. 有序集合(Sorted-Sets)數據類型接口說明
Sorted-Sets和Sets類型極爲類似,它們都是字符串的集合,都不容許重複的成員出如今一個Set中。它們之 間的主要差異是Sorted-Sets中的每個成員都會有一個分數(score)與之關聯,Redis正是經過分數來爲集合中的成員進行從小到大的排 序。然而須要額外指出的是,儘管Sorted-Sets中的成員必須是惟一的,可是分數(score)倒是能夠重複的。
在Sorted-Set中添加、刪除或更新一個成員都是很是快速的操做,其時間複雜度爲集合中成員數量的對數。因爲 Sorted-Sets中的成員在集合中的位置是有序的,所以,即使是訪問位於集合中部的成員也仍然是很是高效的。事實上,Redis所具備的這一特徵在 不少其它類型的數據庫中是很難實現的,換句話說,在該點上要想達到和Redis一樣的高效,在其它數據庫中進行建模是很是困難的。
#在該命令中咱們能夠指定多組score/member做爲參數。若是在添加時參數中的某一成員已經存在,該命令將更新此成員的分數爲新值,同時再將該成員基於新值從新排序。若是鍵不存在,該命令將爲該鍵建立一個新的Sorted-Sets Value,並將score/member對插入其中。若是該鍵已經存在,可是與其關聯的Value不是Sorted-Sets類型,相關的錯誤信息將被返回。
boolean zadd(final String key, final double score, final String member)
#該命令按順序返回在參數start和stop指定範圍內的成員,這裏start和stop參數都是0-based,即0表示第一個成員,-1表示最後一個成員。若是start大於該Sorted-Set中的最大索引值,或start > stop,此時一個空集合將被返回。若是stop大於最大索引值,該命令將返回從start到集合的最後一個成員。若是命令中帶有可選參數WITHSCORES選項,該命令在返回的結果中將包含每一個成員的分數值,如value1,score1,value2,score2...。
List<byte[]> zrange(final String key, final longstart, final long end)
#該命令將移除參數中指定的成員,其中不存在的成員將被忽略。若是與該Key關聯的Value不是Sorted-Set,相應的錯誤信息將被返回。
boolean zrem(final String key, final String... members)
#該命令將爲指定Key中的指定成員增長指定的分數。若是成員不存在,該命令將添加該成員並假設其初始分數爲0,此後再將其分數加上increment。若是Key不存,該命令將建立該Key及其關聯的Sorted-Sets,幷包含參數指定的成員,其分數爲increment參數。若是與該Key關聯的不是Sorted-Sets類型,相關的錯誤信息將被返回。
Double zincrby(final String key, final double score,final String member)
# Sorted-Set中的成員都是按照分數從低到高的順序存儲,該命令將返回參數中指定成員的位置值,其中0表示第一個成員,它是Sorted-Set中分數最低的成員。
long zrank(final String key, final String member)
#該命令的功能和ZRANK基本相同,惟一的差異在於該命令獲取的索引是從高到低排序後的位置,一樣0表示第一個元素,即分數最高的成員。
long zrevrank(final String key, final String member)
#該命令的功能和ZRANGE基本相同,惟一的差異在於該命令是經過反向排序獲取指定位置的成員,即從高到低的順序。若是成員具備相同的分數,則按降序字典順序排序。
List<byte[]>zrevrange(final String key, final long start, final long end)
#該命令將返回分數在min和max之間的全部成員,即知足表達式min <= score <= max的成員,其中返回的成員是按照其分數從低到高的順序返回,若是成員具備相同的分數,則按成員的字典順序返回。
List<byte[]> zrangeWithScores(final String key, finallong start,final long end)
#該命令除了排序方式是基於從高到低的分數排序以外,其它功能和參數含義均與ZRANGEBYSCORE相同。
List<byte[]> zrevrangeWithScores(final String key,final long start,final long end)
#獲取與該Key相關聯的Sorted-Sets中包含的成員數量。
long zcard(final String key)
#獲取指定Key的指定成員的分數。
Double zscore(final String key, final String member)
##獲取指定Key的指定成員的分數。
void watch(final String... keys)
#給指定的Key的成員排序
Sort sort(final String key)
Sort sort(final String key, final SortingParams sortingParameters,
final String dstkey)
Sort sort(final String key, final String dstkey)
#
void blpop(final String[] args)
void brpop(final String[] args)
#該命令用於獲取分數(score)在min和max之間的成員數量。
long zcount(final String key, final double min, final double max)
long zcount(final String key, final String min, final String max)
#該命令將返回分數在min和max之間的全部成員,即知足表達式min <= score <= max的成員,其中返回的成員是按照其分數從低到高的順序返回,若是成員具備相同的分數,則按成員的字典順序返回。
List<byte[]> zrangeByScore(final String key, finaldouble min,final double max)
List<byte[]> zrangeByScore(final String key, finalString min,final String max)
List<byte[]> zrangeByScore(final String key, finaldouble min,final double max, final int offset, int count)
List<byte[]> zrangeByScoreWithScores(final Stringkey, final double min,final double max)
List<byte[]> zrangeByScoreWithScores(final Stringkey, final double min,
final double max, final int offset, final int count)
#
void zremrangeByRank(final String key, final long start,final long end)
void zremrangeByScore(final String key, final double start,final double end)
void zremrangeByScore(final String key, final String start,final String end)
void zunionstore(final String dstkey, final String... sets)
void zunionstore(final String dstkey, final ZParams params,final String... sets)
void zinterstore(final String dstkey, final String... sets)
void zinterstore(final String dstkey, final ZParams params,final String... sets)