一連の記事
記事ディレクトリ
序文
公式チュートリアル: https://www.runoob.com/redis/redis-install.html
Remote DIctionary Server (Redis Remote Dictionary Server) は、Salvatore Sanfilippo によって作成されたキーと値のストレージ システムです。
Redis は、ANSI C 言語で書かれたオープンソースのログタイプの Key-Value データベースで、BSD プロトコルに準拠し、ネットワークをサポートし、メモリベースで永続化でき、複数の言語で API を提供します。
値には文字列、マップ、リスト、セット、ソートされたセットなどのタイプがあるため、データ構造サーバーと呼ばれることがよくあります。
1. Redis の概要
Redis およびその他のキーと値のキャッシュ製品には、次の 3 つの特徴があります。
- Redis はデータの永続化をサポートしています。これにより、データをディスク上のメモリに保持し、再起動時に再ロードして使用できます。
- Redis は、単純なキーと値の型のデータをサポートするだけでなく、リスト、セット、zset、ハッシュなどのデータ構造のストレージも提供します。
- Redis はデータ バックアップ、つまりマスター/スレーブ モードでのデータ バックアップをサポートしています。
1.1 Redis の利点
- 非常に高いパフォーマンス – Redis は 110,000 回/秒の速度で読み取り、81,000 回/秒の速度で書き込みます。
- 豊富なデータ型 – Redis は、バイナリの場合の文字列、リスト、ハッシュ、セット、および順序付きセットのデータ型操作をサポートします。
- アトミック – Redis のすべての操作はアトミックであり、Redis は完全にマージされた後のいくつかの操作のアトミック実行もサポートします。
豊富な機能 – Redis はパブリッシュ/サブスクライブ、通知、キーの有効期限などの機能もサポートしています。
1.2 Redis は他の Key-Value ストアとどう違うのですか?
- Redis はより複雑なデータ構造を持ち、それらに対するアトミックな操作を提供するという、他のデータベースとは異なる進化の過程を経ています。
- Redis のデータ型は基本的なデータ構造に基づいており、追加の抽象化を必要とせずにプログラマにとって透過的です。
- Redis はメモリ内で実行されますが、ディスクに永続化できるため、さまざまなデータ セットの高速読み取りおよび書き込みを実行するときは、メモリを考慮する必要があります。データ量はハードウェア メモリより大きくてはなりません。インメモリ データベースのもう 1 つの利点は、ディスク上の同じ複雑なデータ構造と比較して、メモリ内での操作が非常にシンプルであるため、Redis は内部の複雑性が高くても多くのことを実行できることです。また、ディスク形式に関しては、ランダム アクセスを必要としないため、コンパクトな追加生成となります。
2. Redis のインストール手順
2.1 ダウンロードリンク
ダウンロード アドレス: https://github.com/tporadowski/redis/releases
ここでは、Redis-x64-xxx.zip 圧縮パッケージを D:\Program Files にダウンロードし、解凍後、フォルダーの名前を redis に変更します。
次の内容が含まれるフォルダーを開きます。
2.2 設置テスト
現在のディレクトリで cmd ウィンドウを開いて実行を開始します。
redis-server.exe redis.windows.conf
利便性を求める場合は、システム環境変数に redis パスを追加すると、パスを再度入力する必要がなくなります。以下の redis.windows.conf は省略できます。省略した場合は、デフォルトのものが有効になります。 。入力後、次のインターフェイスが表示されます:
このとき、別の cmd ウィンドウを開いてください。元の cmd ウィンドウを閉じないでください。そうしないと、サーバーにアクセスできなくなります。
redis ディレクトリに切り替えて、以下を実行します。
redis-cli.exe -h 127.0.0.1 -p 6379
キーと値のペアを設定します。
myKey abc を設定します
キーと値のペアを取得します。
マイキーを取得する
テストの成功
3. Redis でアカウントのパスワードを変更する
サービス redis-server.exe redis.windows.conf を開始します
クライアント redis-cli.exe を開始します
パスワードを表示します config get requirepass
パスワードを設定します config set requirepass system //システムにパスワードを設定します
終了し
て再度ログインします - クライアント redis-cli.exe を開始します
再度ログイン - パスワード認証システムを入力してください
4. Redis は Windows サービスとして作成されます
毎回 cmd ウィンドウを起動するのは非常に面倒なので、簡単に起動できるように Windows サービスとして記述します。
redis-server --service-install redis.windows.conf
5. .net core - CSRedisCore を使用して Redis を操作する
ServiceStack.Redis は商用版であり、無料版には制限がある;
StackExchange.Redis は無料版であるが、.NETCore 上で動作するカーネルと頻繁なタイムアウトの問題があり、当面は解決できない;
CSRedis は、 2016 年に .NETCore をサポートし、今日に至るまで反復を続け、低しきい値、高パフォーマンス、高度なパーティショニングを実現した .NETCore redis-cli SDK; v3.0 バージョンの更新では、CSRedis のすべてのメソッド名が調整されています
。 redis-cli との整合性 redis-cli に精通している場合 コマンドに関しては、CSRedis を直接使用できるため、学習コストが大幅に削減されます。
RedisServer キャッシュ データベースのインスタンス化と接続を作成します。
using CSRedis;
using YS.Common;
namespace YS.Core
{
/// <summary>
/// 创建RedisServer缓存型数据库
/// 说明:需要读取配置文件,里面有连接字符串
/// </summary>
public static class RedisServer
{
public static CSRedisClient? Cache;
public static CSRedisClient? Sequence;
public static CSRedisClient? Session;
public static void Initalize()
{
Cache = new CSRedisClient(AppSettings.Configuration["RedisServer:Cache"]);
Sequence = new CSRedisClient(AppSettings.Configuration["RedisServer:Sequence"]);
Session = new CSRedisClient(AppSettings.Configuration["RedisServer:Session"]);
}
}
}
RedisCache.cs 補助クラス。操作の実行を担当します。
using SqlSugar;
using System;
using System.Collections.Generic;
namespace YS.Core
{
/// <summary>
/// Redis操作方法
/// 说明:添加键值对、添加json,以及修改删除等
/// </summary>
public class RedisCache : ICacheService
{
public void Add<V>(string key, V value)
{
RedisServer.Cache.Set(key, value);
}
public void Add<V>(string key, V value, int cacheDurationInSeconds)
{
RedisServer.Cache.Set(key, value, cacheDurationInSeconds);
}
public bool ContainsKey<V>(string key)
{
return RedisServer.Cache.Exists(key);
}
public V Get<V>(string key)
{
return RedisServer.Cache.Get<V>(key);
}
public IEnumerable<string> GetAllKey<V>()
{
return RedisServer.Cache.Keys("Cache:SqlSugarDataCache.*");
}
public V GetOrCreate<V>(string cacheKey, Func<V> create, int cacheDurationInSeconds = int.MaxValue)
{
if (ContainsKey<V>(cacheKey))
{
return Get<V>(cacheKey);
}
else
{
var result = create();
Add(cacheKey, result, cacheDurationInSeconds);
return result;
}
}
public void Remove<V>(string key)
{
RedisServer.Cache.Del(key.Remove(0, 6));
}
}
}