redisとjedisの違いは何ですか
redis と spring の統合は、一般に、spring-data-redis 統合と jedis 統合に分けられます。まず、この 2 つの違いを見てみましょう。参照される依存関係は異なります:
spring-data-redis で使用される依存関係は次のとおりです:
<dependency> <groupId>org.springframework.data</groupId> <artifactId>spring-data-redis</artifactId> <version>1.8.9.RELEASE</version> </dependency>
jedis で使用される依存関係は次のとおりです:
<dependency> <groupId>redis.clients</groupId> <artifactId>jedis</artifactId> <version>2.9.0</version> <type>jar</type> <scope>compile</scope> </dependency>
2。 jedis インスタンスの管理方法と redis サービスの操作方法の違い:
spring-data-redis:
org.springframework.data.redis.connection.jedis.JedisConnectionFactory を通じて管理されます。 、ファクトリ クラス管理を通じて、設定されたテンプレート Bean を通じて Redis サービスを操作します。コード セグメントは、ビジネスに関係のない多数のテンプレート フラグメント コードで埋められ、コードは冗長で保守が困難です。たとえば、次のコード:
protected RedisTemplate<Serializable, Serializable> redisTemplate; public void saveUser(User user) { redisTemplate.execute(new RedisCallback<Object>() { @Override public Object doInRedis(RedisConnection connection) throws DataAccessException { connection.set(redisTemplate.getStringSerializer().serialize("user.uid." + user.getId()), redisTemplate.getStringSerializer().serialize(user.getName())); return null; } }); } public User getUser(long id) { return redisTemplate.execute(new RedisCallback<User>() { @Override public User doInRedis(RedisConnection connection) throws DataAccessException { byte[] key = redisTemplate.getStringSerializer().serialize("user.uid." + id); if (connection.exists(key)) { byte[] value = connection.get(key); String name = redisTemplate.getStringSerializer().deserialize(value); User user = new User(); user.setName(name); user.setId(id); return user; } return null; } }); }
RedisTemplate の概要
spring は、比較のために RedisTemplate オブジェクトをカプセル化します。 Redis のさまざまな操作、すべての Redis ネイティブ API をサポートします。 RedisTemplate は、一般的に使用されるいくつかのインターフェイス メソッドの使用を提供します:
private ValueOperations
RedisTemplate では 5 つのデータ構造操作が定義されています
redisTemplate.opsForValue();//操作字符串 redisTemplate.opsForHash();//操作hash redisTemplate.opsForList();//操作list redisTemplate.opsForSet();//操作set redisTemplate.opsForZSet();//操作有序set StringRedisTemplate与RedisTemplate
両者の関係は、StringRedisTemplate が RedisTemplate を継承することです。
この 2 つの間のデータは共通ではありません。つまり、StringRedisTemplate は StringRedisTemplate のデータのみを管理でき、RedisTemplate は RedisTemplate のデータのみを管理できます。SDR によってデフォルトで採用されるシリアル化戦略は 2 つあります。1 つは String のシリアル化戦略で、もう 1 つは JDK のシリアル化戦略です。
StringRedisTemplate はデフォルトで String シリアル化戦略を使用し、保存されたキーと値はこの戦略を使用してシリアル化されて保存されます。
RedisTemplate はデフォルトで JDK シリアル化戦略を使用し、保存されたキーと値はこの戦略を使用してシリアル化され、保存されます。
jedis メソッド:
redis.clients.jedis.JedisPool を通じて管理されます。つまり、プールを通じて管理され、プール オブジェクトを通じて jedis インスタンスを取得し、その後、redis サービスを直接操作します。 jedis インスタンスを削除し、次のコード スニペットのようなビジネスに関係のない冗長コードを削除します。
private JedisPool jedisPool; public String save(String key,String val) { Jedis jedis = jedisPool.getResource(); return jedis.set(key, val); }
ファクトリ クラスからプールへの変更は、mybatis が mysql に接続する方法の変更と同等です。コードがシンプルになり、保守が容易になります。 Jedis は、Apache commons-pool2 を使用して Jedis リソース プールを管理するため、JedisPool を定義する際の非常に重要なパラメーターは、リソース プール GenericObjectPoolConfig です。使用方法は次のとおりで、リソースの管理と使用のための多くのパラメーターが含まれています。
パラメータの説明
JedisPool は、リソースが制御可能な範囲内にあることを保証し、スレッド セーフを提供しますが、合理的な GenericObjectPoolConfig 構成により、Redis を使用するアプリケーションを保護できます。その詳細の一部を次に示します。重要なパラメータについて説明し、提案:
現在の環境では、Jedis 接続がリソースであり、JedisPool が Jedis 接続を管理します。
1. リソースの設定と使用法
maxTotal: リソース プール内の接続の最大数、デフォルト値: 8 設定の提案については次のセクションを参照してください
maxIdle: リソース プールの最大接続数リソース プールで許可されるアイドル接続; デフォルト値: 8; 使用上の推奨事項: 推奨事項の設定については、次のセクションを参照してください。minIdle: リソース プールは、アイドル接続の最小数を保証します。 デフォルト値: 0; 使用上の推奨事項: 次のセクションを参照してください。推奨事項を設定するためのセクション
blockWhenExhausted: リソース プールが使い果たされたとき その後、呼び出し元が待機するかどうか。 true の場合のみ、次の maxWaitMillis が有効になります。デフォルト値: true; 使用上の推奨事項: デフォルト値を使用することをお勧めします。
maxWaitMillis: リソース プール接続が枯渇したときの、呼び出し元の最大待機時間 (ミリ秒単位) - 1: タイムアウトしないことを示します; 使用上の推奨事項: デフォルト値の使用は推奨されません
testOnBorrow: リソース プールから接続を借用するときに接続有効性検出 (ping) を実行するかどうか、無効な接続は削除されます; デフォルト値: false; 使用上の推奨事項 : 業務量が多い場合は false (ping 1 回分のコスト) に設定することをお勧めします。
testOnReturn: 接続をリソースプールに戻すときに接続有効性検出 (ping) を実行するかどうか、無効な接続は削除されます; デフォルト値: false; 使用上の推奨事項: 業務量が大きい場合は設定することをお勧めしますfalse に設定します (ping のオーバーヘッドが 1 つ増えます)。
jmxEnabled: 監視に使用できる jmx 監視を有効にするかどうか; デフォルト値: true; 使用上の推奨事項: 有効にすることをお勧めしますが、アプリケーション自体も有効にする必要があります
2. アイドルリソース監視
Idle Jedis オブジェクトの検出は、次の 4 つのパラメーターの組み合わせによって完了します。testwhileIdle はこの関数のスイッチです。
testwhileIdle: アイドル状態のリソース監視を有効にするかどうか; デフォルト値: false; 使用方法の提案: true
timeBetweenEvictionRunsMillis: アイドル状態のリソースの検出期間 (単位: ミリ秒); デフォルト値: -1: 検出しない; 使用方法の提案: 推奨settings 、期間を自分で選択します。デフォルトを使用するか、以下の JedisPoolConfig の構成を使用することもできます。
minEvictableIdleTimeMillis: リソース プール内のリソースの最小アイドル時間 (単位: ミリ秒)、この値に達すると、アイドル状態のリソースは削除される; デフォルト値: 1000 60 30 = 30 分; 使用上の提案: 自分のビジネスに応じて決定できます。ほとんどのデフォルト値で十分です。また、
numTestsPerEvictionRun の下の JeidsPoolConfig の構成を使用することも検討できます。アイドル状態のリソースを検出する際の 1 回あたりのサンプル数。デフォルト値: 3。使用上の提案: 独自のアプリケーション接続の数に応じて微調整できます。-1 に設定すると、すべての接続のアイドル状態が監視されます。
Redis の使い方チュートリアル コラムをご覧ください。
以上がredisとjedisの違いは何ですかの詳細内容です。詳細については、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コマンドを実行してクラスターを作成し、レプリカの数を指定します。クラスターにログインしてクラスター情報コマンドを実行して、クラスターステータスを確認します。作る

