springboot が redis を統合してパーティションを変更する方法
springboot は redis を統合してパーティションを変更する
問題の原因
最近、springboot を使用して redis を統合し、システムの動的データ ソースがさまざまなデータベースに接続し、使用される redis をキャッシュします。次に、異なるデータベースのデータを Redis の異なるパーティション、つまり異なるライブラリにキャッシュする必要があります。
古いバージョンの解決策
ここでいう古いバージョンとは 2.0 より前のバージョンを指します。私が使用した 1.5.9 は問題ありません。
Redis 構成クラスはオンラインにたくさんあるため、ここには掲載しません。
1. JedisConnectionFactory を使用して
@Autowired JedisConnectionFactory jedisConnectionFactory; jedisConnectionFactory.setDatabase(database);
2. redisTemplate を使用して
redisTemplate.getConnectionFactory().getConnection().select(database);
を変更します。上記の 2 つの方法は、 require redis Bean は構成クラスに特別に追加されます
新しいバージョンのソリューション
ここでの新しいバージョンは 2.0 以降のバージョンを指します。私は 2.0.3 を使用しています
次のRedis 構成クラス Bean に追加する必要があります
@Bean RedisStandaloneConfiguration redisStandaloneConfiguration() { RedisStandaloneConfiguration redisStandaloneConfiguration = new RedisStandaloneConfiguration(); redisStandaloneConfiguration.setHostName("localhost"); redisStandaloneConfiguration.setPort(6379); redisStandaloneConfiguration.setDatabase(0); return redisStandaloneConfiguration; } @Bean JedisConnectionFactory jedisConnectionFactory(RedisStandaloneConfiguration redisStandaloneConfiguration) { //redisStandaloneConfiguration.setPassword(RedisPassword.of(password)); JedisClientConfiguration.JedisClientConfigurationBuilder jedisClientConfiguration = JedisClientConfiguration.builder(); jedisClientConfiguration.connectTimeout(Duration.ofMillis(0));// connection timeout JedisConnectionFactory factory = new JedisConnectionFactory(redisStandaloneConfiguration, jedisClientConfiguration.build()); return factory; }
RedisStandaloneConfiguration を使用して変更します
@Autowired RedisStandaloneConfiguration redisStandaloneConfiguration; redisStandaloneConfiguration.setDatabase(database);
redis パーティション
データが複数の Redis インスタンスに分散される方法
パーティショニングとは、各インスタンスにデータの一部のみが含まれるように、データを複数の Redis インスタンスに分散することです。
パーティショニングが役立つ理由
Redis パーティショニングには 2 つの主な目的があります:
これにより、より大きなデータベースが多数のコンピューターの合計メモリを使用できるようになります。パーティショニングを行わないと、メモリは 1 台のコンピュータに制限されます。
コンピューティング能力を複数のコアと複数のコンピューターに拡張し、ネットワーク帯域幅を複数のコンピューターとネットワーク アダプターに拡張することができます。
4 つの Redis インスタンス (R0、R1、R2、R3) があり、ユーザーを表す多くのキー (user:1、user:2、... など) があるとします。鍵を保管する方法はたくさんあります。
最も簡単な方法は、範囲によってパーティション化することです。つまり、オブジェクトのマッピング範囲に従って、指定された Redis インスタンスにデータを割り当てます。例えば、R0には0~10000、R1には10001~20000というIDを割り当てると規定します。この方法は可能ですが、欠点の 1 つは、このマッピング関係を維持するためにテーブルが必要であることです。このテーブルは管理する必要があり、各キーにはそのようなテーブルが 1 つ必要であるため、Redis での範囲パーティション分割は他のパーティション分割方法よりもはるかに効率が低いため、一般に嫌われています。
レンジ パーティショニングに加えて、ハッシュ パーティショニングという方法もあります。
ステップ 1、キーを取得し、ハッシュ関数を適用してそれを数値に変換します。たとえば、キーが foobar でハッシュ関数が crc32 の場合、 crc32(foobar) は 93024922 を出力します。
ステップ 2. この数値をモジュロ演算 (modulo) を使用して 0 から 3 までの直接数値に変換し、この数値を 4 つの Redis インスタンスの 1 つにマッピングできるようにします。たとえば、93024922 % 4 = 2 であるため、foobar は R2 インスタンスに保存される必要があります。
(追記: まず、キーに対してハッシュ演算を実行して数値を取得し、この数値の剰余を取得して、最終データをどのインスタンスに保存するかを決定します)
パーティショニングの方法にもたくさんの種類がありますが、上記の 2 つの例を通して理解できるはずです。ハッシュ パーティショニングの高度な形式はコンシステント ハッシュと呼ばれ、複数の Redis クライアントとブローカーによって実装されます。
異なるパーティションの実装
クライアント パーティション: 指定されたキーに対して、クライアントは読み取りおよび書き込み用に正しいノードを直接選択します。多くの Redis クライアントはクライアント側のパーティショニングを実装しています。
エージェント パーティション: クライアントはプロキシにリクエストを送信し、プロキシは Redis と通信します。プロキシは設定に基づいて正しい Redis インスタンスを選択します。
クエリ ルーティング: クエリを任意の Redis インスタンスに送信でき、インスタンスはクエリを正しいサーバーにリダイレクトします。
(追記: 特定のキーに対して、パーティショニングの仕事は正しい Redis インスタンスを選択することであり、この選択プロセスはクライアント、エージェント、または Redis インスタンスによって実行できます)
の欠点パーティショニング
1. 複数のキーを含む操作は通常サポートされません。 2 つの異なる Redis インスタンスにマップされたキーの場合、それらに対して挿入操作を実行することはできません。
2. Redis トランザクションは、複数のキーを含む操作には使用できません。
3. パーティションの粒度はキーであるため、単一の非常に巨大なキー (たとえば、非常に大きなキー) を変換することは不可能です。
#4. パーティションを使用すると、データ処理がより複雑になります。たとえば、複数の RDB/AOF ファイルを処理する必要があります。データをバックアップするには、永続性を集約する必要があります。複数のインスタンスおよびホストからのドキュメント。 5. 容量(スペース)の追加と削除はさらに複雑になります。たとえば、Redis Cluster は実行時にノードを追加および削除する透過的なデータ リバランスをサポートしていますが、クライアント パーティションやブローカーなどの他のシステムはこの機能をサポートしていません。ただし、これに関しては、プリシャーディングと呼ばれる手法が役に立ちます。 データ ストレージまたはキャッシュ? Redis をデータ ストアとして使用する場合、特定のキーは常に同じ Redis インスタンスにマップされる必要があります。キャッシュとして使用する場合、特定のノードが使用できなくなっても大きな問題はありません。 特定のキーの優先ノードが利用できない場合、コンシステント ハッシュの実装は通常、他のノードに切り替えることができます。同様に、新しいノードが追加されると、新しいキーの一部が新しいノードに保存され始めます。Redis をキャッシュとして使用する場合は、一貫したハッシュを使用して簡単に拡張できます。
Redis をストレージとして使用する場合、固定のキーとノードのマッピングが使用されるため、ノードの数は固定する必要があり、変更することはできません。 Redis Cluster は、ノード間でキーを再バランスする必要がある場合に有効なシステムです。
以上がspringboot が 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)

