Redisへ接続

このレッスンではWinFormsからRedisを操作するデモを行います。他の種類のプロジェクトでも同じ考え方で実装でき、ここはWinFormsで例示しています。

Redisをインストールすると独立したサービスプログラムとして動作します。C# WinFormsから利用する際は、データベースへ接続するのと同じように接続処理を記述します。

下記の接続文字列設定はapp.configに記述します

1. App.config 設定

<?xml version="1.0" encoding="utf-8"?>
<configuration>
  <connectionStrings>
    <!-- Redis接続文字列 -->
    <add name="RedisConnectionString" connectionString="127.0.0.1:6379"/>
    <!-- 省略記述 connectionString="localhost" デフォルトポート6379 -->
  </connectionStrings>
  <startup>
    <supportedRuntime version="v4.0" sku=".NETFramework,Version=v4.5" />
  </startup>
</configuration>Code language: HTML, XML (xml)

接続文字列の解説

  • localhost / 127.0.0.1:ローカルのRedisサービス
  • 既定ポート 6379;ポート変更時の書き方:127.0.0.1:6380
  • Redisにパスワードが設定されている場合:127.0.0.1:6379,password=パスワード

2. Form1.cs 主要コード

必要なNuGetパッケージ

StackExchange.Redis

インポートする名前空間

using StackExchange.Redis;
using System.Configuration;Code language: C# (cs)
public partial class Form1 : Form
{
    // Redisデータベース操作用オブジェクト
    private IDatabase db;
    // 設定ファイルから接続文字列を読み込む
    private string ConnectionString = ConfigurationManager.ConnectionStrings["RedisConnectionString"].ConnectionString;
    // 多重化接続(公式推奨シングルトン、volatileでスレッドセーフを確保)
    private volatile IConnectionMultiplexer connection;

    public Form1()
    {
        InitializeComponent();
        // 接続を作成
        connection = ConnectionMultiplexer.Connect(ConnectionString);
        // 既定の0番データベースを取得
        db = connection.GetDatabase();
    }

    private void button1_Click(object sender, EventArgs e)
    {
        // Setメソッド:キャッシュ書き込み(キー、値、有効期限秒)
        bool res = Set(this.textBox1.Text, this.textBox2.Text, 1000);
        if (res)
        {
            MessageBox.Show("設定成功");
        }
        else
        {
            MessageBox.Show("設定失敗");
        }
    }

    /// <summary>
    /// Redis文字列キーバリュー書き込み(簡易ラッパー)
    /// </summary>
    bool Set(string key, object data, int cacheTime)
    {
        if (string.IsNullOrEmpty(key)) return false;
        // 有効期限を設定
        var expire = TimeSpan.FromSeconds(cacheTime);
        return db.StringSet(key, data.ToString(), expire);
    }
}Code language: C# (cs)

Redisへ接続

コメントを残す

メールアドレスが公開されることはありません。 が付いている欄は必須項目です