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