๊ฐœ๋ฐœ๊ธฐ/OS & Server

[Redis] ์„ค์น˜ ๋ฐ ์„ค์ • ๊ณผ์ • ์ •๋ฆฌ (+Redis ๋ช…๋ น์–ด)

๋™ ๋”” 2025. 2. 13. 12:04

 

์„ค์น˜ํ•œ ์„œ๋ฒ„: 202 / ํฌํŠธ 6379 ์‚ฌ์šฉ

Name : jemalloc Version : 5.2.1

Name : redis Version : 7.2~rc3

 

๐Ÿ”ข Redis ์„ค์น˜ ๋ฐ ์„ค์ • ๊ณผ์ • ์ •๋ฆฌ

      1. jemalloc ์„ค์น˜
      2. redis ์„ค์น˜
      3. redis ์„ค์ •ํŒŒ์ผ ๊ถŒํ•œ ๋ณ€๊ฒฝ
      4. redis ์„ค์ •ํŒŒ์ผ ์ˆ˜์ • (redis.conf)
      5. redis ์„œ๋น„์Šค ๊ธฐ๋™
      6. redis ํ…Œ์ŠคํŠธ

1 ) jemalloc ์„ค์น˜

https://rpmfind.net/linux/rpm2html/search.php?query=jemalloc

jemalloc-5.2.1-2.el8.x86_64.rpm

[root@username ~]# rpm -ivh ./jemalloc-5.2.1-2.el8.x86_64.rpm
๊ฒฝ๊ณ : ./jemalloc-5.2.1-2.el8.x86_64.rpm: Header V3 RSA/SHA256 Signature, key ID 2f86d6a1: NOKEY
Verifying...                          ################################# [100%]
์ค€๋น„ ์ค‘...                         ################################# [100%]
Updating / installing...
   1:jemalloc-5.2.1-2.el8             ################################# [100%]
[root@username ~]#
[root@username ~]# rpm -qa jemalloc
jemalloc-5.2.1-2.el8.x86_64
[root@username redis]# rpm -qi jemalloc
Name        : jemalloc
Version     : 5.2.1
Release     : 2.el8
Architecture: x86_64
Install Date: 2023๋…„ 07์›” 18์ผ (ํ™”) ์˜คํ›„ 01์‹œ 17๋ถ„ 10์ดˆ
Group       : Unspecified
Size        : 780757
License     : BSD
Signature   : RSA/SHA256, 2019๋…„ 10์›” 03์ผ (๋ชฉ) ์˜ค์ „ 09์‹œ 29๋ถ„ 23์ดˆ, Key ID 21ea45ab2f86d6a1
Source RPM  : jemalloc-5.2.1-2.el8.src.rpm
Build Date  : 2019๋…„ 10์›” 02์ผ (์ˆ˜) ์˜คํ›„ 09์‹œ 41๋ถ„ 14์ดˆ
Build Host  : buildhw-08.phx2.fedoraproject.org
Relocations : (not relocatable)
Packager    : Fedora Project
Vendor      : Fedora Project
URL         : http://www.canonware.com/jemalloc/
Bug URL     : https://bugz.fedoraproject.org/jemalloc
Summary     : General-purpose scalable concurrent malloc implementation
Description :
General-purpose scalable concurrent malloc(3) implementation.
This distribution is the stand-alone "portable" implementation of jemalloc.

์„ค์น˜

# rpm -ivh ./jemalloc-5.2.1-2.el8.x86_64.rpm

ํ™•์ธ

# rpm -qi jemalloc

 

 


2 ) redis ์„ค์น˜

https://rpmfind.net/linux/rpm2html/search.php?query=redis&submit=Search+...&system=&arch=

redis-7.2~rc3-1.el8.remi.x86_64.rpm

[root@username ~]# rpm -ivh ./redis-7.2~rc3-1.el8.remi.x86_64.rpm
๊ฒฝ๊ณ : ./redis-7.2~rc3-1.el8.remi.x86_64.rpm: Header V4 RSA/SHA256 Signature, key ID 5f11735a: NOKEY
Verifying...                          ################################# [100%]
์ค€๋น„ ์ค‘...                         ################################# [100%]
Updating / installing...
   1:redis-7.2~rc3-1.el8.remi         ################################# [100%]
