상황레디스는 각각의 명령어들은 원자적으로 실행이 되지만, 비즈니스로직을 작성하다 보면 여러 명령어들을 한 번에 처리해야 하는 경우가 생긴다. 이를 위해, 레디스를 루아스크립트를 이용해서 여러 명령어를 원자적으로 처리할 수 있도록 지원하고 있다.레디스에서 LuaScript 사용하기 127.0.0.1:6379> eval "return 'Hello world!'" 0"Hello world!"레디스로 스크립트를 실행하는 명령어는 EVAL 이며, 그 다임 인수로 “…”를 감싸서 루아스크립트를 작성하면 된다. 또한 그 다음 인수로는 이후 입력될 KEY 개수이고, 키 개수만큼 입력한 다음의 인수로는 인수를 입력받는다. EVAL [ , ..., , ...]정리하면 위와 같이 입력할 수 있다. 또한 위의 예제에서 ..
SpringDataRedis
문제localhost:63790> subscribe home1) "subscribe"2) "home"3) (integer) 11) "message"2) "home"3) "{\"messageId\":\"abcde\",\"sender\":\"1234\",\"message\":\"abcde\"}"1) "message"2) "home"3) "{\"messageId\":\"abcde\",\"sender\":\"1234\",\"message\":\"\xed\x95\x98\xec\x9d\xb4\"}"1) "message"2) "home"3) "{\"messageId\":\"abcde\",\"sender\":\"1234\",\"message\":\"\xea\xb0\x80\"}" 레디스로 pub/sub 테스트를 해보던 ..
@DisplayName("Hash 타입 테스트")@SpringBootTest(webEnvironment = SpringBootTest.WebEnvironment.RANDOM_PORT)public class HashTypeTest { @Autowired RedisTemplate redisTemplate; HashOperations hashOperations; @BeforeEach void setUp() { hashOperations = redisTemplate.opsForHash(); redisTemplate.getConnectionFactory().getConnection().serverCommands().flushAll(); // 매 테스트 시 초기화..
무수한 에러를 만났다. 첫 부분만 보면, org.springframework.data.redis.serializer.SerializationException: Cannot serializeCaused by: org.springframework.core.serializer.support.SerializationFailedException: Failed to serialize object using DefaultSerializerCaused by: java.lang.IllegalArgumentException: DefaultSerializer requires a Serializable payload but received an object of type [ex.ops.hash.HashClass]Failed..
package ex.ops;import static org.assertj.core.api.Assertions.assertThat;import java.util.List;import org.junit.jupiter.api.BeforeEach;import org.junit.jupiter.api.DisplayName;import org.junit.jupiter.api.Test;import org.springframework.beans.factory.annotation.Autowired;import org.springframework.boot.test.context.SpringBootTest;import org.springframework.data.redis.connection.RedisListCommands...
레디스에서 유일하게 키와 값이 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 ..