코딩마을방범대
Redis를 구축하며 발생한 오류들 본문
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주소].
아니나다를까 Connection 실패였다!
우분투 터미널에서 redis-server 명령어를 실행하면 아래와 같이 출력되는데,
나는 저게 이 서버에 설정돼있는 Redis 설정을 그대로 가져오는 건 줄 알았는데
아마 백그라운드로 실행하는 service 명령어의 redis-server 실행과는 별도인 것 같다.
왜냐하면 나는 방화벽 문제 때문에 테스트를 위해 port를 8080으로 변경하였고,
저기서는 기본값인 6379로 출력되었기 때문이다.
--port 로 포트값을 주면 그 포트대로 실행된다고 하는데,
나는 이미 8080으로 포트를 변경하여 service를 통해 redis를 실행하였으니 8080으로 변경해서 실행하면 충돌 오류가 뜨는게 맞다.
redis-server 자체가 무슨 역할을 하는지는 잘 모르겠다ㅠ
$ redis-server --port 8080
혹시 포트 오류 둘째치고 백그라운드가 아닌 포그라운드(포워드그라운드) 실행인가 싶어
redis-server 를 실행해서 나가지 않고 그대로 둔 상태에서 열려있는 redis 프로세스를 검색해보았는데,
service를 통해 실행하던 redis만 확인되었다.
$ sudo ss -4 -tlnp | grep redis
redis-server는 신경쓰지 않고 기존대로 conf 파일 수정하고 service로 실행시키는게 제일 무난한 것 같다...
막혀있는 포트는 방화벽 허용을 통해 풀어줬다.
$ sudo ufw allow from any to any port 6379 proto tcp
'💡 백엔드 > Redis' 카테고리의 다른 글
Redis에 객체를 저장하는 방법 (0) | 2023.07.04 |
---|---|
Redis - (7) Redis 데이터 다루기 (RDB/AOF) (0) | 2023.06.20 |
Redis - (6) Java에서 Redis 사용하기(Repository) (0) | 2023.06.19 |
Redis - (5) Java에서 Redis 사용하기(Lettuce) (0) | 2023.06.19 |
Redis - (4) Java에서 Redis 사용하기(Jedis) (0) | 2023.06.19 |