과제 내용

  • 스크립트를 실행하면 자동으로 redis를 설치함
  • redis-cli 입력시 자동으로 접속할 수 있는 alias 추가
  • 설치 버전을 변수로 받기
sh install_redis.sh 7.0.8

 

개발환경

  • NHN Cloud
  • CentOS 7.9

 

프로세스

 

코드

  • 버전을 입력받지 않았을 때

 

  • 버전을 입력받았을 때
    • 입력한 버전을 설치할 것인지 묻기

 

  • redis와 dependency들이 이미 설치되어 있는지 확인

 

  • redis 다운로드 및 설치

 

  • redis.conf 등 설정

 

  • redis 실행

 

  • alias 설정

 

결과

과제 내용

  • 스크립트를 실행하면 비밀번호 없이 접속할 수 있도록 작성
  • 가장 최신 버전을 설치함
sh install_mysql.sh

 

개발환경

  • NHN Cloud
  • CentOS 7.9

 

프로세스

 

코드

  • yum repository 업데이트

 

  • MySQL이 이미 설치되어 있는지 확인
    • 설치된 경우 삭제

 

  • MySQL 설치

 

  • MySQL 실행
    • 임시 비밀번호로 로그인

 

  • 설치결과 로그 파일로 저장

 

결과

과제 내용

  • 스크립트를 실행하면 비밀번호 없이 접속할 수 있도록 작성
  • 설치할 버전을 변수로 받기
sh install_mysql 8.0.32

 

개발환경

  • NHN Cloud
  • CentOS 7.9

 

프로세스

 

코드

  • 버전을 입력받지 않았을 때

 

  • 버전을 입력받았을 때
    • 입력한 버전을 설치할 것인지 묻기

 

  • OS와 아키텍처 버전 확인

 

  • MySQL이 이미 설치되어 있는지 확인
    • 이미 설치된 경우 삭제할 것인지 묻기

 

  • wget이 설치되어 있는지 확인

 

  • MySQL 다운로드 및 설치

 

  • my.cnf 설정

 

  • data, logs 파일 만들고 환경변수 설정

 

  • 초기화 및 시작

 

  • MySQL 실행

 

결과

 

피드백

  • 여러 버전의 데이터베이스를 설치하고 싶을 수 있다.
    • 설치할 때 파라미터로 포트번호도 받기
    • 설치될 디렉토리도 분리해야 함
  • OS ubuntu 까지는 분기 처리하기
  • wget --spider 통해서 url 정합성 확인하기
  • (MySQL) 비밀번호 없이 접속하기
    • --initialize-insecure 사용하기
    • --skip-grant-tables 옵션은 보안상 안전하지 않으므로 사용X (system 스키마에 있는 grant tabels를 읽지 않고, 권한 시스템에 없이 시작)
  • (redis) 재기동 이후에도 설정파일 변경사항 지속되도록 하기

 

 

✅ 공식문서

https://helpdesk.dooray.com/share/pages/9wWo-xwiR66BO5LGshgVTg/2939987647631384419

 

📍 목차

  1. 과제 내용
  2. 프로세스
  3. 주요 명령어
  4. 코드
  5. 결과

 

과제 내용

  • 특정 두레이 프로젝트에 일일 스크럼 태스크를 자동 등록해주는 프로그램 작성
    • 일일 태스크 생성: [2023/01/10 (화) 일일 스크럼] 등 일일 스크럼 태스크를 1주일 전 매일 자동 생성
    • 주간 태스크 생성: 2023/01/10(화) 데이터운영팀 주간 업무 회의 의 주간 회의 태스크는 다음주 회의 태스크 자동 생성

 

프로세스

개발환경

  • macOS Monterey
  • intel 7i / x86_64

 

도식화

  • 상위 업무가 있는지 확인
    • 없으면 연 또는 월 단위의 상위 업무 생성
  • 해당 일에 업무가 있는지 확인 (수동으로 등록된 것이 있는지 확인 차원)
    • 없으면 가장 최근에 등록된 일일 업무가 있는지 확인
      • 있다면 가장 최근 일일 업무 상태-완료/만기일-미정 설정
  • 하위 업무 생성
  • 젠킨스에서 설정한 두레이 대화방에 메시지 알림

 

세부사항

  • 상위 업무에 하위 업무로 등록됨
  • 태그 : 지정한 태그명
  • 날짜 : 생성될 때 일주일 후 날짜로 자동 생성됨
  • 담당자 : 본인 (그룹으로도 가능)
  • 실행 : 젠킨스 사용
    • 일일 스크럼 : 평일 9시마다 빌드
    • 주간업무회의 : 화요일 9시마다 빌드

 

