Redis
 sql >> Base de données >  >> NoSQL >> Redis

Comment implémenter Redis Multi-Exec en utilisant Spring-data-Redis

La raison de l'exception est probablement que l'implémentation du modèle Spring ne réutilise pas la même connexion pour .multi() et .exec() . Vous pouvez essayer d'utiliser execute() via un rappel :

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

  }

);