블로그는 나의 힘!
[ Programing ]/Redis2022. 10. 20. 18:18

# 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


# 자동 설정으로 작성 시
     /redis-0.0.0] $ cd ./utils
     /redis-0.0.0/utils] $ install_server.sh

------------------
Please select the redis port for this instance : [6379]      - 포트 설정.
Please select the redis config file name [/etc/redis/.6379.conf]      - Config 파일 이름 설정.
Please select the redis log file name [/var/log/redis_6379.log]      - Log 파일 이름 설정.
Please select the redis data directory for this instance [/var/lib/redis/6379]      - 데이터 폴더 이름 설정.
Please select the redis execute path []      - Redis 서버 파일 경로 작성
-------------------



# 수동 설정으로 작성 시
     $ 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     yes
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
save     300 10
save     60 10000
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     (append-only file 데이터 저장 유무)
sppendfilename     "appendonly.aof"
appendfsync     everysec
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
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 서버 실행

     $ 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" 나오면 성공)


'[ Programing ] > Redis' 카테고리의 다른 글

Redis 레퍼런스.  (0) 2024.05.21
[Redis] Reference  (0) 2023.03.02
[Linux] Redis Cluster 설정  (0) 2022.10.20
Redis 명령어  (0) 2021.04.21
Posted by Mister_Q