주요 명령어

curl

  • 프로토콜을 이용해 URL로 데이터를 전송해서 서버에 데이터를 보내거나 가져올 때 사용하는 명령어
  • Shell에서 REST API(http) 테스트를 하고 싶을 때 사용
  • 지원하는 프로토콜 : http / https / ftp / ldap / scp / telnet / smtp / pop3 등
  • Linux/mac OS : 기본 탑재
  • 사용한 옵션
    • -d : http POST 요청 데이터 입력
    • -s : 진행 내용이나 메시지 출력 안되게
    • -X : 요청시 사용할 메소드 종류
    • -H : 전송할 헤더 지정



date

  • 날짜 및 시간을 다양한 포맷으로 출력하고, 계산할 때 사용하는 명령어
  • macOS에서 사용하기
    • macOS는 date 명령어에 -d 옵션이 적용되지 않음
    • 포맷 : -v[-(과거)/+(미래)][일수]d
# 오늘로부터 7일 뒤 yyyy/mm/dd 형식
date -v+7d +%Y/%m/%d

# 오늘로부터 7일 뒤 요일 형식
date -v+7d +%A  # 수요일
date -v+7d +%a  # 수



jq

  • Shell에서 JSON을 조작할 수 있는 라이브러리
  • 사용한 옵션
    • -r : 결과값에 따옴표 제거해서 raw 값 받기
  • 설치
# macOS
brew install jq



crontab

  • Linux에서 일정 주기나 특정 시간에 명령을 실행하게 해주는 명령어 (스케줄러)
# crontab 작성
crontab -e

# crontab 작업 리스트 보기
crontab -l

# crontab 모든 작업 삭제
crontab -r

# 매주 일요일 23시 55분에 수행
55 23 * * 0 파일 저장된 위치 >> 로그 저장할 위치

# 매주 월-금요일 23시 55-59분에 수행
55-59 23 * * 1-5 파일 저장된 위치 >> 로그 저장할 위치

 

코드

  • 변수

 

  • 로직
  • 상위 업무 유무 확인
    • 없으면 상위 업무 생성

 

  • 하위 업무 유무 확인
    • 있으면 종료

 

  • 없으면 가장 최근 일일 업무 확인 후 상태-완료 및 만기일-미정 설정

 

  • 하위 업무 생성

 

결과

  • 성공 화면 (연 단위)
  • 성공 화면 (월 단위)

 

  • 이미 해당 일의 업무가 생성되어 있을 경우


고려한 사항

  1. 상위 업무가 연 또는 월 단위를 선택하여 생성될 수 있도록 구현
    → 연도나 월이 바뀌더라도 때마다 자동으로 상위 업무가 생성되어 수작업이 필요하지 않도록 구현
  2. 만기일(없음/미정/있음) 설정
    → 가장 최근의 업무를 업무상태를 완료로 바꿀 경우 : 만기일이 설정되어 캘린더에 나오게 됨
    → 업무를 생성하거나 변경할때 dueDateFlag: false 로 할 경우, 만기일이 없음 상태가 됨
    → 특이사항 1 : 업무상태(할일/진행중/완료) 속성을 사용할 수 없음
    → 특이사항 2 : dueDateFlag를 true로만 사용하기를 권장
  3. 크론탭만 사용했을 경우, 빌드가 실패한 경우에 재실행 등의 예외 처리가 쉽지 않음
    → 젠킨스에서 두레이와 연동된 플러그인을 사용해 빌드 실패시 재시도 횟수를 설정하여 다시 빌드되도록 설정
  4. 빌드 결과를 두레이 메시지 알림
    → 두레이 대화방 단위로 메시지 가능

 

보완이 필요한 사항

  1. 상위 업무 생성시 하위 업무가 바로 등록되지 않는 점
    → 동시성 문제인가 싶어 wait를 걸어봤는데 되지 않아서 좀 더 확인 필요
  2. 상위 업무를 생성해야 하는 경우, 태그도 함께 생성될 수 있도록 (현재는 태그가 만들어져 있다고 가정되어 있음)
    → 'application/x-www-form-urlencoded' not supported 에러 확인 필요
  3. 젠킨스봇 메시지 내용 설정이 가능한지 확인
    → 플러그인에서 지원하지 않는 것 같지만 좀 더 확인 필요

