문제 ubuntu:~$ sudo docker logs redis*** FATAL CONFIG FILE ERROR (Redis 7.4.0) ***Reading the configuration file, at line 1133>>> 'maxmemory 1.5gb'argument must be a memory valuemaxmemory 설정을 소숫점으로 하니 실행이 되지 않았다. 해결 // redis.confmaxmemory 1500mb// ...MB 단위로 설정해주어 해결했다.
redis
문제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 테스트를 해보던 ..
문제도커로 레디스를 띄울 때, 기존 데이터나 설정을 유지하고 싶었다. 해결 도커로 레디스를 띄울 때, 볼륨을 통해 저장 공간을 공유하고, redis.conf 라는 레디스 설정 파일도 공유하여 레디스 컨테이너를 띄울 때 데이터를 유지하도록 해결했다. 과정 우선 EC2 Ubuntu24.04 버전에 도커를 띄운 상황에서 설명하겠다. sudo docker volume create redis-data우선 redis-data 라고 하는 볼륨을 만들어준다. $ sudo docker volume inspect redis-data[ { "CreatedAt": "2024-08-05T20:43:25+09:00", "Driver": "local", "Labels": null, ..
주제 예전에 레디스 해킹을 당해놓고서 아직도 정신 못 차리고 비밀번호 설정을 귀찮아서 안 해두다가 이번에 제대로 알아두기로 했다. 우선 도커로 레디스 설치부터 암호 설정, 암호로 접속하는 방법까지 다뤄보기로. 레디스 도커 설치sudo docker run -d \ --name redis-ex \ -p 63790:6379 \ -e REDIS_ARGS="--requirepass 1234" \ redis/redis-stack-server위는 레디스 스택을 포함하는 redis-stack-server 이미지이고 sudo docker run -d \ --name redis-ex \ -p 63790:6379 \ redis --requirepass 1234위는 그냥 레디스일 때이다. 각각 비밀번호를 ..
@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 ..
레디스를 이용하다보면 NX와 XX 명령어가 있다. set a b 명령어를 입력한다고 할 때, NX는 키가 존재하지 않을 때 set 하고, XX는 키가 존재할 때 set 한다. 근데 이게 무슨 줄임말인지 짧은 영어 지식으론 몰라서 찾아보니, NX는 Not eXist, XX는 그냥 eXist 인데 길이 맞추려고 한 것 같다.. 공식 문서에서도 무엇의 준말인지 안 알려주고 아래와 같이 나와있다. NX -- Only set the key if it does not already exist.XX -- Only set the key if it already exists. https://redis.io/docs/latest/commands/set/ SETSets the string value of a key, ..