Redis
 sql >> Datenbank >  >> NoSQL >> Redis

So implementieren Sie Redis Multi-Exec mithilfe von Spring-data-Redis

Der Grund für die Ausnahme ist wahrscheinlich, dass die Spring-Template-Implementierung nicht dieselbe Verbindung für .multi() wiederverwendet und .exec() . Sie können versuchen, execute() zu verwenden über einen Rückruf:

private RedisTemplate template = ...;

template.execute(

  new RedisCallback() {

    @Override
    public Object doInRedis(RedisConnection connection)
      throws DataAccessException {

      connection.multi();

      //do whatever you need, like deleting and repopulating some keys

      connection.expire(CHANNEL_KEY.getBytes(), EXPIRE_SECS);
      connection.exec();
      return null;
    }

  }

);