1. 程式人生 > >快取方案之Redis

快取方案之Redis

Redis簡介

  Redis是Remote Dictionary Server(Redis) 的縮寫,或許光聽名字你就能猜出它大概是做什麼的。不錯,它是一個由Salvatore Sanfilippo編寫的key-value儲存系統,是一個使用ANSI C語言編寫、遵守BSD協議、支援網路、可基於記憶體亦可持久化的日誌型的Key-Value資料庫,並提供多種語言的API。在很多地方,Redis也被業內人士稱為資料結構伺服器,因為它允許快取的值(value)可以是字串(string)、雜湊(hash)、列表(list)、集合(set)和有序集合(sorted set)等型別。此外,Redis還支援master-slave方式的資料備份,所有的這一切都讓Redis在同類型的產品中脫穎而出。

Redis的優勢

  • 效能極高 – 在我的Mac Book Pro上執行Redis的基準測試(benchmark),每秒能夠處理寫運算元都在80000以上。部分測試結果如下圖所示:

這裡寫圖片描述

  • 豐富的資料型別 – Redis支援Strings, Lists, Hashes, Sets 及Ordered Sets資料型別操作。
  • 原子 – Redis的所有操作都是原子性的,同時Redis還支援對幾個操作全並後的原子性執行。
  • 豐富的特性 – Redis還支援publish/subscribe,通知,key過期等豐富的特性。

Redis的安裝和配置

  如何在Windows和Linux系統上安裝Redis在

W3CSchool網站已經有詳細的講解了,我分享一下在Mac上安裝Redis的過程,跟其他系統基本一致。首先從Redis的官方網站下載Redis的壓縮檔案,解壓之後有一個src目錄。由於Mac系統是在Unix系統(FreeBSD)基礎上發展起來的,因此可以直接使用make命令對src目錄下的原始碼進行構建(Makefile肯定是已經有的,不懂make的作用和原理沒關係,照做就可以了),構建完成後src目錄下會生成一個redis-server檔案,執行它就可以啟動伺服器,如下圖所示。

這裡寫圖片描述

  接下來可以啟動一個客戶端程式來做一些簡單的實驗。還是在剛才的src目錄下有一個redis-cli檔案,執行它就可以啟動一個客戶端,如下圖所示。

這裡寫圖片描述

  關於Redis的資料型別、命令、事務、釋出/訂閱、資料備份與恢復、配置等內容仍然可以參考上面提到的W3CSchool的網站。

在Java專案中使用Redis

  Jedis是Redis官方首選的Java客戶端開發包,點選連結可以獲得相關的API文件。下面給出一段簡單的測試程式碼。

import redis.clients.jedis.Jedis;

class RedisTest {
    public static void main(String[] args) {
        Jedis jedis = new Jedis("localhost");       // 連線到Redis伺服器
        // jedis.auth("123456");                    // 輸入口令進行驗證
        jedis.set("greeting", "Hello, world!");     // 將字串快取到Redis伺服器
        System.out.println(jedis.get("greeting"));  // 從Redis快取中獲取資料
    }
}

Redis和Memcached的比較

  1. Redis使用最佳方式是全部資料in-memory。
  2. Redis更多場景是作為Memcached的替代者來使用。
  3. 當需要除key/value之外的更多資料型別支援時,Redis更合適。
  4. 當儲存的資料不能被剔除時,使用Redis更合適。
  5. Redis可以使用指令直接對快取的資料進行運算。