[root@username ~]#
[root@username ~]# rpm -qa redis
redis-7.2~rc3-1.el8.remi.x86_64
[root@username redis]# rpm -qi redis
Name        : redis
Version     : 7.2~rc3
Release     : 1.el8.remi
Architecture: x86_64
Install Date: 2023๋…„ 07์›” 18์ผ (ํ™”) ์˜คํ›„ 01์‹œ 33๋ถ„ 01์ดˆ
Group       : Unspecified
Size        : 5689831
License     : BSD-3-Clause AND BSD-2-Clause AND MIT AND BSL-1.0
Signature   : RSA/SHA256, 2023๋…„ 07์›” 10์ผ (์›”) ์˜คํ›„ 11์‹œ 26๋ถ„ 17์ดˆ, Key ID 555097595f11735a
Source RPM  : redis-7.2~rc3-1.el8.remi.src.rpm
Build Date  : 2023๋…„ 07์›” 10์ผ (์›”) ์˜คํ›„ 11์‹œ 25๋ถ„ 12์ดˆ
Build Host  : builder.remirepo.net
Relocations : (not relocatable)
Packager    : Remi Collet
Vendor      : Remi's RPM repository <https://rpms.remirepo.net/> #StandWithUkraine
URL         : http://redis.io
Bug URL     : https://forum.remirepo.net/
Summary     : A persistent key-value database

์„ค์น˜

# rpm -ivh ./redis-7.2~rc3-1.el8.remi.x86_64.rpm

ํ™•์ธ

#rpm -qi redis

 


3 ) redis ์„ค์ •ํŒŒ์ผ ๊ถŒํ•œ ๋ณ€๊ฒฝ

ํ˜น์‹œ๋ชฐ๋ผ ์›๋ณธํŒŒ์ผ .bak์œผ๋กœ ๋‚จ๊ฒจ๋‘๊ณ 

[root@username redis]# ll
ํ•ฉ๊ณ„ 232
-rw-r-----. 1 root  root 107559  7์›” 18 13:45 redis.conf
-rw-r-----. 1 redis root 107546  7์›” 10 23:24 redis.conf.bak
-rw-r-----. 1 redis root  14725  7์›” 10 23:24 sentinel.conf
[root@username redis]# ll
ํ•ฉ๊ณ„ 232
-rw-r--r--. 1 redis root 107572  7์›” 18 14:02 redis.conf
-rw-r-----. 1 redis root 107546  7์›” 10 23:24 redis.conf.bak
-rw-r-----. 1 redis root  14725  7์›” 10 23:24 sentinel.conf

redis.conf ๊ถŒํ•œ ๋ถ€์—ฌ

# chmod 750 ./redis.conf

# chown redis ./redis.conf

 


4 ) redis ์„ค์ •ํŒŒ์ผ ์ˆ˜์ • (redis.conf)

redis.conf ํŒŒ์ผ ์ˆ˜์ •

 

์ถ”๊ฐ€ํ•œ ๋‚ด์šฉ bind 0.0.0.0

 

