본문 바로가기

redis7

스프링에서 Redis ACL 적용이 안되는 이유 (RedisCommandExecutionException : NOPERM this user has no permissions to run the ...) 😬 상황스프링 애플리케이션에서 웹 소켓 기능을 Redis로 구현한 뒤, Redis에 아무나 접근할 수 없도록 접근 권한을 추가하기 위해 Redis에서 AUTH 명령어로 id, pw 명령어를 계정을 생성하고 권한을 주었다. 하지만 애플리케이션 웹 소켓 Redis pub/sub 과정에서 하기 이미지와 같은 Redis 관련 예외가 발생하며 정상적으로 기능이 작동하지 않았다.원인WAS 서버 OS인 우분투 22.04 LTS에서apt 패키지 관리자를 통해 설치할 수 있는 기본 Redis 버전은 일반적으로 6.0.x 이다. 하지만 Redis Pub/Sub 채널 액세스 관리 ACL은 6.2 이상의 버전부터 지원했다. 그래서 ACL이 정상적으로 적용되지 않은 것이다. 해결WAS 서버의 Redis 버전을 강제로 최신 버.. 2024. 7. 14.
Unit service failed to load properly, please adjust/correct and reload service manager: File exists 😂 문제 발생 😂 Ubuntu 22 LTS 환경 VM 서버에 설치했던 Redis 버전을 올리기 위해 기존 Redis 서비스를 삭제한 후 재설치하고 다시 실행시켰는데, 아래 이미지와 같은 에러가 발생하며 서비스가 실행되지 않았다. 메시지대로 시스템 로그를 확인했더니 다음과 같이 메시지가 출력되었다. 해당 문제는 unmask 명령어를 통해 해결 할 수 있었다. $ sudo systemctl unmask redis-server.service https://stackoverflow.com/questions/40317106/failed-to-start-redis-service-unit-redis-server-service-is-masked Failed to start redis.service: Unit red.. 2024. 6. 17.
Redis 기본 사용자 접근을 막고 아이디 비밀번호 적용하기 (ACL) 운영 중인 서비스에서 관리하는 레디스에 외부에서 접근이 필요하도록 설정해야 하는 경우가 있다. 단순하게 레디스 접근포트를 열어서 자유롭게 접근을 허용한다면 운영 중인 서비스의 데이터가 외부로 노출되거나 조작될 가능성이 존재한다. 따라서, 외부에서 레디스 직접 접근이 필요한 경우에는 기본 사용자 접근을 막고, 안전하게 데이터에 접근할 수 있는 환경을 구성해야 한다. 해당 포스트에서는 Redis 6.0 버전부터 제공하는 ACL(Access Control List) 기능을 활용해서 사용자 계정을 생성하고 관리하는 방법에 대해서 설명한다.1. 외부 접근 허용하기레디스 설정파일 /etc/redis/redis.conf에 접근해서 설정 파일을 텍스트 편집기로 연다. sudo vi /etc/redis/redis.con.. 2024. 6. 15.
Redis Set 타입 특징 및 자주 쓰는 명령어 알아보기 SET Redis의 Set은 고유한 값들을 저장하는 데 사용되는 데이터 구조로, 중복된 값을 허용하지 않는다. 이 데이터 타입은 다양한 용도로 활용되며, 여러 유용한 기능을 제공한다. Set은 다음과 같은 특징을 갖는다. 고유한 값 저장 Set은 중복된 값을 허용하지 않으며, 각 값은 오직 한 번만 저장된다. 이는 집합 형태의 데이터를 효과적으로 표현하고 관리할 수 있도록 한다. 집합 연산 지원 Redis의 Set 타입은 여러 집합 연산을 지원한다. 교집합, 합집합, 차집합 등의 연산을 통해 집합 간의 관계를 쉽게 파악하고 다룰 수 있다. 순서 없음 Set은 순서가 없는 데이터 구조이다. 따라서 값을 저장한 순서를 보장하지 않으며, 순서에 의한 접근이 불가능하다. 명령어 (Command) SADD 설명:.. 2024. 4. 7.
Redis String 타입 특징 및 자주 쓰는 명령어 알아보기 👋 소개 해당 포스팅에서는 Redis의 기본 명령어 중 String 타입에 대해 설명하고, 자주 쓰는 명령어의 종류와 간단한 활용 예제를 살펴본다. 활용한 레디스 버전은 최신 7.2.4 버전이다. 하위 버전은 특정 명령어가 존재하지 않을 수도 있다. 문자열 (String) Redis의 문자열(String)은 레디스에서 데이터를 저장할 수 있는 가장 기본적이고 단순한 데이터 타입 중 하나로, 키와 문자열 값으로 이루어져 있으며, 최대 512MB 문자열 데이터를 저장할 수 있다. 문자열은 다음과 같은 특징을 갖는다. - 간단한 값 저장 Redis의 문자열 타입은 가장 기본적인 Key-Value 저장소로 사용된다. 각 키에는 하나의 문자열 값이 매핑된다. 이러한 간단한 구조는 데이터를 빠르게 읽고 쓸 수 있도.. 2024. 2. 12.
Spring Data Redis를 활용해서 레디스 기본 명령어 사용하는 방법 👀 소개 Spring Data Redis는 레디스와의 통합을 지원하여 개발자들이 레디스를 쉽게 사용할 수 있도록 도와준다. 해당 포스팅에서는 레디스의 기본 명령어 들을 Spring Data Redis를 활용하여 어떻게 구현하는지 알아보자. 의존성 추가 먼저, 프로젝트에 Spring Data Redis 의존성을 추가해야 한다. Maven을 사용한다면 pom.xml에 다음과 같이 의존성을 추가한다. org.springframework.boot spring-boot-starter-data-redis Gradle을 사용한다면, build.gradle 파일에 다음과 같이 추가한다. implementation 'org.springframework.boot:spring-boot-starter-data-redis' R.. 2024. 2. 12.
Spring Redis Session 설정, 특징, 데이터 조회 ✏️ 배경 현재 진행 중인 프로젝트는 운영 중인 서버에서 세션을 별도 레디스를 설치해서 관리하고 있다. 업무 수행 중 Spring Redis Session에 접근해서 세션 별로 분류해서 어떤 작업을 할 필요가 생기게 되었다. 그래서 Spring Redis Session 데이터를 조회하는 방법을 찾게 되었고 해당 과정을 통해서 어떻게 접근하고 데이터를 가지고 오는지 알게 되어 해당 내용을 공유해 본다. 😀 🔎 Redis Session 설정 org.springframework.boot spring-boot-starter-data-redis org.springframework.session spring-session-data-redis 세션을 레디스로 관리하기 위해서는 spring-session-data-re.. 2023. 4. 8.