목록💡 백엔드/Redis (9)
코딩마을방범대
Redis를 이용해 String을 저장하는 방법은 매우 간단하다. 그러나 객체를 저장하기 위해선 Json을 이용해 저장 후 convert가 필요하다. ※ conf 파일에 아래와 같이 Json 타입으로 설정 시 자동으로 Json String으로 저장된다. redisTemplate.setValueSerializer(new Jackson2JsonRedisSerializer(Object.class)); set 방식으로 저장해서 valueOperations.members(키값) 명령어를 통해 가져왔을 때 안의 따옴표들이 전부 사라졌다. 이 때문에 Json to Java Object 로 변환이 불가능했고, 이리저리 테스트해보다가 해결 방법을 발견했다. 아래와 같이 Set에 담아서 가져온 뒤 Mapper를 통해 co..
Redis 서버를 구축해 Java를 통해 데이터를 다루는 코드를 짰는데 분명 테스트 서버에서 구동시킬 땐 문제 없이 데이터 CRUD가 작동됐는데 개발 서버에서는 NullPointException이 발생하였다. Connection이 제대로 이뤄지지 않아 비워있다는 것으로 예상하여 아래 테스트를 실행해보았다. Java Socket wasServer = new Socket ("IP주소", 포트번호); boolean result = wasServer.isConnected(); Ubuntu ※ Conncection에 실패할 경우 Trying에 머물러있다 (timeout을 설정해주었다면 종료됨) $ telnet [ip주소] [포트번호] Trying [ip주소]... Connected to [ip주소]. 아니나다를까..
Redis는 In-memory DB 임에도 불구하고, 메모리 데이터를 disk에 저장할 수 있는 특징이 있다 그래서 서버가 꺼진 후 restart되더라도, disk에 저장해놓은 데이타를 다시 읽어서 메모리에 로딩하기 때문에 데이타 유실되지 않는다. 이런 Persistent(영속성) 기능은 휘발성 메모리 DB를 데이터 스토어로서 활용한다는 장점이 있지만, 이 기능 때문에 장애의 주 원인이 되기도 한다. redis에서는 데이타를 저장하는 방법이 RDB (snapshotting) 방식과 AOF (Append only file) 두가지가 있다. RDB 방식은 특정한 각격마다 메모리에 있는 레디스 데이터 전체를 디스크에 쓰는 것이다. (백업에 용이) AOF 방식은 명령이 실행될때 마다 데이터를 파일에 기록하여 데..
Redis - (1) 기본 개념 Redis - (2) 우분투 서버에 Redis 세팅하기 Redis - (4) Java에서 Redis 사용하기(Jedis) Redis - (5) Java에서 Redis 사용하기(Lettuce) 5에서는 RedisTemplate를 통해 직접 Redis에 접근했다면 이번엔 RedisTemplate를 통해 RedisRepository에서 접근해서 사용하는 방식이다. build.gradle implementation('org.springframework.boot:spring-boot-starter-data-redis') application.yml !! 트랜잭션을 사용하지 않는 경우 pool 옵션은 줄 필요 없음 !! spring: redis: # 레디스 서버 주소 (local일 ..
Redis - (1) 기본 개념 Redis - (2) 우분투 서버에 Redis 세팅하기 Redis - (4) Java에서 Redis 사용하기(Jedis) Jedis보단 Lettuce가 선호되는 추세이니 Lettuce를 사용하도록 하자! 다만 Jedis보다 사용이 조금 어렵다는 단점이 있다. 레터스는 레디스 서버와 단일 커넥션으로 멀티 스레드 요청에 대해 처리가 가능하다. ( 내부적으로 논-블럭킹 + 비동기로 구현되어 있으며 스레드 세이프하다. ) 레디스 서버가 어차피 싱글 스레드 기반이기 때문에 어차피 다중 커넥션이 단일 커넥션에 비해 성능상 이점이 있는 것도 아니다. 따라서 레터스를 사용한다면 굳이 커넥션 풀을 만들지 않고 단일 커넥션을 공유하도록 하는 것이 좋다. 그럼에도 불구하고 커넥션을 공유하면 ..
Redis - (1) 기본 개념 Redis - (2) 우분투 서버에 Redis 세팅하기 Java 의 Redis Client 는 크게 두 가지가 있다. 원래 Jedis 를 많이 사용했으나 여러 가지 단점 (멀티 쓰레드 불안정, Pool 한계 등등..) 과 Lettuce 의 장점 (Netty 기반이라 비동기 지원 가능) 때문에 Lettuce 로 추세가 넘어가고 있었으며, 그러다 결국 Spring Boot 2.0 부터 Jedis 가 기본 클라이언트에서 deprecated 되고 Lettuce 가 탑재되었다. build.gradle Jedis 의존성을 추가해준다 dependencies { ... // https://mvnrepository.com/artifact/redis.clients/jedis implemen..
Redis - (1) 기본 개념 Redis - (2) 우분투 서버에 Redis 세팅하기 레디스 CLI 접근(내부접속, 외부접속) 내부접속은 레디스가 설치된 서버에서 직접 접속하는 방법 apt로 redis-server 를 설치하면서 CLI 관련 패키지도 함께 설치 되기 때문에 접근이 쉬움 $ redis-cli 외부접속은 접속하고자 하는 레디스 서버 및 프로세스 포트에 대한 추가적인 입력이 필요 # 외부접속(비밀번호 X) $ redis-cli -h [접근 서버 IP] -p [레디스 실행 프로세스 포트] # 외부접속(비밀번호 O) $ redis-cli -h [접근 서버 IP] -p [레디스 실행 프로세스 포트] -a [비밀번호] 데이터 조회 키(Key) 확인 방법 모든 키(Key) 리스트 출력 > keys *..
Redis - (1) 기본 개념 1. 패키지 관리 툴(apt) 최신화 작업 $ sudo apt-get update 2. Redis 설치 $ sudo apt-get install redis-server 설치된 버전 확인 $ redis-server --version 3. redis.conf 파일 수정 $ sudo vi /etc/redis/redis.conf ※ vi 편집기에서 문자열 검색하는 방법 : 를 눌러 명령어 모드 진입 /문자열 : 현재 커서 아래 방향으로 탐색 ?문자열 : 현재 커서 윗 방향으로 탐색 ( ^문자열 : 해당 문자열로 시작하는 텍스트를 찾을 때 ) 계속 탐색은 n, 이전 탐색은 N 내용 # 최대 메모리 사양 # -> 최대 사용 메모리 사양을 256mb로 설정한다. 단위는 mb나 g 등 ..