✅ 공식문서

https://helpdesk.dooray.com/share/pages/9wWo-xwiR66BO5LGshgVTg/2939987647631384419

 

명령어

curl

  • 프로토콜을 이용해 URL로 데이터를 전송해서 서버에 데이터를 보내거나 가져올 때 사용하는 명령어
  • Shell에서 REST API(http) 테스트를 하고 싶을 때 사용
  • 지원하는 프로토콜 : http / https / ftp / ldap / scp / telnet / smtp / pop3 등
  • Linux/mac OS : 기본 탑재
  • 사용한 옵션
    • -d : http POST 요청 데이터 입력
    • -s : 진행 내용이나 메시지 출력 안되게
    • -X : 요청시 사용할 메소드 종류
    • -H : 전송할 헤더 지정

 

date

  • 날짜 및 시간을 다양한 포맷으로 출력하고, 계산할 때 사용하는 명령어
  • macOS에서 사용하기
    • macOS는 date 명령어에 -d 옵션이 적용되지 않음
    • 포맷 : -v[-(과거)/+(미래)][일수]d
# 오늘로부터 7일 뒤 yyyy/mm/dd 형식
date -v+7d +%Y/%m/%d

# 오늘로부터 7일 뒤 요일 형식
date -v+7d +%A  # 수요일
date -v+7d +%a  # 수

 

jq

  • Shell에서 JSON을 조작할 수 있는 라이브러리
  • 사용한 옵션
    • -r : 결과값에 따옴표 제거해서 raw 값 받기
  • 설치
# macOS
brew install jq

 

crontab

  • Linux에서 일정 주기나 특정 시간에 명령을 실행하게 해주는 명령어 (스케줄러)
# crontab 작성
crontab -e

# crontab 작업 리스트 보기
crontab -l

# crontab 모든 작업 삭제
crontab -r
# 매주 일요일 23시 55분에 수행
55 23 * * 0 파일 저장된 위치 >> 로그 저장할 위치

# 매주 월-금요일 23시 55-59분에 수행
55-59 23 * * 1-5 파일 저장된 위치 >> 로그 저장할 위치

 

개발환경

  • macOS Big Sur
  • intel 7i / x86_64

 

시나리오

  1. 요청한 정보에 문제가 있는지 확인
  2. 해당 일에 업무가 이미 있는지 확인
    1. 있으면 종료
    2. 없으면
      1. 가장 최근 일일 업무 상태-완료/만기일-미정 설정
      2. 새 업무 생성

 

  • 상위 업무(일일 스크럼 또는 주간업무회의)에 하위 업무로 추가됨
  • 태그 : 상위 업무
  • 날짜 : 생성될 때 일주일 후 날짜로 자동 생성됨
  • 등록자/담당자 : 본인 (그룹으로도 가능)

 

코드

일일 스크럼

  • 변수

 

  • 요청한 정보에 문제가 있는지 확인

 

 

  • 해당 일에 업무가 이미 있는지 확인
    • 있으면 종료

 

  • 없으면
    • 가장 최근 일일 업무 상태-완료/만기일-미정 설정

 

  • 새 업무 생성

 

 

 

주간 업무 회의

  • 변수

 

  • 요청한 정보에 문제가 있는지 확인

 

  • 해당 일에 업무가 이미 있는지 확인
    • 있으면 종료

 

  • 없으면
    • 가장 최근 일일 업무 상태-완료/만기일-미정 설정

 

  • 새 업무 생성

 

 

결과

일일 스크럼

  • 요청된 정보가 잘못 되었을 경우

 

  • 이미 해당 일의 업무가 생성되어 있을 경우

 

  • 정상적으로 업무가 생성된 경우

 

주간 업무 회의

  • 요청된 정보가 잘못 되었을 경우

 

  • 이미 해당 일의 업무가 생성되어 있을 경우

 

  • 정상적으로 업무가 생성된 경우

 

크론탭

  • 일일 스크럼 : 평일 9시 실행
  • 주간 업무 회의 : 화요일 9시 실행
  • 로그 파일 생성

8. 테이블 설계의 기초

테이블의 개념과 정규형
  1. 테이블 설계
  2. 정규형
  3. 체크포인트

🧐 관계형 데이터베이스가 주류가 된 이유는 무엇일까?

❗️ Garbage in, Garbage out 이라는 말이 있듯이, 데이터베이스에서 데이터 저장은 매우 중요함

  1. 데이터베이스에서 데이터의 정합성은 매우 높은 단계로 요구됨
  2. 관계형 데이터베이스가 데이터의 정합성을 높이기 위한 설계 노하우가 매우 발달함