ホットトピック











1. [スタート]メニューを起動し、[cmd]と入力し、[コマンドプロンプト]を右クリックし、[管理者として実行]を選択します。 2. 次のコマンドを順番に入力します (注意してコピーして貼り付けてください): SCconfigwuauservstart=auto、Enter キーを押す SCconfigbitsstart=auto、Enter キーを押す SCconfigcryptsvcstart=auto、Enter キーを押す SCconfigtrustedinstallerstart=auto、Enter キーを押す SCconfigwuauservtype=share、Enter キーを押す netstopwuauserv 、enter netstopcryptS を押す

PHP 関数のボトルネックはパフォーマンスの低下につながります。これは、ボトルネック関数を特定し、パフォーマンス分析ツールを使用するという手順で解決できます。結果をキャッシュして再計算を減らします。タスクを並列処理して実行効率を向上させます。文字列の連結を最適化し、代わりに組み込み関数を使用します。カスタム関数の代わりに組み込み関数を使用します。

GolangAPI のキャッシュ戦略により、パフォーマンスが向上し、サーバーの負荷が軽減されます。一般的に使用される戦略は、LRU、LFU、FIFO、TTL です。最適化手法には、適切なキャッシュ ストレージの選択、階層型キャッシュ、無効化管理、監視とチューニングが含まれます。実際には、データベースからユーザー情報を取得する API を最適化するために LRU キャッシュが使用されます。それ以外の場合は、データベースからデータを取得した後にキャッシュを更新できます。

