您好,登錄后才能下訂單哦!
Redis的特點在于其讀寫速度特別快,因為是存儲在內(nèi)存中的,其非常適合于處理大數(shù)據(jù)量的情況;還有一個是其不同于其他的關(guān)系型數(shù)據(jù)庫,Redis是非關(guān)系型數(shù)據(jù)庫,也就是我們常說的NoSQL,其并不需要一開始去創(chuàng)建好表結(jié)構(gòu),可以存儲自定義的數(shù)據(jù);還有Redis是分布式的,其可以主從分離,主從復(fù)制,比如說我們不可能只用一臺Redis服務(wù)器來處理客戶端的請求,因為這樣畢竟是存在風(fēng)險,如果服務(wù)器掛掉了,那么其數(shù)據(jù)就會丟失,而且無法找回,所以存在這么一種方案:多個主服務(wù)器用來處理客戶端的請求,接著多個Redis分服務(wù)器用來將主服務(wù)器的數(shù)據(jù)同步到MySQL,這樣在Redis服務(wù)器掛掉的時候,我們還是可以通過訪問MySQL數(shù)據(jù)庫從而得到數(shù)據(jù);
很多人說Redis和memcached比較相像,但是我沒有使用過memcached,所以只是總結(jié)了別人的比較。Redis擁有5個數(shù)據(jù)結(jié)構(gòu),而memcached只有一個字符串的數(shù)據(jù)結(jié)構(gòu),其只能通過append命令將數(shù)據(jù)添加到字符串的末尾,并且把該字符串當(dāng)作一個列表在使用,在刪除數(shù)據(jù)的時候,redis可以直接通過remove命令將其真正的刪除,但是memcached只能夠通過黑名單隱藏該數(shù)據(jù)從而避免對該數(shù)據(jù)進(jìn)行讀取,更新。
這五種數(shù)據(jù)結(jié)構(gòu)分別是STRING(字符串)、LIST(列表)、SET(集合)、HASH(哈希)、ZSET(有序集合);
字符串:包括字符串、整數(shù)和浮點數(shù);
列表:一個鏈表,鏈表上面的每個結(jié)點都是一個字符串,其遵從隊列的訪問格式-先進(jìn)先出,也就是從鏈表的結(jié)尾進(jìn)行插入,鏈表的頭部進(jìn)行彈出;
集合:里面是一個容器,他不允許存在相同的元素,每個值都是獨一無二的;
哈希:是一個鍵值對組合而成的無序散列表,其的鍵同樣是不允許重復(fù)的;
有序集合:是在集合的基礎(chǔ)之上進(jìn)行了排序;
在了解那五個操作相關(guān)的命令之前,需要先了解關(guān)于鍵的相關(guān)的命令:
DEL key
移除給定的一個或者多個key。
KEYS pattern
查找符合給定模式的key,注意其匹配的模式怎么使用,包括了?、*、[]等等。
RANDOMKEY
從當(dāng)前數(shù)據(jù)庫中隨機(jī)返回一個key。
EXPIRE key seconds
為給定的key設(shè)置存活時間,時間一過則把對應(yīng)的key進(jìn)行銷毀,注意單位為秒。
TTL key
獲取key剩余的存活時間,單位為秒,和上面的命令相對應(yīng),如果該key不存在或者是過期的話,則返回-2/-1(在不同數(shù)據(jù)庫返回的值不一樣?)。
MOVE key db
將key移動到指定的db,默認(rèn)情況下使用的是0號數(shù)據(jù)庫,注意要移動到相應(yīng)的數(shù)據(jù)庫(SELECT db)才能看到。
RENAME key newkey
將key更改為新的key,注意如果newkey在數(shù)據(jù)庫中已經(jīng)存在,那么舊的key的數(shù)據(jù)會把已經(jīng)存在的新的key給覆蓋掉。
TYPE key
返回指定的key的類型,如果不存在則返回的是none,而不是nil(進(jìn)行操作才返回的)。
OBJECT REFCOUNT key | OBJECT ENCODING key | OBJECT IDLETIME key
分別返回key所引用的次數(shù),key對應(yīng)的編碼,key空閑的時間(沒有讀也沒有寫,單位為秒)。
RENAMENX key newkey
在RENMAE的基礎(chǔ)上判斷key是否存在,更加的安全。
EXPIREAT key timestamp
設(shè)置時間戳。
PERSIST key
移除給定key的生存時間,也可以使用EXPIRE 來重置。
SORT key [BY pattern] [LIMIT offset count] [GETpattern] [ASC|DESC] [ALPHA] [STOREdestination]
這個方法只能用在LIST、SET、ZSET上,這里的pattern和之前的keys的pattern是一樣的,LIMIT則是用來限制返回的偏移量和數(shù)量,GET是獲取返回的指定的key的內(nèi)容,ASC是升序、DESC是降序, ALPHA則是用在對字符串進(jìn)行排序的時候,STORE則是指定存儲的地方,可以指定到一個key上,這樣就可以通過GET來訪問到。
GET key
獲取存儲在給定鍵的值。
MGET key...
獲取多個指定的鍵值。
GETRANGE key start end
獲取指定范圍的鍵值,支持反向操作,如果end超出實際范圍,則忽略,返回全值。
GETSET key value
集合了GET和SET的功能,不過其返回的是該鍵被設(shè)置之前的值,但是其的值已經(jīng)發(fā)生了改變 ,注意如果之前沒有該鍵,則返回nil。
SET key value
設(shè)置存儲在給定鍵中的值。
SETNX key value
注意在key已經(jīng)存在的情況下,不進(jìn)行任何操作,也就是說 SET if key not exist;可能存在一個鎖的問題。
SETEX key seconds value
集合了SET和EXPIRE的功能,如果key存在,則覆蓋掉。
SETRANGE key offset value
從偏移量開始設(shè)置,注意的是當(dāng)這個value不足以把之前的value給覆蓋掉時,那么仍然會顯示之前沒有被覆蓋掉的值。這里返回的是字符串總的長度。如果空白字符串不存在的話,則相當(dāng)于在空白字符串上進(jìn)行操作。
MSET key value ...
可以同時設(shè)置多個鍵值對,如果不像覆蓋掉key的話,可以使用MSETNX。
MSETNX key value...
和SETNX的作用是一樣的,這里只有全部key都設(shè)置成功,才能返回1,只要有一個key已經(jīng)存在,就會返回0。
APPEND key value
追加字符串值,返回新字符串長度,可以添加空字符串,返回的是原來的長度。
STRLEN key
返回字符串長度。
DECR key
將key的值減一,如果不存在key,則會先進(jìn)行SET,并且將該鍵值初始化為0。該命令只能使用在數(shù)字上面。
DECRBY key decrement
在上面的基礎(chǔ)之上減去指定的值。
INCR key 和 INCRBY key increment
同DECR和DECRBY
SETBIT key offset set_or_clean
將字符串看作是二進(jìn)制,并且將字符串指定偏移量的二進(jìn)制位設(shè)置為指定值,可以是set或者clean。同樣的,如果key不存在,則幫其進(jìn)行設(shè)置。
GETBIT key offset
把字符串看作是二進(jìn)制串,并且返回二進(jìn)制串中指定偏移量的二進(jìn)制位的值。
在LIST中,不需要進(jìn)行相應(yīng)的SET操作,如果其不存在,其會自動創(chuàng)建,并且初始化為空列表。
LPUSH key value...
把多個鍵值加入到列表key的表頭中,返回列表的長度。
LPUSHX key value...
在上面的基礎(chǔ)之上,如果key不存在,則不進(jìn)行任何操作,即 LPUSH if key exists。
RPUSH key value
插入到表尾。
RPUSHX key value
類似LPUSHX。
LPOP key
移出并且返回頭元素。
RPOP key
移出并且返回尾元素。
BLPOP key... timeout
相當(dāng)于LPOP的阻塞版本,如果其列表沒有元素的時候,則會一直阻塞到列表中存在值并且進(jìn)行LPOP操作,我們還可以設(shè)置超時時間,如果是0的話,則表明其可以阻塞到無限時間長。
BRPOP key... timeout
參照BLPOP。
LLEN key
返回列表的長度。
LRANGE key start stop
返回只等區(qū)間長度的元素,注意stop要大于start,否則返回一個空列表。
LREM key count value
刪除列表中和value相等的元素。這個取決于count的值,如果為正數(shù),正向搜索刪除,如果為負(fù)數(shù),反向搜索刪除,如果等于0,則全部刪除;返回被刪除的個數(shù)。
LSET key index value
設(shè)置指定下標(biāo)的值為新的value。
LTRIM key start stop
將指定返回值保留下來,其余均刪除。
LINDEX key index
返回指定下標(biāo)index的值。
LINSERT key BEFORE|AFTER privot value
將key添加到privot之前或者之后,如果privot不存在或者列表為空,則不進(jìn)行任何操作。如果成功則返回列表長度。
RPOPLPUSH source destination
將source中的尾元素彈出并且插到destination列表的頭元素的位置上,可以簡單的理解為其進(jìn)行了插隊的操作;如果destination不存在則默認(rèn)設(shè)置為空列表,但是如果source不存在則不進(jìn)行任何的操作。
BROPLPUSH source destination timeout
上面版本的阻塞版本,如果timeout為0,則可以無限期阻塞。
SADD key-name [item...]
添加多個元素到集合中,并且返回添加到集合中的的元素的個數(shù)。
SREM key-name [item...]
刪除多個元素到集合中,并且返回刪除的元素的個數(shù)。
SISMEMBER key-name item
判斷該元素是否存在于該集合中。
SCARD key-name
返回該集合的元素數(shù)量。
SMEMBERS key-name
返回該集合的所有元素。
SRANDMEMBER key-name [count]
隨機(jī)的返回該集合的count個元素,如果count是正數(shù)的話,不會重復(fù),但是是負(fù)數(shù)的話,則可能就會重復(fù)。
SPOP key-name
隨機(jī)的彈出并且返回該值。
SMOVE from-key-name to-key-name item
將該元素從from移動到to中,成功則返回1,相反返回0。
SDIFF key-name [key-name...]
返回在第一個集合中存在,其它集合不存在的元素,即取差集。
SDIFFSTORE dest-key key-name [key-name...]
分成DIFF和STORE來看,也就是將DIFF的結(jié)果存儲在dest-key中。
SINTER key-name [key-name...]
返回在所有集合中同時存在的元素,即取并集。
SINTERSTORE dest-key key-name [key-name...]
分成INTER和STORE來看,也就是將INTER的結(jié)果存儲在dest-key中。
SUNION key-name [key-name...]
返回在所有集合中存在的元素,即取交集。
SUNIONSTORE dest-key key-name [key-name...]
分成UNION和STORE來看,也就是將UNION的結(jié)果存儲在dest-key中。
ZADD key-name score member [score member...]
將帶有給定分值的成員加入到有序集合中。
ZREM key-name member [member..]
從有序集合里面移除給定的成員,并且返回。
ZCARD key-name
返回有序集合中元素的數(shù)量。
ZINCRBY key-name increment member
給成員加上increment。
ZCOUNT key-name min max
返回值介于min和max之間的成員數(shù)量。
ZRANK key-name member
返回成員的排名。
ZSCORE key-name member
返回成員的分值。
ZRANGE key-name start stop [WITHSCORES]
返回排名介于start到stop的成員,如果WITHSCORES為True的話,則分值也一起返回,如果stop為-1的話,則返回全部。
ZREVRANK key-name member
分成REV和RANK來看,REV:成員從小到大進(jìn)行排列,RANK:返回具體的排名位置。
ZREVRANGE key-name start stop [WITHSCORES]
分成REV和RANGE來看,REV:成員從小到大進(jìn)行排列,RANGE:返回具體的排名位置。
ZRANGEBYSCORE key-name min max [WITHSCORES] [LIMIT offset count]
返回分值介于min到max之間到所有成員,可以指定返回從偏移量開始的count個成員。
ZREVRANGEBYSCORE key-name max min [WITHSCORES] [LIMIT offset count]
返回同上,不過是成員已經(jīng)從大到小進(jìn)行排列,注意這里是max-min。
ZREMRANGEBYRANK key-name start stop
將ZRANGEBYRANK返回的成員刪除掉。
ZREMRANGEBYSCORE key-name min max [WITHSCORES] [LIMIT offset count]
同樣的道理,將ZRANGEBYSCORE返回的成員刪除掉。
ZINTERSTORE dest-key key-name [key-name...]
和集合類似,分成INTER和STORE來看,也就是將INTER的結(jié)果存儲在dest-key中。
ZUNIONSTORE dest-key key-name [key-name...]
和集合類似,分成UNION和STORE來看,也就是將UNION的結(jié)果存儲在dest-key中。
Hash,所以以H開頭
HMSET key-name key value [key value...]
設(shè)置一個或者多個鍵值對。
HMGET key-name key...
可以獲取多個鍵對應(yīng)的值。
HDEL key-name key...
刪除多個鍵值對,返回成功刪除的數(shù)量。
HLEN key-name
返回鍵值對數(shù)量
HEXIST key-name key
判斷該鍵值是否存在于散列中。
HKEYS key-name
獲取散列所有的鍵。
HVALS key-name
獲取散列所有的值。
HGETALL key-name
獲取所有的鍵值對。
HINCREBY key-name key increment
將key保存的值加上increment。
HINCREBYFLOAT key-name key increment
將key保存的值加上浮點數(shù)increment。
免責(zé)聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點不代表本網(wǎng)站立場,如果涉及侵權(quán)請聯(lián)系站長郵箱:is@yisu.com進(jìn)行舉報,并提供相關(guān)證據(jù),一經(jīng)查實,將立刻刪除涉嫌侵權(quán)內(nèi)容。