daemonize no ๋ฉด ๋ ˆ๋””์Šค ์„œ๋ฒ„ ์‹คํ–‰ ์‹œ ์„œ๋ฒ„ ๋ฉ”์‹œ์ง€(๋กœ๊ทธ)๊ฐ€ ํ™”๋ฉด์— ํ‘œ์‹œ๋˜๊ณ  ๋ฆฌ๋ˆ…์Šค ํ”„๋กฌํ”„ํŠธ๊ฐ€ ๋–จ์–ด์ง€์ง€ ์•Š๋Š”๋‹ค.
์ฆ‰ ํฌ๊ทธ๋ผ์šด๋“œ(foreground)๋กœ ์‹คํ–‰๋œ๋‹ค.
์ด ๊ฒฝ์šฐ Ctrl+C๋ฅผ ํ•˜๋ฉด ๋ ˆ๋””์Šค ์„œ๋ฒ„๊ฐ€ ์ข…๋ฃŒ๋œ๋‹ค.
๋ ˆ๋””์Šค ์„œ๋ฒ„ ์‹คํ–‰ ์‹œ ๋ฐฑ๊ทธ๋ผ์šด๋“œ(background)๋กœ ์‹คํ–‰ํ•˜๋ ค๋ฉด daemonize yes๋กœ ํ•œ๋‹ค.
๊ทธ๋Ÿฌ๋ฉด ๋ฆฌ๋ˆ…์Šค ํ”„๋กฌํ”„ํŠธ๊ฐ€ ๋ฐ”๋กœ ๋–จ์–ด์ง„๋‹ค.
์ด ๊ฒฝ์šฐ ๊ด€๋ จ ํŒŒ๋ผ๋ฏธํ„ฐ๋กœ pidfile์— ํ”„๋กœ์„ธ์Šค ID๊ฐ€ ์ €์žฅ๋œ๋‹ค.
๊ธฐ๋ณธ์œผ๋กœ /var/run/redis.pid ์ด๋‹ค.
๋ฆฌ๋ˆ…์Šค cat ๋ช…๋ น์œผ๋กœ ํ”„๋กœ์„ธ์Šค ID๋ฅผ ๋ณผ ์ˆ˜ ์žˆ๋‹ค.
๋ ˆ๋””์Šค ์„œ๋ฒ„๊ฐ€ ์—ฌ๋Ÿฌ๊ฐœ ์‹คํ–‰๋˜๋ฉด ์ด redis.pid ํŒŒ์ผ์—๋Š” ๋งˆ์ง€๋ง‰ ์‹คํ–‰๋œ ํ”„๋กœ์„ธ์Šค ID๊ฐ€ ์ €์žฅ๋˜์–ด ์žˆ๋‹ค.
๊ด€๋ จ๋œ ํŒŒ๋ผ๋ฏธํ„ฐ๋กœ logfile์ด ์žˆ๋‹ค.
daemonize๋ฅผ yes๋กœ ํ•˜๋ฉด ๋ฐ˜๋“œ์‹œ logfile์„ ์ง€์ •ํ•ด์„œ ๋ ˆ๋””์Šค ์„œ๋ฒ„ ๋ฉ”์‹œ์ง€(๋กœ๊ทธ)๋ฅผ ๊ธฐ๋กํ•˜๋„๋ก ํ•œ๋‹ค.
๊ทธ๋ ‡์ง€ ์•Š์œผ๋ฉด ์„œ๋ฒ„ ๋ฉ”์‹œ์ง€๊ฐ€ ๋‚ ์•„๊ฐ„๋‹ค.

์–ด๋””์„œ ๊ตฌ๊ธ€๋งํ•œ๊ฒƒ ๊ฐ™์€๋ฐ.. ์˜ˆ์ „์— ์ž‘์„ฑํ•ด๋‘”๊ฑฐ๋ผ ์ถœ์ฒ˜๋ฅผ ๋ชป์ฐพ๊ฒ ๋‹ค๐Ÿ˜ข ์ฃ„์†กํ•ฉ๋‹ˆ๋‹ค.

๋ณ€๊ฒฝํ•œ ๋‚ด์šฉ demonize no → demonize yes

# supervision tree. Options:
#   supervised no      - no supervision interaction
#   supervised upstart - signal upstart by putting Redis into SIGSTOP mode
#   supervised systemd - signal systemd by writing READY=1 to $NOTIFY_SOCKET
#   supervised auto    - detect upstart or systemd method based on
#                        UPSTART_JOB or NOTIFY_SOCKET environment variables

supervised auto ์„ค์ •

 


โŒ redis.conf ์„ค์ • ์ฃผ์˜

!  ๊ฐœ๋ฐœ์ค‘์— redis๋ž‘ ํ†ต์‹ ์ด ์•ˆ๋˜์„œ confํŒŒ์ผ ๋‹ค์‹œ ์ˆ˜์ •ํ•จ

protected-mode

bind

