1. 程式人生 > >redis和memcached的區別?

redis和memcached的區別?

        如果簡單地比較redis和memcached的區別,大多數都會得到以下觀點:         1、redis不僅僅支援簡單的k/v型別的資料,同時還提供list,set,hash等資料結構的儲存。         2、redis支援資料的備份,即master-slave模式的資料備份         3、redis支援資料的持久化,可以將記憶體中的資料保持在磁碟中,重啟的時候可以再次載入進行使用

        在redis中,並不是所有的資料都一直儲存在記憶體中的。這是和memcached相比一個最大的卻別(我個人是這麼認為的)     redis         使用者發出查詢類似的請求,Nix判斷是pc端還是M端,假如是pc端,先從redis快取裡面查詢所需要的資料     如果有則直接返回,如果沒有則通過API資料介面(做一個查詢的介面)直接從資料庫(DB mysql等)裡面查         把最新查新查詢的結果先放到redis快取裡,再將查詢的結果返回給PC客戶端              redis是一種高階的key:value儲存系統,其中value支援五中資料型別         1、字串(string)         2、字串列表(list)         3、字串集合(sets)         5、雜湊(hashes)         而關於key,有幾點要提醒大家:             1、key不要太長,計量不要超過1024位元組,這不僅消耗記憶體,而且會降低查詢的效率             2、key也不要太短,太短的話,key的可讀性會降低             3、在一個專案中,key最好使用同一的命名模式,例如user:10000:password.

        redis中的lists在底層實現上並不是陣列,而是連結串列。         redis的集合是一種無序的集合,集合中的元素沒有先後的順序         redis中的hashes存的是字串和字串之間的對映         redis提供了兩種持久化的方式,分別是RDB(redis dataBase)和AOF(Append Only File)         RDB:簡而言之,就是在不同的時間點,將redis儲存的資料生成快照並存儲到磁碟等介質上         AOF:則是換了一個角度來實現持久化,那就是講redis執行過的所有寫指令記錄下來,在下次redis重新啟動時,只要把這些寫指令從前到後再重複執行一遍,就可以實現資料恢復了。 其實RDB和AOF兩種方式也可以同時使用,在這種情況下,如果redis重啟的話,則會優先採用AOF方式來進行資料恢復, 這是因為AOF方式的資料恢復完整度更高。                      redis的事務處理         1、MULTI用來組裝一個事務         2、EXEC用來執行一個事務         3、DISCARD用來取消一個事物         4、WATCH用來監視一些key,一點這些key在事務執行之前被改變,則取消事務的執行