Redis那些事(一) — Redis簡介

晴天Jay_chen發表於2018-11-26

      本人最近在學習Redis的使用和底層原理,有一些收穫,所以希望通過寫部落格的形式來記錄自己的學習過程,加深自己的理解,同時也方便以後查閱複習。目前打算先記錄一些基本的使用方法和部分底層實現,其他的如果有用到我再貼上來。文章內容是我根據自己的理解和參考網上的資料總結的,如果有錯誤的地方,就麻煩各位大佬批評指正哈。

     這是第一篇,我們就先來了解一下Redis的基礎知識吧!

1. 什麼是Redis ?

     簡單來說,Redis是一個基於C/S模式的Key-Value型的記憶體資料庫,所有資料都儲存在記憶體中,因此讀寫速度非常快,同時也支援資料持久化,可用於快取、事件釋出或訂閱、高速佇列等場景。Redis提供了多種高階語言的API ,如Java, C,C++,PHP等,可以非常方便地整合到其他大型模組中。另外,Redis提供了多種型別的資料結構給使用者,如字串,列表,雜湊,集合,有序集合等,大大提高了Redis的可用性和效能。

2. 使用Redis有什麼好處?

   (1) 讀寫速度快,因為資料存在記憶體中,類似於HashMap,HashMap的優勢就是查詢和操作的時間複雜度都是O(1);

   (2) 支援豐富的資料型別,如 list, string, set, sorted set 等,方便使用者使用,提高資料儲存和資料讀寫的效率;

   (3) 支援事務,即原子性操作,Redis中的事務(transaction)是一組命令的集合。事務同命令一樣都是Redis最小的執行單位,一個事務中     的命令要麼都執行,要麼都不執行。

   (4) 特性豐富,支援多種應用場景,可以使用RDB或者AOF進行持久化;

3. 相比memcached,Redis有哪些優勢?

  (1) memcached 只支援字串型別的資料結構,而Redis支援多種高效方便的資料結構,方便使用;

  (2) 一般來說,Redis的讀寫速度會比memcached快一些,效能更好;

  (3) Redis 支援多種方式持久化,可以定期將記憶體中的資料寫到磁碟,重啟Redis 可以恢復原來的資料,而memcached不支援持久化,一旦系統掉電,資料就丟失了;

4. Redis的回收策略

 Redis 支援多種回收策略(資料淘汰策略),使用者可以根據需要進行相應的配置,主要的回收策略有以下幾種:

  (1) volatile-lru:從已設定過期時間的資料集中挑選最近最少使用的資料淘汰;

  (2) volatile-ttl:從已設定過期時間的資料集(server.db[i].expires)中挑選將要過期的資料淘汰;

  (3) volatile-random:從已設定過期時間的資料集(server.db[i].expires)中任意選擇資料淘汰;

  (4) allkeys-lru:從所有資料集(server.db[i].dict)中挑選最近最少使用的資料淘汰;

  (5) allkeys-random:從資料集(server.db[i].dict)中任意選擇資料淘汰;

  (6) no-enviction(驅逐):禁止驅逐資料

   參考資料

   1. redis總結:https://blog.csdn.net/hjm4702192/article/details/80518856

   2. https://blog.csdn.net/qq_29108585/article/details/63251491

 

 

  

相關文章