์„ค์ •์˜ ๊ด€๊ณ„

  • protected-mode: yes/no๋กœ ์„ค์ •ํ•œ๋‹ค. Default๋Š” yes์ด๋‹ค.
    • Yes์ด๊ณ  bind๊ฐ€ ์ง€์ •๋˜์–ด ์žˆ์œผ๋ฉด ์ง€์ •ํ•œ IP๋กœ๋งŒ ์ ‘์†ํ•  ์ˆ˜ ์žˆ๋‹ค.
    • Yes์ด๊ณ  bind๊ฐ€ ์ง€์ •๋˜์ง€ ์•Š์•˜์œผ๋ฉด(comment) 127.0.0.1 (local)๋งŒ ์ ‘์†ํ•  ์ˆ˜ ์žˆ๋‹ค.
    • No์ด๊ณ  bind๊ฐ€ ์ง€์ •๋˜์–ด ์žˆ์œผ๋ฉด ์ง€์ •ํ•œ IP๋งŒ ์ ‘์†ํ•  ์ˆ˜ ์žˆ๋‹ค.
    • No์ด๊ณ  bind๊ฐ€ ์ง€์ •๋˜์ง€ ์•Š์•˜์œผ๋ฉด(comment) ๋ชจ๋“  IP๋กœ ์ ‘์†ํ•  ์ˆ˜ ์žˆ๋‹ค.
  • bind: IP๋ฅผ ์ง€์ •ํ•œ๋‹ค. ์ตœ๋Œ€ 16๊ฐœ๊นŒ์ง€ ์ง€์ •ํ•  ์ˆ˜ ์žˆ๋‹ค. ์—ฌ๊ธฐ์„œ ์˜๋ฏธํ•˜๋Š” IP๋Š” ์„œ๋ฒ„์˜ network interface IP์ด๋‹ค. ์ฆ‰, ์„œ๋ฒ„์—์„œ ๋ฆฌ๋ˆ…์Šค ifconfig ๋ช…๋ น์œผ๋กœ ๋‚˜์˜ค๋Š” IP ์ค‘ ์‹ค์ œ๋กœ ํ†ต์‹ ์— ์‚ฌ์šฉ๋˜๋Š” IP๋ฅผ ๋งํ•œ๋‹ค. ํด๋ผ์ด์–ธํŠธ IP๋ฅผ ์˜๋ฏธํ•˜๋Š” ๊ฒƒ์ด ์•„๋‹ˆ๋‹ค. Default๋Š” 127.0.0.1์ด๋‹ค.
  • requirepass: password๋ฅผ ์ง€์ •ํ•œ๋‹ค. Password๋ฅผ ์ง€์ •ํ•˜๋ฉด ์„œ๋ฒ„ ์ ‘์† ํ›„ auth password ๋ช…๋ น์„ ์šฐ์„  ์‹คํ–‰ํ•ด์•ผ ํ•œ๋‹ค. 

์ฒ˜์Œ ์„ค์ • ๋•Œ

bind 127.0.0.1 -::1bind 0.0.0.0

protected-mode yes

์ด๋ ‡๊ฒŒ ์„ค์ •๋˜์–ด์žˆ์œผ๋‹ˆ ๋‚ด ๋กœ์ปฌ๊ฐœ๋ฐœํ™˜๊ฒฝ์—์„œ 202๋ฅผ ๋ชป๋ถ™์Œ

→ ์™œ๋ƒ? ๋ณด์•ˆ๋ชจ๋“œ yes ์ด๊ณ  bind์„ค์ •์ด ์žˆ๊ณ  ๋‚ด IP๋Š” ์—†์—ˆ๊ธฐ ๋•Œ๋ฌธ์—

๊ทธ๋ž˜์„œ bind๋ฅผ ๋‹ค ์ฃผ์„์ฒ˜๋ฆฌํ•˜๊ณ  no ๋กœ ๋ณ€๊ฒฝํ•จ

#bind 127.0.0.1 -::1#bind 0.0.0.0

protected-mode no

→ ์ด๋Ÿฌ๋‹ˆ๊นŒ ๋‚ด ๋กœ์ปฌ์—์„œ ์„œ๋ฒ„ ์ ‘์†์ด ๊ฐ€๋Šฅํ–ˆ๋‹ค

์ด๊ฑด 202 ๊ฐœ๋ฐœ์„œ๋ฒ„๋‹ˆ๊นŒ bind์™€ ๋ณด์•ˆ๋ชจ๋“œ๋ฅผ ํ’€์–ด๋ฒ„๋ฆฐ๊ฒƒ์ด๊ณ 

์šด์˜ํ™˜๊ฒฝ์—์„œ ํ•˜๋ ค๋ฉด

bind ์ง€์ •์•ˆํ•˜๊ณ  ๋ณด์•ˆ๋ชจ๋“œ yes๋กœ ํ•ด์•ผํ•  ๊ฒƒ ๊ฐ™๋‹ค.

 

 


5 ) redis ์„œ๋น„์Šค ๊ธฐ๋™

