Windows で Redis キャッシュ サーバーを使用する方法
1. Redis サーバー
まず Redis サーバーをダウンロードし、クリックして .msi バージョンをダウンロードし、ダブルクリックして Redis サーバーをインストールし、システムをサービスとして起動します:
Redis をインストールするサーバーの後に最初に行うことは、パスワードを設定してインストール ディレクトリを入力することです: C:Program FilesRedis - 構成ファイルを検索します: redis.windows-service.conf - 検索: # requirepass fo Bared - 入力して改行し、追加します: requirepass Writeここに新しいパスワードを入力します (先頭行にスペースを入れないでください) - サービスに移動して Redis サービスを再起動するか、コンピューターを再起動します
パスワードを設定しない場合のデメリットは、何が起こったかを見てください。 Ctrip のこの人: Redis が攻撃された事件を思い出してください
2. Redis クライアント (コマンド ラインおよび視覚化ツール RDM)
コマンド ライン モードのデモ: Redis クライアントを起動し、Redis サーバーの読み取りと書き込みを行います
上の図のコマンドの説明:
cd C:Program FilesRedis:cd このコマンドは、Redis インストール ディレクトリに入ります。これは、Windows システムの
redis-cli.exe をダブルクリックして Redis インストール ディレクトリに入るのと同じです。 redis-cli クライアント プログラムを開きます。これは、Windows システムで exe プログラムをダブルクリックして実行するのと同じです (上記の Redis サービスがインストールされています。サーバーに接続するにはクライアント プログラムが必要です。ローカル Redis サーバーに接続するには、このコマンドを直接入力して、リモート サーバーに接続するには、IP とポートを追加する必要があります。例: redis-cli.exe -h 111.11.11.111 -p 6379)
keys *: すべてのキーを表示します。値のペア (Redis サーバーがパスワードを設定している場合、このコマンドはエラーを報告します。最初にパスワードを入力する必要があります。次のコマンドを実行します: パスワードを認証します)
set blog oppoic.cnblogs.com: 設定 A キーと値ペア、キーは: blog、値は: oppoic.cnblogs.com (ディレクトリによって保存: ディレクトリ名を設定: キー値)
get blog: キー blog に対応する値を取得します
keys *: すべてのキーを表示値のペア
その他の一般的なコマンド:
config get dir: Redis インストール ディレクトリを取得します
ping: Redis サーバーが正常であることを示す PONG を返します
redis-cli.exe: 最初のデータベース (デフォルト)、redis を入力しますtotals 0 to 15 合計 16 のライブラリがあります。3 番目のライブラリに入ります。 redis-cli -n 2 (既に入力されています。0 ~ 15 を選択し、任意に切り替えます)
quit: redis プログラムを終了します
exit: dos ウィンドウを終了します
flushdb: 現在選択されているデータベースを削除します。
flushall のすべてのキーを削除します。
その他のコマンド: https://redis.io/commands
この時点で、このマシン上で Redis キャッシュ サーバーが実行されています。がセットアップされており、読み取りと書き込みが可能です。ただし、コマンド ラインは明らかに初心者ユーザーにとって使いやすいものではありません。ビジュアル ツールは次のとおりです: Redis Desktop Manager (https://redisdesktop.com/download)
左側のツリーは、すでに接続があることを示しています。下部の [Redis に接続] をクリックします。 サーバーが別の接続を追加します:
名前: 接続名、適当に選択します
ホスト: ホスト アドレス、このマシンは 127.0.0.1、リモート入力は IP に対応します
ポート: ポート、 Redis サーバーのデフォルトのポートは 6379 です
Auth: パスワード、設定されている場合は失われ、設定されていない場合は空白のままにしてください
Redis サーバーに接続すると、デフォルトで 16 のライブラリがあることがわかります (設定ファイルは変更可能)、そしてインデックスは 0 から始まります。一般的な使用法は、1 つのプロジェクトと 1 つのライブラリを持ち、プロジェクト内の異なる機能モジュールがこのライブラリの下の異なるディレクトリに保存されることです。
可視化ツールを手に入れた後の操作は言うまでもなく、ダブルクリック、右クリックで作成、削除です。 。 。 Windows システムの使用方法を知っている人なら誰でも、このツールを使用できます。 Redis Desktop Manager は、コマンド ラインと比較して、リモート サーバー上のデータをデバッグするのにさらに使いやすく便利なビジュアル ツールです。
注: このマシンではこれを実行できます。リモート サーバーに接続するには、サーバー上の Redis インストール ディレクトリに移動し、redis.windows-service.conf ファイルを見つけて、bind 127.0.0.1 を見つけてコメント化する必要があります。先頭に「#」を付けてサービスを右クリックし、redis サービスを再起動するか、Windows システムを再起動します
3. C# は Redis サーバーを操作します
上記は Redis サーバーを操作するためのコマンドラインとビジュアルツールです。C# プログラムは Redis を操作するために StackExchange.Redis (https://github.com/StackExchange/StackExchange.Redis) を使用する必要があります。統合呼び出しを行うために、RedisHelper ヘルパー クラスをカプセル化します:
using Newtonsoft.Json; using StackExchange.Redis; using System; using System.ComponentModel; using System.Configuration; using System.Reflection; using System.Text; namespace redis_Demo { /// <summary> /// Redis 帮助类 /// </summary> public static class RedisHelper { private static string _conn = ConfigurationManager.AppSettings["redis_connection_string"] ?? "127.0.0.1:6379"; private static string _pwd = ConfigurationManager.AppSettings["redis_connection_pwd"] ?? "123456"; static ConnectionMultiplexer _redis; static readonly object _locker = new object(); #region 单例模式 public static ConnectionMultiplexer Manager { get { if (_redis == null) { lock (_locker) { if (_redis != null) return _redis; _redis = GetManager(); return _redis; } } return _redis; } } private static ConnectionMultiplexer GetManager(string connectionString = null) { if (string.IsNullOrEmpty(connectionString)) { connectionString = _conn; } var options = ConfigurationOptions.Parse(connectionString); options.Password = _pwd; return ConnectionMultiplexer.Connect(options); } #endregion /// <summary> /// 添加 /// </summary> /// <param name="folder">目录</param> /// <param name="key">键</param> /// <param name="value">值</param> /// <param name="expireMinutes">过期时间,单位:分钟。默认600分钟</param> /// <param name="db">库,默认第一个。0~15共16个库</param> /// <returns></returns> public static bool StringSet(CacheFolderEnum folder, string key, string value, int expireMinutes = 600, int db = -1) { string fd = GetDescription(folder); return Manager.GetDatabase(db).StringSet(string.IsNullOrEmpty(fd) ? key : fd + ":" + key, value, TimeSpan.FromMinutes(expireMinutes)); } /// <summary> /// 获取 /// </summary> /// <param name="folder">目录</param> /// <param name="key">键</param> /// <param name="db">库,默认第一个。0~15共16个库</param> /// <returns></returns> public static string StringGet(CacheFolderEnum folder, string key, int db = -1) { try { string fd = GetDescription(folder); return Manager.GetDatabase(db).StringGet(string.IsNullOrEmpty(fd) ? key : fd + ":" + key); } catch (Exception) { return null; } } /// <summary> /// 删除 /// </summary> /// <param name="folder">目录</param> /// <param name="key">键</param> /// <param name="db">库,默认第一个。0~15共16个库</param> /// <returns></returns> public static bool StringRemove(CacheFolderEnum folder, string key, int db = -1) { try { string fd = GetDescription(folder); return Manager.GetDatabase(db).KeyDelete(string.IsNullOrEmpty(fd) ? key : fd + ":" + key); } catch (Exception) { return false; } } /// <summary> /// 是否存在 /// </summary> /// <param name="key">键</param> /// <param name="db">库,默认第一个。0~15共16个库</param> public static bool KeyExists(CacheFolderEnum folder, string key, int db = -1) { try { string fd = GetDescription(folder); return Manager.GetDatabase(db).KeyExists(string.IsNullOrEmpty(fd) ? key : fd + ":" + key); } catch (Exception) { return false; } } /// <summary> /// 延期 /// </summary> /// <param name="folder">目录</param> /// <param name="key">键</param> /// <param name="min">延长时间,单位:分钟,默认600分钟</param> /// <param name="db">库,默认第一个。0~15共16个库</param> public static bool AddExpire(CacheFolderEnum folder, string key, int min = 600, int db = -1) { try { string fd = GetDescription(folder); return Manager.GetDatabase(db).KeyExpire(string.IsNullOrEmpty(fd) ? key : fd + ":" + key, DateTime.Now.AddMinutes(min)); } catch (Exception) { return false; } } /// <summary> /// 添加实体 /// </summary> /// <param name="folder">目录</param> /// <param name="key">键</param> /// <param name="t">实体</param> /// <param name="ts">延长时间,单位:分钟,默认600分钟</param> /// <param name="db">库,默认第一个。0~15共16个库</param> public static bool Set<T>(CacheFolderEnum folder, string key, T t, int expireMinutes = 600, int db = -1) { string fd = GetDescription(folder); var str = JsonConvert.SerializeObject(t); return Manager.GetDatabase(db).StringSet(string.IsNullOrEmpty(fd) ? key : fd + ":" + key, str, TimeSpan.FromMinutes(expireMinutes)); } /// <summary> /// 获取实体 /// </summary> /// <param name="folder">目录</param> /// <param name="key">键</param> /// <param name="db">库,默认第一个。0~15共16个库</param> public static T Get<T>(CacheFolderEnum folder, string key, int db = -1) where T : class { string fd = GetDescription(folder); var strValue = Manager.GetDatabase(db).StringGet(string.IsNullOrEmpty(fd) ? key : fd + ":" + key); return string.IsNullOrEmpty(strValue) ? null : JsonConvert.DeserializeObject<T>(strValue); } /// <summary> /// 获得枚举的Description /// </summary> /// <param name="value">枚举值</param> /// <param name="nameInstead">当枚举值没有定义DescriptionAttribute,是否使用枚举名代替,默认是使用</param> /// <returns>枚举的Description</returns> private static string GetDescription(this Enum value, Boolean nameInstead = true) { Type type = value.GetType(); string name = Enum.GetName(type, value); if (name == null) { return null; } FieldInfo field = type.GetField(name); DescriptionAttribute attribute = Attribute.GetCustomAttribute(field, typeof(DescriptionAttribute)) as DescriptionAttribute; if (attribute == null && nameInstead == true) { return name; } return attribute == null ? null : attribute.Description; } } }
キー名と値 wangjie を持つレコードを Redis サーバーの最初のライブラリの fd1 ディレクトリに追加します:
RedisHelper.StringSet(CacheFolderEnum.Folder1, "name", "wangjie");
このレコードを取得します:
string key = RedisHelper.StringGet(CacheFolderEnum.Folder1, "name"); Console.WriteLine("键为name的记录对应的值:" + key);
このレコードを削除します:
bool result = RedisHelper.StringRemove(CacheFolderEnum.Folder1, "name"); if (result) { Console.WriteLine("键为name的记录删除成功"); } else { Console.WriteLine("键为name的记录删除失败"); }
このレコードが存在するかどうかをクエリします:
bool ifExist = RedisHelper.KeyExists(CacheFolderEnum.Folder1, "name"); if (ifExist) { Console.WriteLine("键为name的记录存在"); } else { Console.WriteLine("键为name的记录不存在"); }
キー sd1 とオブジェクトの値を持つレコードを Redis サーバーの 2 番目のライブラリの fd2 ディレクトリに追加します:
Student student = new Student() { Id = 1, Name = "张三", Class = "三年二班" }; RedisHelper.Set<Student>(CacheFolderEnum.Folder2, "sd1", student, 10, 1);
このオブジェクトを取得します:
Student sdGet = RedisHelper.Get<Student>(CacheFolderEnum.Folder2, "sd1", 1); if (sdGet != null) { Console.WriteLine("Id:" + sdGet.Id + " Name:" + sdGet.Name + " Class:" + sdGet.Class); } else { Console.WriteLine("找不到键为sd1的记录"); }
ソースコード: (http://files.cnblogs.com/files/oppoic/redis_Demo.zip)
環境はVS 2013です。実行できない場合は、csにコードをコピーし、自分でコンパイルして実行してください
4. その他
MSOpenTech によって開発された Redis キャッシュ サーバーには、書き込み後、コンピューターが再起動されたときにもキーと値のペアが存在し続けるため、有効期限を設定する必要があります。キーと値のペアを書き込むと、占有されていたメモリが解放されません。 Redis の保存方法は、文字列に対応するキーだけでなく、List、HashTable などにも対応します。もちろん、Redis のより高度な使用法は、依然として Linux で行われています。
Windows での Redis キャッシュ サーバーの使用に関連するその他の記事については、PHP 中国語 Web サイトに注目してください。

ホットAIツール

Undresser.AI Undress
リアルなヌード写真を作成する AI 搭載アプリ

AI Clothes Remover
写真から衣服を削除するオンライン AI ツール。

Undress AI Tool
脱衣画像を無料で

Clothoff.io
AI衣類リムーバー

AI Hentai Generator
AIヘンタイを無料で生成します。

人気の記事

ホットツール

メモ帳++7.3.1
使いやすく無料のコードエディター

SublimeText3 中国語版
中国語版、とても使いやすい

ゼンドスタジオ 13.0.1
強力な PHP 統合開発環境

ドリームウィーバー CS6
ビジュアル Web 開発ツール

SublimeText3 Mac版
神レベルのコード編集ソフト(SublimeText3)

ホットトピック









Redisクラスターモードは、シャードを介してRedisインスタンスを複数のサーバーに展開し、スケーラビリティと可用性を向上させます。構造の手順は次のとおりです。異なるポートで奇妙なRedisインスタンスを作成します。 3つのセンチネルインスタンスを作成し、Redisインスタンスを監視し、フェールオーバーを監視します。 Sentinel構成ファイルを構成し、Redisインスタンス情報とフェールオーバー設定の監視を追加します。 Redisインスタンス構成ファイルを構成し、クラスターモードを有効にし、クラスター情報ファイルパスを指定します。各Redisインスタンスの情報を含むnodes.confファイルを作成します。クラスターを起動し、CREATEコマンドを実行してクラスターを作成し、レプリカの数を指定します。クラスターにログインしてクラスター情報コマンドを実行して、クラスターステータスを確認します。作る

Oracleデータベースをアンインストールするには:Oracleサービスを停止し、Oracleインスタンスを削除し、Oracle Homeディレクトリを削除し、レジストリキー(Windowsのみ)をクリアし、環境変数(Windowsのみ)を削除します。アンインストールする前にデータをバックアップしてください。

Redisコマンドラインツール(Redis-Cli)を使用して、次の手順を使用してRedisを管理および操作します。サーバーに接続し、アドレスとポートを指定します。コマンド名とパラメーターを使用して、コマンドをサーバーに送信します。ヘルプコマンドを使用して、特定のコマンドのヘルプ情報を表示します。 QUITコマンドを使用して、コマンドラインツールを終了します。

Debian SystemsのPostgreSQLデータベースのパフォーマンスを改善するには、ハードウェア、構成、インデックス、クエリ、その他の側面を包括的に検討する必要があります。次の戦略は、データベースのパフォーマンスを効果的に最適化できます。1。ハードウェアリソース最適化メモリ拡張:適切なメモリは、データとインデックスをキャッシュするために重要です。高速ストレージ:SSD SSDドライブを使用すると、I/Oパフォーマンスが大幅に向上する可能性があります。マルチコアプロセッサ:マルチコアプロセッサを最大限に活用して、並列クエリ処理を実装します。 2。データベースパラメーターチューニングShared_Buffers:システムメモリサイズの設定によると、システムメモリの25%〜40%に設定することをお勧めします。 work_mem:ソートとハッシュ操作のメモリを制御します。通常は64MBから256mに設定されています

Redisカウンターは、Redisキー価値ペアストレージを使用して、カウンターキーの作成、カウントの増加、カウントの減少、カウントのリセット、およびカウントの取得など、カウント操作を実装するメカニズムです。 Redisカウンターの利点には、高速速度、高い並行性、耐久性、シンプルさと使いやすさが含まれます。ユーザーアクセスカウント、リアルタイムメトリック追跡、ゲームのスコアとランキング、注文処理などのシナリオで使用できます。

Cドライブ上のOracleデータベースの隠れ場所:レジストリ:レジストリエディターを使用して「Oracle」を検索してインストールパス、サービス名などを含む情報を見つけます。ファイルシステム:Oracleファイルは、ホームディレクトリ、システムファイル、一時ファイルなどを含むCドライブの複数の場所に散らばっています。慎重なアクション:Oracleをアンインストールするときは、ファイルを削除するだけでなく、レジストリとサービスをクリーンする必要があります。公式のアンインストールツールを使用するか、専門的なヘルプを求めることをお勧めします。スペース管理:ディスクスペースを最適化して、CドライブにOracleの設置を避けます。定期的に一時的なファイルを清掃します

Debian Systemsでは、Directoryコンテンツを読み取るためにReadDirシステム呼び出しが使用されます。パフォーマンスが良くない場合は、次の最適化戦略を試してください。ディレクトリファイルの数を簡素化します。大きなディレクトリをできる限り複数の小さなディレクトリに分割し、Readdirコールごとに処理されたアイテムの数を減らします。ディレクトリコンテンツのキャッシュを有効にする:キャッシュメカニズムを構築し、定期的にキャッシュを更新するか、ディレクトリコンテンツが変更されたときに、頻繁な呼び出しをreaddirに削減します。メモリキャッシュ(memcachedやredisなど)またはローカルキャッシュ(ファイルやデータベースなど)を考慮することができます。効率的なデータ構造を採用する:ディレクトリトラバーサルを自分で実装する場合、より効率的なデータ構造(線形検索の代わりにハッシュテーブルなど)を選択してディレクトリ情報を保存およびアクセスする

公式Redisソースからソースコードパッケージをダウンロードして、コンパイルしてインストールして、最新の安定したバージョンを確保し、パーソナライズされた方法でカスタマイズできます。特定の手順は次のとおりです。ソフトウェアパッケージリストを更新してRedisディレクトリを作成するRedisソースコードパッケージをダウンロードしてソースコードパッケージを解凍し、インストール構成をコンパイルし、Redis構成を変更してRedisの起動ステータスを確認します
