Redis 트랜잭션 특징


상황

private final RedisTemplate<String, String> redisStringTemplate;
private final RedisTemplate<String, MeetingReminderMessage> redisReminderTemplate;

접근 방법

1. 각 Template에 트랜잭션 지원 옵션 추가

setEnableTransactionSupport(true); //템플릿 설정 추가
tprivate final RedisTemplate<String, String> redisStringTemplate;
private final RedisTemplate<String, MeetingReminderMessage> redisReminderTemplate;

//메세지 저장 트랜잭션
public void saveMessage(String uniqueKey, long meetingTime, ReminderMessage message) {
	// 커넥션 바인딩 시작
	redisStringTemplate.multi();

	redisStringTemplate.opsForZSet().add(ZSET_KEY, uniqueKey, (double)meetingTime);
	redisReminderTemplate.opsForHash().put(HASH_KEY, uniqueKey, message);

	// 모든 명령 큐잉 후 실행
	redisStringTemplate.exec();
}

문제점