인프런 커뮤니티 질문&답변

Truestar님의 프로필 이미지
Truestar

작성한 질문수

실전! Redis 활용

BloomFilter

외부 클라이언트에서 도커 redis-stack-server 접속 시, 블룸필터 명령어가 없다고 합니다.

해결된 질문

작성

·

452

·

수정됨

0

도커 컨테이너 > 레디스 서버 내에서 redis-cli 실행 후, BF.MADD 명령어를 실행하면, 아래와 같이 잘 실행됩니다.

그러나, 외부(JDBC) 커낵션을 통한 접속에서는

이처럼 명령 실행을 전혀 할 수가 없습니다.

(BF.XX 명령어를 제외하고, 이전 강의내용의 명령어는 잘 실행됩니다)

이걸 해결해보려 시도해본 것은 아래와 같습니다.

docker-compose.yml 볼륨마운팅 설정
/redis-stack.conf 파일 내용의 변경 부분:

  • bind 0.0.0.0

  • protected-mode no

docker-compose.yml 내용입니다.

version: "3.8"

services:
  redis:
    image: redis/redis-stack-server
    hostname: redis
    container_name: redis-stack-server
    command: /entrypoint.sh
    ports:
      - "6379:6379"
    volumes:
      - ../redis/conf/7.2.conf:/redis-stack.conf
    restart: always
    networks:
      - redis-network

networks:
  redis-network:
    driver: bridge

외부접속에서 명령 실행을 막는 기능을 어떻게 해제할 수 있을까요?

답변 1

1

신동현님의 프로필 이미지
신동현
지식공유자

안녕하세요. 저도 JDBC로 Redis BloomFilter를 사용해본 경험이 없어서 정확한 답변을 드리기는 힘들 것 같은데요. 다만 Redis에서 외부 명령 실행을 막는다기 보다는 JDBC에서 BloomFilter에 대한 지원을 하지 않는 것으로 추측됩니다. BloomFilter는 Redis에서 기본적으로 지원하는 데이터 타입이 아니기 때문에 JDBC에서 사용하기 위해서는 별도의 드라이버를 설치하거나 설정을 변경해야 할 것 같습니다.

Truestar님의 프로필 이미지
Truestar
질문자

답변 감사드립니다. 답변해주신 말씀에 이어지는 궁금증이 있는데요,

..BloomFilter는 Redis에서 기본적으로 지원하는 데이터 타입이 아니기 때문..

이 부분에 있어서, Redis 측의 지원이 없다면 Java 기반 Spring-boot 등의 웹서버 어플리케이션에서 Redis 를 사용한다면 블룸필터를 사용할 수 없는 것으로 봐야 될까요?

신동현님의 프로필 이미지
신동현
지식공유자

아니요. Redis의 지원(또는 설정 변경)이 필요한 것이 아니라 반대로 JDBC의 설정 변경이 필요합니다.

Redis에서 기본으로 지원하는 데이터 타입이 아니기 때문에 저희는 Redis에서 공식 지원하는 Redis Stack이라는 별도의 플러그인을 이용해서 BloomFilter를 사용한 것입니다. "기본으로 지원하지 않는다"는 의미는 기본 redis 모듈에 포함되지 않는다는 의미이지 Redis에서 공식적으로 지원하지 않는다는 의미는 아닙니다.

다만 기본 데이터 타입이 아니기 때문에 마찬가지로 JDBC에서도 BloomFilter를 기본적으로 지원하지 않는 것으로 추측됩니다. 따라서 JDBC에 별도의 드라이버 설치를 하거나 클라이언트 라이브러리를 다운받으셔서 JDBC 세팅을 변경하시면 Redis BloomFilter를 사용하실 수 있을 것으로 예상됩니다.

Truestar님의 프로필 이미지
Truestar
질문자

자세한 답변 감사드립니다.

Truestar님의 프로필 이미지
Truestar

작성한 질문수

질문하기