PHP 開発では、キャッシュ メカニズムにより、頻繁にアクセスされるデータがメモリまたはディスクに一時的に保存され、データベース アクセスの数が削減され、パフォーマンスが向上します。キャッシュの種類には主にメモリ、ファイル、データベース キャッシュが含まれます。キャッシュは、組み込み関数またはサードパーティのライブラリ (cache_get() や Memcache など) を使用して PHP に実装できます。一般的な実用的なアプリケーションには、データベース クエリ結果をキャッシュしてクエリ パフォーマンスを最適化したり、ページ出力をキャッシュしてレンダリングを高速化したりすることが含まれます。キャッシュ メカニズムにより、Web サイトの応答速度が効果的に向上し、ユーザー エクスペリエンスが向上し、サーバーの負荷が軽減されます。

Redis キャッシュを使用すると、PHP 配列ページングのパフォーマンスを大幅に最適化できます。これは、次の手順で実現できます。 Redis クライアントをインストールします。 Redisサーバーに接続します。キャッシュ データを作成し、データの各ページをキー「page:{page_number}」を持つ Redis ハッシュに保存します。キャッシュからデータを取得し、大規模な配列での高コストの操作を回避します。

まず、システム言語を簡体字中国語表示に設定して再起動する必要があります。もちろん、以前に表示言語を簡体字中国語に変更したことがある場合は、この手順をスキップできます。次に、レジストリ regedit.exe の操作を開始し、左側のナビゲーション バーまたは上部のアドレス バーで HKEY_LOCAL_MACHINESYSTEMCurrentControlSetControlNlsLanguage に直接移動し、InstallLanguage キーの値と Default キーの値を 0804 に変更します (英語に変更する場合)。まずシステムの表示言語を en-us に設定し、システムを再起動してから、すべてを 0409 に変更します) この時点でシステムを再起動する必要があります。

はい、Navicat は Redis に接続できます。これにより、ユーザーはキーの管理、値の表示、コマンドの実行、アクティビティの監視、問題の診断が可能になります。 Redis に接続するには、Navicat で「Redis」接続タイプを選択し、サーバーの詳細を入力します。

1. まず、デスクトップ上の[このPC]アイコンをダブルクリックして開きます。 2. 次に、マウスの左ボタンをダブルクリックして [C ドライブ] に入ります。システム ファイルは通常、自動的に C ドライブに保存されます。 3. 次に、C ドライブで [windows] フォルダーを見つけ、ダブルクリックしてに入ります。 4. [windows]フォルダーに入ったら、[SoftwareDistribution]フォルダーを見つけます。 5. 入力後、win11 のダウンロード ファイルとアップデート ファイルがすべて含まれている [ダウンロード] フォルダーを見つけます。 6. これらのファイルを削除したい場合は、このフォルダー内で直接削除してください。
