JedisコマンドAPIの説明



Jedis Commands Api Description



この章では、主に、次の部分を含むJedisソースコードのいくつかのモジュールについて説明および分析します。

  • コマンドAPIの説明
  • クライアントと接続機能の説明

前提条件

  • Jedisで使用できるクラスターモードは2つあります。
    • JedisCluster –Redisが提供するクラスターモードに基づく
    • ShardedJedis –ConsistentHashアルゴリズムに基づくクラスターモード
  • Jedisが提供するクライアントには、クラスター化されていないJedisと上記の2つのJedisクラスターの3種類があります。

コマンドAPIの説明

ジェダイコマンドAPI



1.コマンドタイプの説明

  • Jedisには、コマンドの2つの実装があります。1。文字列型のコマンド2.バイト[]型のコマンド

2.ジェダイのクライアント継承関係

  • ジェダイ 拡張します BinaryJedis
  • JedisCluster 拡張します BinaryJedisCluster
  • ShardedJedis 拡張します BinaryShardedJedis

3.3。 分散操作のサポート (詳細は詳しく説明しません)

  • mget&mset
    • JedisClusterは、すべてのキーが同じスロットにあることを要求する必要があります(リダイレクト条件が存在します)
    • ShardedJedisはサポートしていません
  • パイプライン
    • ShardedJedisの実装時間 厳格 リクエストの順序が記録されると同時に、結果が得られたときに、 厳格 リクエスト順に入手
    • JedisClusterはパイプラインのサポートを提供しません(リダイレクトの場合)
  • トランザクション
    • JedisCluster&ShardedJedisはトランザクションをサポートしていません

クライアントと接続機能の説明

クライアントと接続

1.各コンポーネント機能の説明

  • クライアント:文字列型に基づいてコマンド要求をカプセル化します
  • BinaryClient:byte []に​​基づいてコマンドリクエストをカプセル化します
  • 接続:接続のカプセル化(接続と切断)とコマンドの送信
  • プロトコル:Redisサーバーと通信するプロトコル(植字と区切り文字など)をカプセル化します。

2.その他の指示

  • したがって、Jedis&Jedis&ShardedJedisはすべて機能のパッケージであり、実際の実装はクライアントに基づいています。
  • ソースコードは、Redisがバイナリストリームの最初のビットに応答してさまざまな状況に応答することを示しています(異なるタイプの違いを理解したい場合は、Redisサーバーのソースコードを確認する必要があります)
private static Object process(final RedisInputStream is) { final byte b = is.readByte() if (b == PLUS_BYTE) { return processStatusCodeReply(is) } else if (b == DOLLAR_BYTE) { return processBulkReply(is) } else if (b == ASTERISK_BYTE) { return processMultiBulkReply(is) } else if (b == COLON_BYTE) { return processInteger(is) } else if (b == MINUS_BYTE) { processError(is) return null } else { throw new JedisConnectionException('Unknown reply: ' + (char) b) } }