테이블 설계

테이블

  • 데이터를 관리하는 그릇
  • 열과 행으로 구성된 데이터 구조 (엑셀)
  • 유니크한 기본키를 가지는 공통 속성을 가진 것의 집합
  • 현실 세계의 개념이나 집합을 나타낸 것

서버나 스토리지 같은 물리층과 관계없이 독립적으로 작성하는 것이 가능해서 '논리 설계'라고도 부름

 

원칙

테이블이란 공통점을 가진 사물의 집합을 나타낸 것이다

테이블명은 반드시 복수형이나 집합명사로 표현해야 한다

 

테이블 설계의 어려움

인간의 자유로운 사고를 반영하기 때문에 테이블의 구성 패턴이 달라질 수 있다.

 

데이터 관리는 등록한 그 시점에만 정합성이 있어야 하는 것이 아닌 장기적으로 정합성을 얻는 노력을 해야 한다.

→ 데이터가 '정적'이지 않고 '동적'임을 전제로 생각해야 한다.

 

해결방법

  • 가장 상위의 개념집합으로 정리한다.
    • 차이가 있다면 컬럼을 추가해서 구분한다.

 

도메인 주도 설계  DDD - 현실 세계와 관계형 모델의 세계를 잇는 다리 역할

속성이 필요한지 생각할 때 결정해야 할것 이름 : 데이터 = 도메인(데이터형- 속성이 취할 수 있는 값의 집합)

속성(칼럼)의 이름:

ID를 설계한다는 개념 = DB에 저장된 ID는 현실 세계의 물체나 개념

 

 

🔑  기본키

데이터를 고유하게 식별할 수 있는 것

데이터베이스 사용 여부와 관계없이 기본키 할당은 데이터 관리의 기본!

 

필수 요건

  • 기본키는 한 개의 테이블에 반드시 한 개만 존재해야 함
  • 기본키의 컬럼 명에 밑줄을 그어 표시하는 것이 일반적임
  • 기본키 열에 NULL은 불가
  • 변경 가능성이 있거나 중복될 수 있는 값이 있다면 불가
    • 변경 후 값의 유일성을 보증할 수 없고 과거 데이터와의 매칭이 어려움

정규형

데이터의 갱신이 발생한 경우에도 부정합이 발생하기 어려운 테이블의 형태

→ 쉽게 말해서 데이터베이스의 중복을 없애는 작업

 

정규화 논리 - 함수 종속성

DB 설계 = DB에 포함된 모든 테이블이나 오브젝트의 설계라는 의미

정규화 = 관계형 모델을 보완하는 이론

 

변칙을 방지할 수 있다.

  • 정규화 안된 db는 릴레이션의 설계가 상식적이지 않을 수 있다. ex) 학생과 수업의 이수관계를 나타내는 릴레이션에 학년이라는 속성이 포함된 것이 이상하다

변칙의 원인은 중복

중요 : BCNF, 5NF

 

제1정규형(1NF)

테이블이어야 할것

→ 칼럼이나 행의 순서가 없다 : ROWID나 ObjectID 같은 걸 쓰지말아야한다

→ 중복되는 행을 제거

→ NULL이 포함되면 안된다.

→ 값의 원자성

 

함수 종속성(FD) 2NF~BCNF 는 함수 종속성에 관한 정의

 

제2정규형(2NF)

후보키의 진부분집합에서 키가 아닌 속성에 함수 종속성을 제거하는 작업

 

제3정규형

보이스코드 정규형 (BCNF)

자명하지 않은 함수 종속성이 모두 제거된 상태

 

  • 제1~5정규형까지 있지만 실무에서는 제3정규형까지 알면 충분하다.

 

결합 종속성 (JD)

4,5,6 정규형

 

릴레이션의 직교성 : 여러 개의 릴레이션 사이의 중복에 관한 개념

 


 

NULL과의 싸움

  • 릴레이션에는 NULL 이라는 개념이 존재하지 않는다. (NULL 값은 비어)
    • NULL은 관계형 모델에는 존재하지 않고 SQL의 테이블에만 존재한다. NULL을 가진 테이블은 1NF의 요건을 만족하지 않는다.
  • NULL ≠ 공집합 (공집한은 요소가 0개인 실재하는 집합)
  • SQL의 NULL은 C언어의 NULL 포인트와도 다르다.
  • NULL은 값이 아니라서 값처럼 비교할 수 없다 (= 이 아닌 IS)
  • NULL은 연산을 망친다. 검색 결과가 의도하지 않은 결과가 될 가능성
  • NULL은 옵티마이저 구현에도 악영향이 있다. → 쿼리의 성능을 개선해도 결과가 다르면 의미가 없다.

 