[root@username redis]# systemctl status redis
โ— redis.service - Redis persistent key-value database
   Loaded: loaded (/usr/lib/systemd/system/redis.service; enabled; vendor preset: disabled)
  Drop-In: /etc/systemd/system/redis.service.d
           โ””โ”€limit.conf
   Active: active (running) since Tue 2023-07-18 14:22:21 KST; 11min ago
 Main PID: 18402 (redis-server)
   Status: "Ready to accept connections"
    Tasks: 6 (limit: 36568)
   Memory: 7.6M
   CGroup: /system.slice/redis.service
           โ””โ”€18402 /usr/bin/redis-server 0.0.0.0:6379

 7์›” 18 14:22:21 username.localdomain systemd[1]: Starting Redis persistent key-value database...
 7์›” 18 14:22:21 username.localdomain systemd[1]: Started Redis persistent key-value database.
[root@username redis]# systemctl enable redis
[root@username redis]# ps -ef | grep redis
root        1659    1656  0  7์›”17 ?      00:00:00 runsv redis
root        1664    1659  0  7์›”17 ?      00:00:00 svlogd -tt /var/log/gitlab/redis
root        1683    1656  0  7์›”17 ?      00:00:00 runsv redis-exporter
root        1703    1683  0  7์›”17 ?      00:00:00 svlogd -tt /var/log/gitlab/redis-exporter
redis      18402       1  0 14:22 ?        00:00:01 /usr/bin/redis-server 0.0.0.0:6379
root       18623   18479  0 14:40 pts/3    00:00:00 grep --color=auto redis

 

๊ธฐ๋™

# systemctl start redis

ํ™•์ธ

# systemctl status redis

 

 


6 ) redis ํ…Œ์ŠคํŠธ

[root@username redis]# redis-cli -p 6379
127.0.0.1:6379> ping
PONG
127.0.0.1:6379> info
์ค„์ค„์ด๋‚˜์˜ด


์ ‘์†

# redis-cli -p 6379

# redis-cli

pingํ•˜๋ฉด pongํ•ด์คŒ ใ…‹ใ…‹ ๊ท€์—ฝ๋‹ค

 

127.0.0.1:6379> set key1 val1
OK
127.0.0.1:6379> get key1
"val1"
127.0.0.1:6379> del key1
(integer) 1
  • get key - key์— ํ•ด๋‹นํ•˜๋Š” value ๊ฐ€์ ธ์˜ค๊ธฐ
  • set key value - key์— value๋ฅผ ์ €์žฅ
  • del key - key๋ฅผ ์‚ญ์ œ

 


 

๊ธฐํƒ€ ) ๊ฐ์ข…  Redis ๋ช…๋ น์–ด

  • ์ €์žฅ > set [key] [value]
  • key ์กฐํšŒ > keys [pattern]
  • ๋ชจ๋“  key ์กฐํšŒ > keys *
  • key ์กด์žฌ ํ™•์ธ > exist [key] (์žˆ์œผ๋ฉด 1, ์—†์œผ๋ฉด 0)
  • key ์‚ญ์ œ > del [key]
  • key ์ˆ˜์ • > rename [key] [newKey]
  • value ์กฐํšŒ > get [key]
  • value ์ˆ˜์ • > set [key] [value]
  • ๋งŒ๋ฃŒ์‹œ๊ฐ„ ํ™•์ธ(์ดˆ) > ttl [key]
    • ๋งŒ๋ฃŒ๊ธฐํ•œ์ด ์—†๋Š” ๊ฒฝ์šฐ -1์„ ๋ฐ˜ํ™˜
    • ํ‚ค๊ฐ€ ์—†์œผ๋ฉด -2๋ฅผ ๋ฐ˜ํ™˜

 

 

http://redisgate.jp/redis/server/protected-mode.php

 

PROTECTED-MODE Redis

protected-mode Redis parameter PROTECTED-MODE Redis PROTECTED-MODE protected-mode๋Š” ๋ ˆ๋””์Šค ์„œ๋ฒ„ ๋ฒ„์ „ 3.2.0 ๋ถ€ํ„ฐ redis.conf์— ์ถ”๊ฐ€๋œ ํŒŒ๋ผ๋ฏธํ„ฐ์ด๋‹ค.   ์ด๊ฒƒ์€ ๋ณด์•ˆ์˜ ํ•œ ์š”์†Œ์ด๋‹ค.   ์ด ๊ธ€์—์„œ๋Š” protected-mode์™€ ๊ฐ™์ด ๋ณด

redisgate.jp