1

Java のデータ ソースとして Redis を使用する必要があるため、次のコードを使用することにしました。

public class RedisService {
    private static final Jedis jedis = new Jedis("host",6400);;

    public static Device getDevice(String key) {
        // Do something use redis.
        return null;
    }

}

サーバーが自動的に Jedis (Redis API for Java) を初期化すると思いましたが、これは Jedis を使用する良い方法ですか?

4

2 に答える 2

1

Jedis の使用方法をご覧ください。

  1. org.springframework.data.redis.connection.jedis.JedisConnectionFactoryホストとポート情報を渡してシングルトン インスタンスを作成する

  2. org.springframework.data.redis.core.RedisTemplate接続ファクトリを渡してシングルトン インスタンスを作成する

  3. 上で作成した redisTemplate をサービスで使用します。Redistemplate を使用する利点は、redis( list, set, hashes )によって提供されるすべてのデータ構造にわたって操作を実行できることです。

参考までに、同じことを行うスプリングコードを次に示します。スプリングを使用している場合は使用できます。それ以外の場合は、Java コードを使用して同じものを作成できます。

<!-- Create Factory -->
<bean id="jedisFactory" class="org.springframework.data.redis.connection.jedis.JedisConnectionFactory" >
   <property name="hostName" value="localhost" />
   <property name="port" value="6370" />
   <property name="timeout" value="5000" />
</bean> 

<!-- Create Redis Template -->
<bean id="redisRemplate" class="org.springframework.data.redis.core.RedisTemplate" >
    <property name ="connectionFactory" ref="jedisFactory" />
</bean>

<!-- Your Service class -->
<bean id="serviceClass" class="RedisService" >
    <property name ="redisTemplate" ref="redisRemplate" />
</bean>

public class RedisService 
{
    private final RedisTemplate redisTemplate = /* get from  store or  inject using spring */;

    public static Device getDevice(String key) {
        // Do something use Redis.
        return null;
    }
}
于 2013-12-14T07:56:23.160 に答える
1

Santosh Joshi が説明しようとしたように、JedisFactory を使用するのが最善です。Singleton である Jedis は、ネットワークや過負荷などにより「停止」する可能性があり、Redis への新しい接続を取得するには、アプリケーションを再起動する必要があります。

これに対抗するために、Jedis Pool を定義できます。また、Spring (Santosh のソリューションが基づいている) を使用したくない場合は、Jedis で提供される JedisPool クラスを使用できます。次に、それをシングルトンとして定義し(静的ファイナルとして、またはSpring経由など)、そこからJedisインスタンスを取得できます。

これはプールであるため、一度に複数の Redis への接続を取得でき (設定可能)、切断された接続の処理をサポートします: 1 つが停止すると、新しい Jedis が作成されます。

于 2014-02-03T10:31:43.277 に答える