Redisデータをクリアする方法:Flushallコマンドを使用して、すべての重要な値をクリアします。 FlushDBコマンドを使用して、現在選択されているデータベースのキー値をクリアします。 [選択]を使用してデータベースを切り替え、FlushDBを使用して複数のデータベースをクリアします。 DELコマンドを使用して、特定のキーを削除します。 Redis-CLIツールを使用してデータをクリアします。

Redis指令を使用するには、次の手順が必要です。Redisクライアントを開きます。コマンド(動詞キー値)を入力します。必要なパラメーターを提供します(指示ごとに異なります)。 Enterを押してコマンドを実行します。 Redisは、操作の結果を示す応答を返します(通常はOKまたは-ERR)。

Redisを使用して操作をロックするには、setnxコマンドを介してロックを取得し、有効期限を設定するために有効期限コマンドを使用する必要があります。特定の手順は次のとおりです。(1)SETNXコマンドを使用して、キー価値ペアを設定しようとします。 (2)expireコマンドを使用して、ロックの有効期限を設定します。 (3)Delコマンドを使用して、ロックが不要になったときにロックを削除します。

Redisのキューを読むには、キュー名を取得し、LPOPコマンドを使用して要素を読み、空のキューを処理する必要があります。特定の手順は次のとおりです。キュー名を取得します:「キュー:キュー」などの「キュー:」のプレフィックスで名前を付けます。 LPOPコマンドを使用します。キューのヘッドから要素を排出し、LPOP Queue:My-Queueなどの値を返します。空のキューの処理:キューが空の場合、LPOPはnilを返し、要素を読む前にキューが存在するかどうかを確認できます。

Redisは、単一のスレッドアーキテクチャを使用して、高性能、シンプルさ、一貫性を提供します。 I/Oマルチプレックス、イベントループ、ノンブロッキングI/O、共有メモリを使用して同時性を向上させますが、並行性の制限、単一の障害、および書き込み集約型のワークロードには適していません。

Redisはハッシュテーブルを使用してデータを保存し、文字列、リスト、ハッシュテーブル、コレクション、注文コレクションなどのデータ構造をサポートします。 Redisは、スナップショット(RDB)を介してデータを維持し、書き込み専用(AOF)メカニズムを追加します。 Redisは、マスタースレーブレプリケーションを使用して、データの可用性を向上させます。 Redisは、シングルスレッドイベントループを使用して接続とコマンドを処理して、データの原子性と一貫性を確保します。 Redisは、キーの有効期限を設定し、怠zyな削除メカニズムを使用して有効期限キーを削除します。

Redisソースコードを理解する最良の方法は、段階的に進むことです。Redisの基本に精通してください。開始点として特定のモジュールまたは機能を選択します。モジュールまたは機能のエントリポイントから始めて、行ごとにコードを表示します。関数コールチェーンを介してコードを表示します。 Redisが使用する基礎となるデータ構造に精通してください。 Redisが使用するアルゴリズムを特定します。
