例外の理由は、おそらくSpringテンプレートの実装が.multi()
に同じ接続を再利用しないためです。 および.exec()
。 execute()
の使用を試みることができます コールバック経由:
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;
}
}
);