Redis快速入門及應用

簡介

Redis是一個開源的Key-Value存儲,但又不只僅是Key-Value存儲,用官網上的話來講,Redis是一個數據結構存儲,可用做數據庫、緩存和消息中間件。相對於傳統的Key-Value存儲Memcached來講,Redis具備以下特色:git

 

  • 速度快github

  • 豐富的數據結構,除String以外,還有List、Hash、Set、Sorted Setredis

  • 單線程,避免了線程切換和鎖的性能消耗數據庫

  • 原子操做緩存

  • 可持久化(RDB與AOF)安全

  • 發佈/訂閱服務器

  • 支持Lua腳本網絡

  • 分佈式鎖數據結構

  • 事務併發

  • 主從複製與高可用(Redis Sentinel)

  • 集羣(3.0版本以上)

數據結構

一、String

這是最簡單的Redis類型。若是隻使用這種類型,Redis就像一個可持久化的Memcached服務器。

 

二、List

Redis的List是基於雙向鏈表實現的,能夠支持反向查找和遍歷。

經常使用案例:聊天系統、社交網絡中獲取用戶最新發表的帖子、簡單的消息隊列、新聞的分頁列表、博客的評論系統。

 

三、Hash

Hash是一個String類型的field和value之間的映射表,請見下圖,相似於.NET中的Hashtable和Dictionary。主要用來存儲對象,能夠避免序列化的開銷和併發修改控制的問題。

 

 

四、Set

Set也是一個列表,不過它的特殊之處在於它是能夠自動排重的:當須要存儲一個列表數據,而又不但願出現重複的時候,Set是一個很好的選擇(好比ID的集合)。而且Set提供了判斷某個成員是否在一個Set集合內的接口,這也是List所沒有的。

 

五、Sorted Set

Sorted Set和Set的使用場景相似,區別是Sorted Set會根據提供的score參數來進行自動排序。當你須要一個有序的而且不重複的集合列表,那麼就能夠選擇Sorted Set數據結構。經常使用案例:遊戲中的排行榜。

開源客戶端

StackExchange.Redis:

https://github.com/StackExchange/StackExchange.Redis?spm=5176.100239.blogcont272212.10.IsQwET&file=StackExchange.Redis

基本用法

StackExchange.Redis中的中心對象是名稱空間中的ConnectionMultiplexer類StackExchange.Redis。這是隱藏多個服務器詳細信息的對象。因爲ConnectionMultiplexer功能不少,所以能夠在調用方之間共享和重用它。您不該該建立ConnectionMultiplexer每一個操做。它是徹底線程安全的,而且能夠用於此用途。在全部後續示例中,將假定您已ConnectionMultiplexer保存一個實例以供重用。可是如今,讓咱們建立一個。這可使用ConnectionMultiplexer.Connect或ConnectionMultiplexer.ConnectAsync傳入配置字符串或ConfigurationOptions對象來完成。配置字符串能夠採用逗號分隔的一系列節點的形式,所以讓咱們僅經過默認端口(6379)鏈接到本地計算機上的實例:

using StackExchange.Redis;
...
ConnectionMultiplexer redis = ConnectionMultiplexer.Connect("localhost");
// ^^^ store and re-use this!!!

須要注意的是ConnectionMultiplexer工具IDisposable,能夠在再也不須要處置。這是故意不顯示using語句用法的緣由,由於ConnectionMultiplexer要重用此對象很是少見,所以您但願簡短地使用它。

更復雜的狀況可能涉及主/副本設置。對於此用法,只需指定組成該邏輯Redis層的全部所需節點(它將自動識別主節點):

ConnectionMultiplexer redis = ConnectionMultiplexer.Connect("server1:6379,server2:6379");

若是發現兩個節點都是主節點,則能夠有選擇地指定一個決勝鍵,該鍵可用於解決問題,可是幸運的是這種狀況不多見。

有了以後ConnectionMultiplexer,您可能須要作如下三件事:

  • 訪問redis數據庫(請注意,在集羣的狀況下,單個邏輯數據庫可能分佈在多個節點上)

  • 利用redis的發佈/訂閱功能

  • 訪問單個服務器以進行維護/監視

相關文章
相關標籤/搜索