検索
ホームページデータベースRedisredisとjedisの違いは何ですか

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 valueOps; private ListOperations listOps;private SetOperations setOps; private ZSetOperations zSetOps;

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 の使い方チュートリアル コラムをご覧ください。

以上がredisとjedisの違いは何ですかの詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
Redisで認証と承認を実装するにはどうすればよいですか?Redisで認証と承認を実装するにはどうすればよいですか?Mar 17, 2025 pm 06:57 PM

この記事では、Redisでの認証と承認の実装について説明し、ACLSを使用し、Redisを保護するためのベストプラクティスの有効化に焦点を当てています。また、Redisセキュリティを強化するためのユーザー許可とツールの管理をカバーしています。

Redisクラスターでシャードキーを選択するにはどうすればよいですか?Redisクラスターでシャードキーを選択するにはどうすればよいですか?Mar 17, 2025 pm 06:55 PM

この記事では、Redisクラスターでシャードキーを選択し、パフォーマンス、スケーラビリティ、データ分布への影響を強調しています。重要な問題には、データ分布の確保、アクセスパターンの調整、一般的な間違いの回避lが含まれます。

Redisでキャッシュ無効化戦略を実装するにはどうすればよいですか?Redisでキャッシュ無効化戦略を実装するにはどうすればよいですか?Mar 17, 2025 pm 06:46 PM

この記事では、時間ベースの有効期限、イベント駆動型の方法、バージョン化など、Redisでキャッシュの無効化を実装および管理するための戦略について説明します。また、キャッシュの有効期限と監視とオートマットのツールのベストプラクティスもカバーしています

ジョブキューとバックグラウンド処理にRedisを使用するにはどうすればよいですか?ジョブキューとバックグラウンド処理にRedisを使用するにはどうすればよいですか?Mar 17, 2025 pm 06:51 PM

この記事では、ジョブキューとバックグラウンド処理にRedisを使用し、セットアップ、ジョブの定義、実行の詳細を使用しています。アトミックオペレーションやジョブの優先順位付けなどのベストプラクティスをカバーし、Redisが処理効率を高める方法を説明します。

Pub/SubメッセージングにRedisを使用するにはどうすればよいですか?Pub/SubメッセージングにRedisを使用するにはどうすればよいですか?Mar 17, 2025 pm 06:48 PM

この記事では、Pub/サブメッセージング、セットアップ、ベストプラクティスのカバー、メッセージの信頼性の確保、監視のパフォーマンスにRedisを使用する方法について説明します。

Redisクラスターのパフォーマンスを監視するにはどうすればよいですか?Redisクラスターのパフォーマンスを監視するにはどうすればよいですか?Mar 17, 2025 pm 06:56 PM

記事では、Redis CLI、Redis Insight、DatadogやPrometheusなどのサードパーティソリューションなどのツールを使用して、Redisクラスターのパフォーマンスと健康を監視しています。

Webアプリケーションのセッション管理にRedisを使用するにはどうすればよいですか?Webアプリケーションのセッション管理にRedisを使用するにはどうすればよいですか?Mar 17, 2025 pm 06:47 PM

この記事では、Webアプリケーションでのセッション管理にRedisを使用すること、セットアップの詳細、スケーラビリティやパフォーマンスなどの利点、セキュリティ対策について説明します。

共通の脆弱性に対してRedisを保護するにはどうすればよいですか?共通の脆弱性に対してRedisを保護するにはどうすればよいですか?Mar 17, 2025 pm 06:57 PM

記事では、強力なパスワード、ネットワークバインディング、コマンドの無効化、認証、暗号化、更新、監視に焦点を当てた脆弱性に対するRedisの保護について説明します。

See all articles

ホットAIツール

Undresser.AI Undress

Undresser.AI Undress

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

AI Clothes Remover

AI Clothes Remover

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

Undress AI Tool

Undress AI Tool

脱衣画像を無料で

Clothoff.io

Clothoff.io

AI衣類リムーバー

AI Hentai Generator

AI Hentai Generator

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

ホットツール

SublimeText3 Linux 新バージョン

SublimeText3 Linux 新バージョン

SublimeText3 Linux 最新バージョン

AtomエディタMac版ダウンロード

AtomエディタMac版ダウンロード

最も人気のあるオープンソースエディター

ZendStudio 13.5.1 Mac

ZendStudio 13.5.1 Mac

強力な PHP 統合開発環境

ゼンドスタジオ 13.0.1

ゼンドスタジオ 13.0.1

強力な PHP 統合開発環境

VSCode Windows 64 ビットのダウンロード

VSCode Windows 64 ビットのダウンロード

Microsoft によって発売された無料で強力な IDE エディター