緩存方案之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在同類型的產品中脫穎而出。html

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文件,運行它就能夠啓動服務器,以下圖所示。java

這裏寫圖片描述

  接下來能夠啓動一個客戶端程序來作一些簡單的實驗。仍是在剛纔的src目錄下有一個redis-cli文件,運行它就能夠啓動一個客戶端,以下圖所示。redis

這裏寫圖片描述

  關於Redis的數據類型、命令、事務、發佈/訂閱、數據備份與恢復、配置等內容仍然能夠參考上面提到的W3CSchool的網站。數據庫

在Java項目中使用Redis

  Jedis是Redis官方首選的Java客戶端開發包,點擊連接能夠得到相關的API文檔。下面給出一段簡單的測試代碼。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可使用指令直接對緩存的數據進行運算。 
相關文章
相關標籤/搜索