1. 程式人生 > >Redis學習(一) Redis初步入門

Redis學習(一) Redis初步入門

一、Redis基礎知識

1.1 Redis簡介

   Redis是一個開源(BSD許可),記憶體儲存的資料結構伺服器,可用作資料庫快取記憶體訊息佇列代理。它支援字串、雜湊表、列表、集合、有序集合,點陣圖,hyperloglogs等資料型別。內建複製、Lua指令碼、LRU收回、事務以及不同級別磁碟持久化功能,同時通過Redis Sentinel提供高可用,通過Redis Cluster提供自動分割槽。

  一般專案都可以使用它。

1.2 Redis資料

   Redis的資料還是比較多的,首先推薦Redis中文網站的資料,其他的

1.2.1 初步教程

  Redis 教程:http://www.runoob.com/redis/redis-tutorial.html,菜鳥教程,內容很詳細,閱讀完後基本就對Redis有個全面的瞭解。其中每部分連結:

  Redis 教程 Redis 簡介 Redis 安裝 Redis 配置 Redis 資料型別

  Redis 命令 Redis 鍵(key) Redis 字串(String) Redis 雜湊(Hash) Redis 列表(List) Redis 集合(Set) Redis 有序集合(sorted set) 

Redis HyperLogLog Redis 釋出訂閱 Redis 事務 Redis 指令碼 Redis 連線 Redis 伺服器

  Redis 資料備份與恢復 Redis 安全 Redis 效能測試 Redis 客戶端連線 Redis 管道技術 Redis 分割槽 Java 使用 Redis PHP 使用 Redis

1.2.2 其他教程

  所有命令解析:http://www.redis.net.cn/order/,遇到不懂的可以來查詢。

二、Redis和同類產品的比較

  根據Redis的簡介,Redis可用作資料庫快取記憶體訊息佇列代理,那麼當你打算使用它們這些功能的時候,可以考慮一下與其他產品的對比,選出一個更好用的。

1.1 做為資料庫與之比較

  Redis是可以做為資料庫來使用的,它可以看做一個key/value型資料庫,因為Redis會根據配置定時將記憶體中的資料寫入到硬碟中,這樣即便重啟以後依然可以恢復,但是有幾個缺點需要考慮一下:

  • Redis只能儲存key/value型別,雖然value的型別可以有多種,但是對於關聯性的記錄查詢,沒有Oracle/Mysql方便。
  • Redis記憶體資料寫入硬碟有一定的時間間隔,在這個間隔內資料可能會丟失,雖然後續會介紹各種模式來保證資料丟失的可能性,但是依然會有可能,所以對資料有嚴格要求的不建議使用Redis做為資料庫。

1.2 做為快取記憶體與之比較

  我覺得Redis的本職工作還是快取記憶體,同樣可以做為快取的有Ehcache、Memcached 。有一篇部落格介紹的很詳細:http://blog.csdn.net/jationxiaozi/article/details/8509732。我就簡單總結一下,只說它們最大的特點,讀取速度不再考慮範圍之內,畢竟能作為相互比較的快取工具,速度不會差的太多,只列出較為突出的優點和缺點,列出來表示其他沒有:

Ehcache

    • 是一個Java開源專案,使用的方式就是引入一個jar包,非常方便

Memcached 

    • 如果開啟多執行緒模式,讀取速度將有極大的提高
    • 資料只會儲存在記憶體中,掛掉後資料不可恢復

Redis

    • 資料結構非常豐富,字串、hash列表、list、Set等等
    • 支援主從,Sentinal,分片等多種高階特性,用於負載均衡和容災,具有高可用性
    • 幾乎支援所有語言的客戶端

  根據需求選擇最合適的。

1.3 做為訊息佇列與之比較

  Redis也是可以做為訊息佇列的,與之相同功能比較優秀的就是Kafka,簡單比較如下:

Redis

    • 只能說具備釋出訂閱功能,一個或多個消費者訂閱一個頻道

Kafka

    • 高階特性一應俱全,叢集、負載均衡、動態擴容、資料備份等

  這麼說,如果能用Kafka就用Kafka,對於資料不敏感的一般場景也是可以應用Redis的。