1) Redis ์ค์น ๋ฐ ๋ช ๋ น์ด ์ค์ต
(1) ๊ธฐ๋ณธ ํ๊ฒฝ
- Rocky Linux release 8.8 (Green Obsidian)
- x86 ์์คํ
(2) Repository๋ฅผ ์ด์ฉํ Redis ์ค์น
[root@localhost ~]# dnf install –y redis
[root@localhost ~]# systemctl enable redis
[root@localhost ~]# systemctl restart redis
- ๋ณดํต Repository์๋ ์ต์ ๋ฒ์ ์ด ์๋ Stable ๋ฒ์ ์์ฃผ๋ก ์ ๋ฐ์ดํธ๋๊ธฐ ๋๋ฌธ์ ์ต์ ๋ฒ์ ์ ์ฌ์ฉํ๋ ค๋ฉด ์์ค ์ปดํ์ผํ์ฌ ์ค์นํด์ผ ํฉ๋๋ค.
- ์ง์ ์์ค ์ปดํ์ผํ์ฌ ์ค์นํ๋ ๊ณผ์ ์ด ๊ณ ๋๊ธฐ ๋๋ฌธ์ Repo์ ์ฌ๋ผ์จ ๋ฒ์ ์ ์ฌ์ฉํ๊ฒ ์ต๋๋ค ^^7
(3) Redis ์ค์
[root@localhost ~]# cat /etc/redis.conf | grep -Ev '^#|^$' | wc -l
62
→ ๊ธฐ๋ณธ์ผ๋ก ์ค์ ๋ ์ต์
์ด ๋๋ต 62๊ฐ ์ ๋๋ก ์ถ์ ๋๋.. ์ค์ ํ์ผ์ ์ดํด๋ณธ ๋ค์ ์์ ํด์ผ ํ ๊ฐ๋ง ์๋์ง ํ์ธํด๋ด
์๋ค.
66 # IF YOU ARE SURE YOU WANT YOUR INSTANCE TO LISTEN TO ALL THE INTERFACES
67 # JUST COMMENT THE FOLLOWING LINE.
68 # ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
69 bind 127.0.0.1
→ ํฐ์บฃ ์๋ฒ์ ํต์ ํ ์์ ์ด๋ฏ๋ก ๋ฃจํ๋ฐฑ ์์ดํผ๊ฐ ์๋ ์๋ฒ์ ํ ๋นํ IP๋ก ์ ์ด์ค์๋ค.
# Accept connections on the specified port, default is 6379 (IANA #815344).
91 # If port 0 is specified Redis will not listen on a TCP socket.
92 port 6379
→ ํฌํธ๋ ๊ธฐ๋ณธ์ผ๋ก ์ค์ ๋ ๊ฒ์ ์ฌ์ฉํฉ๋๋ค!
112 # Close the connection after a client is idle for N seconds (0 to disable)
113 timeout 0
→ ์ฐ๊ฒฐ๋ ํด๋ผ์ด์ธํธ์ด idle ๋๊ธฐ ์๊ฐ ์ค์ ํ๋ ์ต์
์ผ๋ก TCP ์์ผ ๋ํ ๋ฉ๋ชจ๋ฆฌ๋ฅผ ์ฐจ์งํ๊ธฐ ๋๋ฌธ์ ์ ์ ํ๊ฒ 300์ผ๋ก ์ค์ ํด์ค๋๋ค. (์ด ๋จ์)
→ ์ค์ ํ ์๊ฐ๋์ ์ก ์์ ์ด ๋ฐ์ํ์ง ์์ผ๋ฉด ํด๋ผ์ด์ธํธ์ ์ฐ๊ฒฐ์ ๋๊ธฐ ๋๋ฌธ์ 0์ผ๋ก ์ค์ ํ๋ฉด ํด๋น ์ต์
์ ๋นํ์ฑํ ํ ์ ์์ต๋๋ค.
→ ๋ฌผ๋ก , ํ์ฌ๋ ์ฐ์ตํ๋ ์ฉ๋์ด๊ธฐ ๋๋ฌธ์ ์ค๋ฌด์์๋ BMT๋ฅผ ํตํด ์ ์ ํ ๊ฐ์ ์ฐพ์ ํ์๊ฐ ์์ต๋๋ค.
128 # A reasonable value for this option is 300 seconds, which is the new
129 # Redis default starting with Redis 3.2.1.
130 tcp-keepalive 300
→ TCP KeepAlive ์ต์
์ผ๋ก ๊ธฐ๋ณธ ๊ฐ์ ๊ทธ๋๋ก ์์๋ค.
→ ์ฐธ๊ณ ๋ก TCP KeepAlive ์ต์
์ ์ค์ ํ ์๊ฐ๋งํผ ๊ธฐ๋ค๋ฆฐ ํ, orphan socket์ด ์๋ค๋ฉด ์ ๊ฑฐํด์ฃผ๊ธฐ ๋๋ฌธ์ ์ ์ ํ ๊ฐ์ ์ฐพ์ ํ์๊ฐ ์์ต๋๋ค.
134 # By default Redis does not run as a daemon. Use 'yes' if you need it.
135 # Note that Redis will write a pid file in /var/run/redis.pid when daemonized.
136 daemonize no
→ yes๋ก ์ค์ ํด์ค์๋ค.
# Warning: since Redis is pretty fast an outside user can try up to
504 # 150k passwords per second against a good box. This means that you should
505 # use a very strong password otherwise it will be very easy to break.
506 #
507 # requirepass foobared
→ Redis ์๋ฒ์ ์ ์ํ๊ธฐ ์ํ ๋น๋ฐ๋ฒํธ๋ฅผ ์ค์ ํ๋ ์ต์
์ผ๋ก ์ฃผ์์ ๋ณด๋ฉด ์๊ฒ ์ง๋ง ๊ฐ๋จํ ๋น๋ฐ๋ฒํธ ๋ง๊ณ ํน์๋ฌธ์, ์ซ์, ์๋ฌธ์ ๋ฑ์ ์กฐํฉํ์ฌ
๋ณต์กํ๊ฒ ์ค์ ํด์ค์๋ค.
→ ๋ฌผ๋ก , ํ์ฌ๋ ์ฐ์ตํ๋ ๋จ๊ณ์ด๋ฏ๋ก ์ค์ ์ํด๋ ์๊ด ์์ต๋๋ค!
- ํ์ฌ๋ Redis๋ฅผ ์์๋ณด๊ณ ์ฐ์ตํ๋ ๋จ๊ณ์ด๋ฏ๋ก ์ฌ๊ธฐ๊น์ง๋ง ์ค์ ํ๊ฒ ์ต๋๋ค.
- ์ฐธ๊ณ ๋ก Redis ์ค์ ํ์ผ์ ํฌ๊ฒ General, Snapshot, AOF, Replication, Clients, Cluster, Network, Module, ETC ๋ฑ์ ์์ญ์ผ๋ก ๋๋์ด์ ธ ์๊ธฐ ๋๋ฌธ์ ์ค์ ํ์ผ์ ๊ดํด์๋ ๋์ค์ ์์ธํ Research ํด๋ด์ผ ํ ๊ฒ ๊ฐ๋ค์.
(4) Redis ๋ช ๋ น์ด ์ค์ต
- Redis๋ ์ด์ ๊ฒ์๊ธ์์๋ ๋ค๋ค๋ฏ์ด Key-Value ํํ๋ก ๋ฐ์ดํฐ๋ฅผ ์ ์ฅํ๋ ๋ฐ์ดํฐ๋ฒ ์ด์ค์ด๊ธฐ ๋๋ฌธ์ ๊ธฐ๋ณธ์ ์ผ๋ก ๋ฐ์ดํฐ๋ฅผ ๋ค๋ฃจ๋ CRUD ์ฐ์ฐ์ ๊ดํ ๋ช ๋ น์ด๋ฅผ ์ค์ ์ ์ผ๋ก ์์๋ณผ ์์ ์ ๋๋ค.
Redis ์ ์
[root@localhost ~]# redis-cli
127.0.0.1:6379> auth “password”
OK
→ Password๋ฅผ ์ค์ ํ์ง ์์์ผ๋ฉด auth ๋ถ๋ถ์ ํ์ง ์์๋ ๋๋ค!
๋ฐ์ดํฐ ์ ์ฅ - Create
# set key value : key, value ์ ์ฅ
127.0.0.1:6379> set "1" "Hello World!!"
OK
→ key๋ “1” ์ด๊ณ value๋ “Hello World!!” ์ด๋ค.
# mset key value [key value...] : ์ฌ๋ฌ ๊ฐ์ key, value๋ฅผ ํ ๋ฒ์ ์ ์ฅ
127.0.0.1:6379> mset "2" "second" "3" "third"
OK
→ key๋ “2”, “3” ์ด๊ณ value๋ “second”, “third” ์ด๋ค.
# setex key seconds value : key, seconds, value ์ ์ฅํ๋ฉฐ ์ค์ ํ ์๊ฐ์ด ์ง๋๋ฉด ๋ฉ๋ชจ๋ฆฌ ์์์ ์ ๊ฑฐ๋ฉ๋๋ค.
127.0.0.1:6379> setex "4" 10 "fourth"
OK
→ key๋ “4” ์ด๊ณ value๋ “fourth” ์ด์ง๋ง “10”์ด ํ์ ์ ๊ฑฐ๋๋ค.
๋ฐ์ดํฐ ๊ฒ์ - Read
# keys * : ํ์ฌ ์ ์ฅ๋ key ๊ฐ๋ค์ ๋ชจ๋ ํ์ธ
127.0.0.1:6379> keys *
1) "1"
2) "2"
3) "3"
→ ์ ์ฅ๋ ๋ฐ์ดํฐ๊ฐ ๋ง์ ๊ฒฝ์ฐ, ๋ชจ๋ ๋ฐ์ดํฐ๋ฅผ Scanํ๊ธฐ ๋๋ฌธ์ ๋ถํ๊ฐ ๊ฑธ๋ฆฌ๊ฒ ๋๋ฏ๋ก ์ด์์ค์ธ ์๋น์ค์์ ์ ๋ ์ฌ์ฉํ์ง ์๋๋ค!
# get key : ์ง์ ํ key์ ํด๋นํ๋ value๋ฅผ ์กฐํ
127.0.0.1:6379> get 1
"Hello World!!"
# mget key [key...] : ์ฌ๋ฌ ๊ฐ์ key์ ํด๋นํ๋ value๋ฅผ ์กฐํ
127.0.0.1:6379> mget "1" "2"
1) "Hello World!!"
2) "second"
# ttl key : key์ ๋ง๋ฃ ์๊ฐ์ ์กฐํ (์ด ๋จ์)
127.0.0.1:6379> ttl 3
(integer) -1
127.0.0.1:6379> ttl 4
(integer) 95
127.0.0.1:6379> ttl 5
(integer) -2
→ -1 ๊ฐ์ ๋ง๋ฃ ์๊ฐ ์์์ ์๋ฏธํ๊ณ , -2 ๊ฐ์ ๋ฐ์ดํฐ๊ฐ ์์์ ์๋ฏธํ๋ค.
# pttl key : key์ ๋ง๋ฃ ์๊ฐ์ ์กฐํ (๋ฐ๋ฆฌ ์ด ๋จ์)
127.0.0.1:6379> pttl 4
(integer) 84158
# type key : ํด๋น key ์ value ํ์
ํ์ธ
127.0.0.1:6379> type 3
string
๋ฐ์ดํฐ ์์ - Update
# rename key newKey : key ์ด๋ฆ์ ๋ณ๊ฒฝ
127.0.0.1:6379> keys *
1) "1"
2) "2"
3) "3“
127.0.0.1:6379> rename "1" "first"
OK
127.0.0.1:6379> keys *
1) "2"
2) "3"
3) "first"
# expire key seconds : ํด๋น key ๊ฐ์ ๋ง๋ฃ ์๊ฐ ์ค์
127.0.0.1:6379> ttl "first"
(integer) -1
127.0.0.1:6379> expire "first" 100
(integer) 1
127.0.0.1:6379> ttl "first"
(integer) 97
๋ฐ์ดํฐ ์ญ์ - Delete
# del key [key...] : ํด๋น key ๋ค์ ์ญ์
127.0.0.1:6379> keys *
1) "2"
2) "3"
3) "first“
127.0.0.1:6379> del "first"
(integer) 1
127.0.0.1:6379> keys *
1) "2"
2) "3"
๊ธฐํ
# randomkey : ๋๋คํ key ๋ฐํ
127.0.0.1:6379> randomkey
"3“
127.0.0.1:6379> randomkey
"2"
# ping : ์ฐ๊ฒฐ ์ฌ๋ถ ํ์ธ ("ping" ๋ง ์
๋ ฅํ๋ฉด "PONG" ์ด๋ผ๋ ์๋ต์ด ์ด)
127.0.0.1:6379> ping
PONG
→ ์ฐ๊ฒฐ์ด ์ ๋์๋ค๋ฉด “PONG” ์ด๋ผ๋ ์๋ต ๋ฉ์์ง๊ฐ ์ถ๋ ฅ๋๋ค.
# dbsize : ํ์ฌ ์ฌ์ฉ์ค์ธ DB์ key ์ ๊ฐฏ์ ๋ฆฌํด
127.0.0.1:6379> keys *
1) "2"
2) "3“
127.0.0.1:6379> dbsize
(integer) 2
# flushall : Redis ์๋ฒ์ ๋ชจ๋ ๋ฐ์ดํฐ ์ญ์
127.0.0.1:6379> keys *
1) "2"
2) "3“
127.0.0.1:6379> flushall
OK
127.0.0.1:6379> keys *
(empty list or set)
# flushdb : ํ์ฌ ์ฌ์ฉ์ค์ธ DB์ ๋ชจ๋ ๋ฐ์ดํฐ ์ญ์
[Reference]
๋ฐ์ํ
'๐จโ๐ป Back End > Redis' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
NoSQL์ด๋ ๋ฌด์์ธ์ง ๊ฐ๋จํ๊ฒ ์์๋ณด์! (1) | 2023.09.01 |
---|---|
Redis (Remote Dictionary Server)์ ๋ํด ์์๋ณด์! (0) | 2023.09.01 |