NULL의 대책

  • 테이블 정규화
  • 잘못된 NULL 대책 - 특별한 값이 히트하지 않도록 주의 - 로컬 규칙은 테이블 정의에 보이지 않는다.
  • NULL을 피하고자 편의상 NULL이 아닌 NULL과 같은 의미가 있는 기본값을 사용하는 것은 테이블 설계를 악화
  • → COALESCE 함수: NVL의 확장, 인수 중에 가장 처음에 나오는 NULL이 아닌 것을 반환 - 다이나믹 SQL

체크포인트 (SQL 코딩의 기술 참조)

데이터 모델 설계

  1. 모든 테이블에 기본키가 있는지 확인하자
    • 기본 키의 요건: 유일한 값, NOT NULL, 안정성(=갱신 불필요), 간단(ex. 정수)
    • 기본 키는 비즈니스 로직과 독립적인 값을 사용해야 한다. (비즈니스 정책 변경으로인해 기본 키가 갱신되면 안 되기 때문)
  1. 중복으로 저장된 데이터 항목을 제거하자
  2. 반복 그룹을 제거하자 → 정규화
  3. 컬럼당 하나의 특성만 저장하자
    • 원자성, 한 컬럼에 여러 특성 포함하면 검색이나 그루핑이 어려움 
    • 쿼리할 때 쪼개는 것은 어렵지만, 합치는 것은 쉽다! (주소, 전화번호 등)
  4. 왜 계산 데이터를 저장하면 좋지 않은지 이해하자 (정합성)
    • 다른 테이블의 값으로 계산되는 컬럼이 있다면, 다른 테이블의 로우가 변경, 삽입, 삭제될 때마다 값을 재계산해야하므로, 부하가 걸릴뿐더러 데이터 무결성을 유지하기 어렵다
    • 비결정적 함수일 경우에는 인덱스를 걸 수 없다
    • 계산 컬럼 : 얻는 혜택 > 부하 비용 일 때만 사용
결정적 함수와 비결정적 함수
* 결정적(Deterministic) 함수 : 입력이 같으면 결과가 같은 함수
* 비결정적(Nondeterministic) 함수 : 입력이 같아도 매번 호출할 때마다 결과가 달라지는 함수. 인덱스 불가
  1. 테이블 간 관계를 명확히 하자
    • 데이터 모델의 정확성 유무를 규정하는 것은 비즈니스 규칙이므로, 애플리케이션에 맞춰 데이터 모델을 설계해야 한다
    • 테이블 A의 변경에 따른 테이블 B의 영향을 생각해서 설계한다
  1. 제3정규화로도 부족하다면 더 정규화하자

 

 

 

 

 

참고

https://www.sunny-son.space/MySQL/RDBMstart07/

 

 

 

 

 

ACL

Access Control List의 줄임말로 redis 6부터 도입된 기능입니다.

 

다른 RDBMS(MySQL, Oracle 등)에는 유저별로 접근 가능한 범위를 정할 수 있지만

redis에는 유저라는 개념이 없었습니다.

 

ACL은 유저를 설정하고 실행 가능한 커맨드와 접근할 수 있는 키 측면에서 특정 연결을 가능하게 해줍니다.

 

# 1
ACL SETUSER alice on >p1pp0 ~cached:* +get

# 2
AUTH alice p1pp0
  • #1 : alice 라는 user를 생성한다.
    • 이름 
    • 패스워드 : p1pp0
    • 접근 가능한 키 패턴 : cached 로 시작하는 key들에 접근할 수 있다. (allkeys : 모든 키에 접근 가능)
    • 실행 가능한 커맨드 : 접근할 때는 get 만 사용할 수 있다. (allcommands : 모든 명령어 사용 가능)
  • #2 : alice 계정으로 redis를 사용하도록 한다.

비밀번호만 설정한다는 것은 "default" user를 사용한다는 의미입니다.

ACL feature를 사용하여 user를 생성하고, user가 접근할 수 있는 key와 command를 지정해놓는다면, redis를 조금 더 안전하게 사용할 수 있을 것입니다.

 

사용자 등록

