標籤:redis 緩衝 kv資料庫
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的比較
- Redis使用最佳方式是全部資料in-memory。
- Redis更多情境是作為Memcached的替代者來使用。
- 當需要除key/value之外的更多資料類型支援時,Redis更合適。
- 當儲存的資料不能被剔除時,使用Redis更合適。
- Redis可以使用指令直接對緩衝的資料進行運算。
緩衝方案之Redis