sql >> Base de Datos >  >> NoSQL >> Redis

Cómo implementar Redis Multi-Exec usando Spring-data-Redis

El motivo de la excepción es probablemente que la implementación de la plantilla de Spring no reutiliza la misma conexión para .multi() y .exec() . Puedes intentar usar execute() a través de una devolución de llamada:

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;
    }

  }

);