Redis
C#
Azure

Redis を触ってみる

More than 1 year has passed since last update.

プロジェクトで同僚が使い始めて、私は初めてだったのでトラブルシュートがてら触ってみた。

インストール方法

Azure で Redis をインストールするにはいくつかの方法がある。ポータルからが一番簡単

Redis01.png

  1. Access keys から、プライマリ・セカンダリキーと、接続文字列が取得できる。
  2. コンソールを web 上で開くことができる

各種クライアント

サーバーに接続するための様々なクライアントが用意されている。

Azure Portal

さきの 2. をクリックすると、ポータル上でくれりを投げることができる。

Redis02.png

redis-cli

Windows、Mac, Linux 向けにクライアントが用意されている。私が、Bash on Windows で接続確認した方法は下記の通り。

$ sudo apt-get install redis-tools

これであっさり redis-cli がインストールされましたが、一つ問題があります。サーバーは、デフォルトでTLS のアクセスしかredis-cli を使うときは、素のhttp でアクセスするようになっています。その時は、Windows 側で stunnel download を使うとよい。これは、TLSのエンクリプションラッパーだ。動作イメージを見てみよう。stunnelをダウンロードしてインストールする。
インストールして、 Stunnel GUL Start を探して実行してみよう。いくつかの項目をいれなくてはならない。あと、設定の変更が必要だ。

Redis03.png

手順どおり、実施してみる。設定ファイルの一番したに下記のを追加。

[redis-cli]
client = yes
accept = 127.0.0.1:6380
connect = YOURE_REDIS_NAME.redis.cache.windows.net:6380
``
これで、クライアントからのメッセージをここに送ることによって、TSLにラップして送信してくれる。
じゃあ、実際に、redis-cli から動作させてみよ

$ redis-cli -p 6380 -a YOUR_PRIMARY_PASSWORD 127.0.0.1:6380> ping
PONG
```

stunnelがあれば楽勝ですね。

.NET

さて、.NET でもプログラムが書ける。

using StackExchange.Redis;
using System;

namespace RedisSample
{
  class Program
  {
    static void Main(string[] args)
    {
        IDatabase cache = Connection.GetDatabase();
        cache.StringSet("key1", "value");
        cache.StringSet("key2", 25)

        string key1 = cache.StringGet("key1")
        int key2 = (int)cache.StringGet("key2")
        Console.WriteLine($"key1:{key1} key2: {key2}");   
        Console.ReadLine();    
    }

  private static Lazy<ConnectionWultiplexer lazyConenction = new Lazy<ConnectionMultiplexer> (() =>
    return ConnectionMultiplexer.Connect("YOUR ENDPOINT HERE");

     public static ConnectionMultiplexer Connection
       get 
       {
          return lazyConnection.Value;
       }
    }
  }
}

とっても簡単で解説もいらないぐらい。

実行すると予想通りの例

key1: value key2: 25

ちゃんとアクセスできました。

Enjoy coding

* [How to Use Azure Redis Cache](https://docs.microsoft.com/en-us/azure/redis-cache/cache-dotnet-how-to-use-azure-redis-cache)