## Redis wget 으로 받아 설치.
# Redis 다운로드 (0.0.0 -> 원하는 버전으로)
] $ wget https://download.redis.io/releases/redis-0.0.0.tar.gz
# 압축 해제
] $ tar xzvf redis-0.0.0.tar.gz
# 의존성 패키지 설치
] $ cd ./redis-0.0.0/deps
~/redis-0.0.0/deps] $ make hiredis jemalloc linenoise lua
# Redis 설치
~/redis-0.0.0/deps] $ cd ../
~/redis-0.0.0] $ make
※ jemalloc 오류 시
] $ yum install jemalloc
※ make[1]: cc: Command not found 라는 메시지와 함께 에러가 난다면 gcc의 설치를 먼저 진행
] $ yum install gcc
※ systemd-devel (redis 테스트)
] $ yum install systemd-devel
######################################
# 수동 설정으로 작성 시
] $ cd /etc/redis
# 디렉토리 없다면 생성
/etc] $ sudo mkdir redis
# config 항목 수정
/etc/redis] $ vi. [포트].conf
-------------------------------------------------
bind 0.0.0.0 # 127.0.0.1 -> 0.0.0.0 로컬 호스트에서 모든 호스트로 접속 가능하도록
protected-mode no # yes : bind 미지정시 로컬로만 접속 / no : bind 미지정시 모든 IP 접속
port [포트]
tcp-backlog 511
timeout 0
tcp-keepalive 300
daemonize yes # 데몬 실행 사용
supervised no
pidfile /var/run/redis_[포트].pid
loglevel notice
logfile /var/log/redis_[포트].log
databases 16
always-show-logo yes
# save 900 1 # 디스크 저장 주기 설정. 900초에 1개 이상 데이터 변경 시 스냅샷
# save 300 10
# save 60 10000
save 3600 1
stop-writes-on-bgsave-error yes
rdbcompression yes
rdbchecksum yes
dbfilename dump.rdb
dir /var/lib/redis/[포트]
slave-serve-stale-data yes
slave-read-only yes
repl-diskless-syno no
repl-diskless-sync-delay 5
repl-disable-tcp-nodelay no
slave-priority 100
lazyfree-lazy-eviction no
lazyfree-lazy-expire no
lazyfree-lazy-server-del no
slave-lazy-flush no
appendonly yes # AOF설정 (append-only file 저장 유무 (RDB OFF에 Cluster 롤 체인지 시 데이터 유실 가능))
sppendfilename "appendonly.aof"
appenddirname "appendonlydir"
appendfsync everysec # 동기화 > always : 매번, IO 높음 / everysec : 매초 / no : OS 넘김, 데이터 유실 높음
no-appendfsync-on-rewrite no
auto-aof-rewrite-percentage 100
auto-aof-rewrite-min-size 64mb
aof-load-truncated yes
aof-use-rdb-preamble no
lua-time-limit 5000
cluster-enabled yes # 클러스터 활성화
cluster-config-file nodes-[포트].conf # 클러스터 저장 파일 지정
cluster-node-timeout 3000 # 클러스터 노드 다운 시간 체크 3000 -> 3초
cluster-require-full-coverage yes
slowlog-log-slower-then 10000
slowlog-max-len 128
latency-monitor-threshold 0
notify-keyspace-events ""
hash-max-ziplist-entries 512
hash-max-ziplist-value 64
last-max-ziplist-size -2
list-compress-depth 0
set-max-intset-entries 512
zset-max-ziplist-entries 512
zset-max-ziplist-value 64
hll-sparse-max-bytes 3000
activerehashing yes
client-output-buffer-limit normal 0 0 0
client-output-buffer-limit slave 256mb 64mb 60
client-output-buffer-limit pubsub 32mb 8mb 60
hz 10
aof-rewrite-incremental-fsync yes
-------------------------------------------------
# 권한 수정
/etc/redis] $ sudo chkmod 644 [포트].conf
# redis 서비스파일 설정
/etc/redis] $ cd ../init.d
/etc/init.d] $ vi redis_[포트]
-------------------------------------------------
CLIEXEC = /[Redis 서버 파일 경로]/redis-cli
PIDFILE = /var/run/redis_[포트].pid
CONF = "/etc/redis/[포트].conf"
REDISPORT = "[포트]"
EXEC = /[Redis 서버 파일 경로]/redis-server
CLIEXEC = /[Redis 서버 파일 경로]/redis-cli
PIDFILE = /var/run/redis_[포트].pid
CONF = "/etc/redis/[포트].conf"
REDISPORT = "[포트]"
case "$1" in
start)
if [ -f $PIDFILE ]
then
echo "$PIDFILE exists, process is already running or crashed"
else
echo "Starting Redis server..."
$EXEC $CONF
fi
;;
stop)
if [ ! -f $PIDFILE ]
then
echo "$PIDFILE does not exist, process is not running"
else
PID=$(cat $PIDFILE)
echo "Stopping ..."
$CLIEXEC -p $REDISPORT shutdown
while [ -x /proc/${PID} ]
do
echo "Waiting for Redis to shutdown ..."
sleep 1
done
echo "Redis stopped"
fi
;;
status)
PID=$(cat $PIDFILE)
if [ ! -x /proc/${PID} ]
then
echo 'Redis is not running'
else
echo "Redis is running ($PID)"
fi
;;
restart)
$0 stop
$0 start
;;
*)
echo "Please use start, stop, restart or status as first argument"
;;
esac
-------------------------------------------------
# 권한 수정
/etc/init.d] $ sudo chkmod 755 redis_[포트]
# 덤프 & aof 저장 위치 설정
] $ cd /var/lib/redis
# 사용할 포트 이름으로 된 디렉토리 없다면 생성
/var/lib/redis] $ mkdir [포트]
######################################
######################################
## 클러스터 설정
# 클러스터 마스터 등록
~/redis-0.0.0/src] $ ./redis-cli --cluster create [MasterIP]:6379 [MasterIP]:6380 [MasterIP]:7381
# 클러스터 슬레이브 등록 (슬레이브 없다면 미등록)
~/redis-0.0.0/src] $ ./redis-cli --cluster add-node [SlaveIP]:7379 [MasterIP]:6379 -- cluster-slave
~/redis-0.0.0/src] $ ./redis-cli --cluster add-node [SlaveIP]:7380 [MasterIP]:6380 -- cluster-slave
~/redis-0.0.0/src] $ ./redis-cli --cluster add-node [SlaveIP]:6381 [MasterIP]:7381 -- cluster-slave
# 클러스터 설정 확인
~/redis-0.0.0/src] $ ./redis-cli -h [MasterIP] -p 6379 -c
[MasterIP]:6379> cluster info -> 클러스터 기기 정보 확인.
[MasterIP]:6379> cluster nodes -> 클러스터 마스터&슬레이브 확인.
[MasterIP]:7000> cluster slots -> 클러스터 슬롯 그룹 정보 확인
[MasterIP]:6379> exit
## 클러스터 삭제 및 재 설정 필요시.
# 클러스터 삭제 -클러스터 재 구동 시 관련 파일 삭제 후 설치 레디스 설정 재진행.
-- 레디스 실행 정지.
] $ /etc/init.d/redis_[포트] stop
-- Dump, Cluster 데이터 정보 삭제.
] $ sudo rm -r /var/lib/redis/[포트]
-- 레디스 실행 삭제.
] $ sudo rm -r /etc/init.d/redis_[포트]
-- config 설정 위치.
] $ sudo rm -r /etc/redis/[포트].conf
######################################
## 서버 중지 / 시작
] $ sudo /etc/init.d/redis_6379 stop
] $ sudo /etc/init.d/redis_6380 stop
] $ sudo /etc/init.d/redis_6381 stop
] $ sudo /etc/init.d/redis_7379 stop
] $ sudo /etc/init.d/redis_7380 stop
] $ sudo /etc/init.d/redis_7381 stop
] $ sudo /etc/init.d/redis_6379 start
] $ sudo /etc/init.d/redis_6380 start
] $ sudo /etc/init.d/redis_6381 start
] $ sudo /etc/init.d/redis_7379 start
] $ sudo /etc/init.d/redis_7380 start
] $ sudo /etc/init.d/redis_7381 start
# redis 서버 실행 (X)
$ cd [redis 설치 경로]/redis-0.0.0/src
~/redis-0.0.0/src] $ sudo ./redis-server -p [포트].conf (설정한 port 만큼 구동)
# 프로세스 구동 여부 확인
] $ ps -ef | grep redis
# 클라이언트 접속 (redis-cli -h [레디스 서버의 IP주소] -p [포트번호] -a [비밀번호])
~/redis-0.0.0/src] $ ./redis-cli -h [IP] -p [Port]
# 동작 테스트
[IP]:[Port]> ping ("PONG" 나오면 성공)
[IP]:[Port]> set testKey testValue
[IP]:[Port]> get testKey ("testValue" 나오면 성공)
# 기타 - 위치
-- PID 위치.
] $ /var/run/
-- Dump, Cluster 데이터 정보 위치.
] $ /var/lib/redis/
-- Log 위치.
] $ /var/log/
-- redis-cli, redis-server 위치.
] $ /home1/[사용자]/redis-0.0.0/src
-- 실행 위치.
] $ /etc/init.d/
-- config 설정 위치.
] $ /etc/redis/
'[ Programing ] > Redis' 카테고리의 다른 글
Redis 데이터 영구 저장과 동기화 RDB, AOF (0) | 2025.02.20 |
---|---|
Redis 레퍼런스. (0) | 2024.05.21 |
[Redis] Reference (0) | 2023.03.02 |
[Linux] Redis Cluster 설정 (0) | 2022.10.20 |
Redis 명령어 (0) | 2021.04.21 |