5

要求 (書き込み/読み取り) ごとに RedisTemplate をオンデマンドで作成する必要があります。connectionfactory は JedisConnectionFactory です。

JedisConnectionFactory factory=new 
    JedisConnectionFactory(RedisSentinelConfiguration,JedisPoolConfig);

一度、RedisTemplate.opsForHash/opsForValue を使用して、テンプレートを安全に破棄する方法を実行し、接続が JedisPool に返されるようにします。

今のところ、私はこれを

template.getConnectionFactory().getConnection().close();

これは正しい方法ですか?

4

1 に答える 1

5

RedisTemplateから接続をフェッチし、指定RedisConnectionFactoryされた構成に応じて、接続がプールに返されるか、コマンドの実行後に適切に閉じられることをアサートします。(参照: JedisConnection#close() )

手動でgetConnectionFactory().getConnection().close();接続を閉じると、新しい接続が取得され、すぐに閉じられます。

したがって、もう少し制御したい場合は、接続をフェッチし、いくつかの操作を実行して、後で閉じることができます

RedisConnection connection = template.getConnectionFactory().getConnection();
connection... // call ops as required
connection.close();

またはRedisTemplate.execute(...)と一緒に使用するとRedisCallback、接続の取得と返却について心配する必要がなくなります。

template.execute(new RedisCallback<Void>() {

  @Override
  public Void doInRedis(RedisConnection connection) throws DataAccessException {
    connection... // call ops as required
    return null;
  }});
于 2015-03-03T07:21:02.620 に答える