> ACL SETUSER user on/off >password keys commands
  • user: user-id를 설정한다.
  • on/off: 사용 여부를 정한다. on이면 사용 가능하고, off이면 사용할 수 없다.
    • Off는 사용자는 등록하지만 일단 사용하지 못하게 할 경우 또는 기존 사용자를 사용하지 못하게 할 경우 사용한다.
    • 이 경우 새로 로그인(auth)은 할 수 없지만, 이미 로그인한 사용자의 사용을 막지는 못한다.
  • >password: '>' 구분자 다음에 지정한다. 자유롭게 지정할 수 있다.
    • 패스워드 없이 사용하려면 nopass를 지정한다. 로그인 시 어떤 문자열이든 입력해도 된다.
    • 패스워드를 지정했을 경우: auth user password 로 로그인
  • keys:
    • 모든 키 : allkeys 또는 ~*
    • 특정 패턴 : 예) ~user*, ~key* 이렇게 지정하면 user 또는 key로 시작하는 키에 대해서만 사용할 수 있다.
    • 키 X : Resetkeys
    • 키 패턴을 지정하면 매 명령마다 비교하므로 성능이 떨어질 수 있다. 성능이 우선일 경우 사용에 주의
  • commands:
    • 모든 명령 : allcommands 또는 +@all
    • 명령 X : Nocommands 또는 -@all
    • 명령은 그룹 또는 명령으로 추가 또는 뺄 수 있다.
      • 명령 그룹 : +@group/-@group, 명령 : +command/-command

 

사용자 조회

ACL GETUSER user

 

사용자 삭제

ACL DELUSER user

 

본인 확인

ACL WHOAMI

 

사용자 리스트 조회

ACL USERS

 

사용자 정보 리스트 조회

ACL LIST

 

사용자 정보 저장

ACL SAVE

 

사용자 정보 로드

ACL LOAD

 

명령 그룹 조회

127.0.0.1:6379> ACL CAT
1) "keyspace"
2) "read"
3) "write"
4) "set"
5) "sortedset"
6) "list"
7) "hash"
8) "string"
9) "bitmap"
10) "hyperloglog"
11) "geo"
12) "stream"
13) "pubsub"
14) "admin"
15) "fast"
16) "slow"
17) "blocking"
18) "dangerous"
19) "connection"
20) "transaction"
21) "scripting"
  • keyspace: del, expire, flushdb, keys, ttl, scan 등
  • read: get, lrange, smembers, zrange, hget, xrange 등
  • write: set, lpush, sadd, zadd, hset, xadd 등
  • set: sadd, scard, srem, spop 등
  • sortedset: zadd, zcard, srem, zpopmin 등
  • list: lpush, llen, lrem, lpop 등
  • hash: hset, hlen, ldel, hget 등
  • string: set, get, incr 등
  • bitmap: setbit, bitop, getbit 등
  • hyperloglog: pfadd, pfmerge, pfcount, pfselftest
  • geo: geoadd, geodist, georadius 등
  • stream: xadd, xlen, xrange, xdel 등
  • pubsub: publish, subscribe, pubsub 등
  • admin: bgsave, config, debug, shutdown 등
    Admin 명령은 dangerous 그룹에 포함된다.
  • fast: get, lpush, hget 등
  • slow: lrem, mset, save 등
  • blocking: blpop, brpop, brpoplpush, bzpopmin, bzpopmax, xread, xreadgroup
  • dangerous: flushdb, keys, shutdown, info, client 등
  • connection: hello, client, auth, echo, ping, command
  • transaction: watch, multi, unwatch, discard, exec
  • scripting: evalsha, eval, script

각 명령이 어느 그룹에 속하는지는 "command info 명령"을 사용해서 확인할 수 있다.

예를 들면, SET 명령은 write, string, slow이고, GET 명령은 read, string, fast이다.

 

패스워드 생성

ACL GENPASS [<bits>]
  • 디폴트로 64바이트 문자열로 패스워드를 생성한다.
  • 암호화 알고리즘으로 SHA-256을 사용한다.

 

ACL(Auth) 로그

ACL LOG [<count> | RESET]

✅ 공식문서

https://redis.io/topics/acl

 

목차

 

 

 

 

 

 

참고

http://redisgate.kr/redis/server/acl.php

https://sungbin.dev/post/Redis%20%ED%95%B4%ED%82%B9%EB%8B%B9%ED%95%9C%20%EC%9D%B4%EC%95%BC%EA%B8%B0

+ Recent posts