반응형
레디스에서 유일하게 키와 값이 1:1로 매칭되는 string 타입에 대한 몇몇 명령어에 대해서, Spring Data Redis 에서 제공하는 메서드와 이름이 달라서 이에 대해 테스트 코드를 작성해보았다.
set, get 은 그대로,
set NX 은 setIfAbsent,
set XX 은 setIfPresent,
incr 은 increment,
mset, mget 은 multiSet, multiGet
으로 매칭이 된다.
@DisplayName("String 타입 테스트")
@SpringBootTest(webEnvironment = SpringBootTest.WebEnvironment.RANDOM_PORT)
public class StringTypeTest {
@Autowired
private StringRedisTemplate stringRedisTemplate;
@Autowired
private RedisTemplate<String, Integer> redisTemplate;
private ValueOperations<String, String> valueOperations;
private ValueOperations<String, Integer> intValueOperations;
@BeforeEach
void setUp() {
valueOperations = stringRedisTemplate.opsForValue();
intValueOperations = redisTemplate.opsForValue();
stringRedisTemplate.getConnectionFactory().getConnection().serverCommands().flushAll(); // 매 테스트 시 초기화
}
@DisplayName("set, get : 테스트")
@Test
void test_set_get() {
// when
valueOperations.set("a", "b");
String value = valueOperations.get("a");
// then
assertThat(value).isEqualTo("b");
}
@DisplayName("set nx : 키가 존재하지 않으면 갱신 테스트")
@Test
void test_set_nx() {
// given
valueOperations.set("a", "b");
// when
valueOperations.setIfAbsent("a", "bb"); // set NX
String value = valueOperations.get("a");
//then
assertThat(value).isEqualTo("b");
}
@DisplayName("set xx : 키가 존재하면 갱신 테스트")
@Test
void test_set_xx() {
// given
valueOperations.set("a", "b");
// when
valueOperations.setIfPresent("a", "bb"); // set XX
String value = valueOperations.get("a");
// then
assertThat(value).isEqualTo("bb");
}
@DisplayName("mset, mget : 다중 스트링 테스트")
@Test
void test_mset_mget() {
// given
Map<String, String> multiString = Map.of(
"a", "b",
"aa", "bb"
);
// when
valueOperations.multiSet(multiString);
List<String> multiValue = valueOperations.multiGet(multiString.keySet());
// then
assertThat(multiValue).contains("b", "bb");
}
@DisplayName("incr : 아토믹 숫자 증가 테스트")
@Test
void test_incr() {
// given
intValueOperations.set("a", 1);
// when
Long value = intValueOperations.increment("a");
// then
assertThat(value).isEqualTo(2);
}
}
반응형
'지식 한 조각 🍰' 카테고리의 다른 글
Spring Data Redis : Hash 타입 명령어 (0) | 2024.06.13 |
---|---|
Spring Data Redis : List 타입 명령어 (2) | 2024.06.10 |
Redis NX XX (0) | 2024.06.08 |
LLM (2) | 2024.06.07 |
SQL 문법 정리 (0) | 2024.06.06 |