2022.05.18 ใRedis DB ์ ์ฉใ
์คํ๋ง ๋ถํธ ํ๋ก์ ํธ๋ฅผ ํ๋ฉฐ ๋ก๊ทธ์ธ API๊น์ง๋ jwt ํ ํฐ์ ์ ๋ฌํ๋ ๋ฐฉ์์ผ๋ก ๊ตฌํ์ ์ํ๋ค.
ํ์ง๋ง ๋ฌธ์ ๋ ๋ก๊ทธ์์์ด๋ค. jwt ํ ํฐ ์์ฒด๋ ํด๋ผ์ด์ธํธ์์ ๋ณด๊ดํ๊ธฐ ๋๋ฌธ์ ์๋ฒ๊ฐ ์์ฒด์ ์ผ๋ก ์ญ์ ์ํฌ ์ ์๋ค. ์ธ์ ์ ์ฌ์ฉ ์ ์๋ฒ๊ฐ ์ธ์ DB์ ์ ์ฅํ๊ณ ์๊ธฐ ๋๋ฌธ์ ์ธ์ ์ ์ญ์ ํ๋ฉด ๊ทธ๋ง์ด์ง๋ง ํ ํฐ์ ๊ทธ๋ ๊ฒ ๋ชป ํ๋ค. ๊ทธ๋์ Redis DB๋ผ๋ ์ธ๋ฉ๋ชจ๋ฆฌ DB๋ฅผ ์ด์ฉํด ๋ณด๊ธฐ๋ก ํ๋ค.
์ฒ์ ๋ค์ด๋ณด๋๋ฐ DB๋ ์ฌ๋ฌ ๊ฐ์ง ์ข ๋ฅ๊ฐ ์๋๋ฐ ์ด ์ธ๋ฉ๋ชจ๋ฆฌ DB๋ ๋ค๋ฅธ DBMS์ ๋น๊ตํ์ฌ ์ด๋ค ์ฑ๊ฒฉ์ ๊ฐ์ง๋์ง ๊ทธ๊ฑธ ์ ๋ฆฌํ๊ณ ์ ์ฉํด๋ณด๋ ํ๋ฃจ๋ฅผ ๋ณด๋ด๊ฒ ๋ ๊ฒ ๊ฐ๋ค.
Redis DB
Key & Value ๊ตฌ์กฐ์ ๋น์ ํ ๋ฐ์ดํฐ๋ฅผ ์ ์ฅํ๊ณ ๊ด๋ฆฌํ๊ธฐ ์ํ ์คํ ์์ค ๊ธฐ๋ฐ์ ๋น ๊ด๊ณํ DBMS
์บ์, DB ๋ฑ์ผ๋ก ์ฌ์ฉํ๋ฉฐ ์ธ๋ฉ๋ชจ๋ฆฌ ๋ฐ์ดํฐ ๊ตฌ์กฐ๋ฅผ ๊ฐ์ง ์ ์ฅ์์ด๋ค.
์ธ๋ฉ๋ชจ๋ฆฌ ๋ฐ์ดํฐ๋ฒ ์ด์ค
๋์คํฌ๊ฐ ์๋ ์ฃผ ๋ฉ๋ชจ๋ฆฌ์ ๋ชจ๋ ๋ฐ์ดํฐ๋ฅผ ๋ณด์ ํ๊ณ ์๋ ๋ฐ์ดํฐ๋ฒ ์ด์ค
์ฅ์ : ๋์คํฌ ๊ฒ์๋ณด๋ค ์๋ฃ ์ ๊ทผ์ด ํจ์ฌ ๋น ๋ฆ
๋จ์ : ํ๋ฐ์ฑ์ ๋
=> ์ง์์ฑ์ ๋ณด์ฅํ๊ธฐ ์ํด ๋ก๊ทธ ํ์ผ๋ก DBMS ๊ตฌ์กฐ๋ฅผ ๋ชจ๋ ์ฌ๊ตฌ์ถํ๊ธฐ๋ ํจ
์ฐธ์กฐ : https://velog.io/@rudwnd33/TIL-10%EC%9B%94-27%EC%9D%BC
[TIL] 10์ 27์ผ: ์ธ๋ฉ๋ชจ๋ฆฌ DB(In-memory DB)
์ธ๋ฉ๋ชจ๋ฆฌ DB
velog.io
๋ฐ์ดํฐ๋ฒ ์ด์ค๊ฐ ์๋๋ฐ Redis ๊ฐ์ ์ธ๋ฉ๋ชจ๋ฆฌ ๋ฐ์ดํฐ ๊ตฌ์กฐ ์ ์ฅ์๋ฅผ ์ฌ์ฉํ๋ ์ด์ ?
DataBase ์์ฒด๋ ๋ฐ์ดํฐ๋ฅผ ๋ฌผ๋ฆฌ์ ์ธ ๊ณต๊ฐ์ธ ๋์คํฌ์ ์ง์ ์ฐ๋ฏ๋ก ๋ฐ์ดํฐ์ ์์ค์ด ์๋ค. ํ์ง๋ง ๋งค๋ฒ ๋์คํฌ์ ์ ๊ทผํ๋ฏ๋ก ์ ์ ๊ฐ ๋ง์์ง์๋ก ๋ถํ๊ฐ ๋ฐ์ํด ๋๋ ค์ง.
์๋น์ค ์ด์ ์ด๋ฐ์ด๊ฑฐ๋, ์ ์ ๊ฐ ์ ๊ณ , ๊ท๋ชจ๊ฐ ์์ ์๋น์ค ๊ฐ์ ๊ฒฝ์ฐ๋ DB๋ก๋ ๋ฌด๋ฆฌ๊ฐ ๊ฐ์ง ์์ง๋ง, ์ฌ์ฉ์๊ฐ ๋ง์์ง ๊ฒฝ์ฐ ๊ณผ๋ถํ์ ๊ฐ๋ฅ์ฑ์ด ์ปค์ง๋ฏ๋ก ์บ์ ์๋ฒ๋ฅผ ๋์ ํ๋ค. ์ด ์บ์ ์๋ฒ๋ก ์ฌ์ฉ ๊ฐ๋ฅํ ๊ฒ์ด Redis DB!
Redis ํน์ง
- Key, Value ๊ตฌ์กฐ๋ก ์ฟผ๋ฆฌ๊ฐ ํ์ ์๋ค.
- ๋ฉ๋ชจ๋ฆฌ์์ ๋ฐ์ดํฐ๋ฅผ ์ฒ๋ฆฌํ๊ธฐ ๋๋ฌธ์ ์๋๊ฐ ๋น ๋ฆ
- ์๋ฃ๊ตฌ์กฐ ์ง์
- String : ket - value ๊ตฌ์กฐ
- Sets : String์ ์งํฉ, ์ฌ๋ฌ ๊ฐ์ ๊ฐ์ ํ๋์ value์ ์ ์ฅ ๊ฐ๋ฅ
- Sorted Sets : ์ค๋ณต ๊ฐ์ด ๋ค์ด๊ฐ์ง ์๋ Set์ ์ ๋ ฌ์ ์ ์ฉํ ๊ตฌ์กฐ
- Lists : Array ํ์์ ๋ฐ์ดํฐ ๊ตฌ์กฐ List์ ๋ง์ฐฌ๊ฐ์ง์
- ์ฑ๊ธ ์ค๋ ๋ ํ์ : ํ ๋ฒ์ ํ๋์ ๋ช ๋ น๋ง ์ฒ๋ฆฌ ๊ฐ๋ฅ, ํ์ง๋ง ์๋๊ฐ ์์ฒญ ๋น ๋ฅด๋ค.
์ด์ ์ง์ ์ ์ฉ์์ผ ๋ณด์
์ผ๋จ Redis ์ค์น!
https://github.com/microsoftarchive/redis/releases
Releases · microsoftarchive/redis
Redis is an in-memory database that persists on disk. The data model is key-value, but many different kind of values are supported: Strings, Lists, Sets, Sorted Sets, Hashes - microsoftarchive/redis
github.com
=> Redis ์คํ ํ์ธ
=> ๊ธฐ๋ณธ ์คํ ํ ์คํธ ์๋ต์ด ์์ฃผ ์๋๋ค
=> set, get์ ์ด์ฉํด ์์ด์คํฌ๋ฆผ์ด๋ผ๋ ๋ฐ์ดํฐ๋ฅผ ์ ์ฅํ๊ณ ๊ฐ์ ธ์๋ค. ์ ๊ธฐํ๊ตฌ๋จผ.
์ด์ Redis๊ฐ ์ ์คํ๋๋ Springboot์ ์ฐ๋ํด๋ณด์.
=> ์์กด์ฑ ์ถ๊ฐ
=> ํ๋กํผํฐ ์ถ๊ฐ
@Configuration
public class RedisConfig {
@Value("{spring.redis.host}")
private String host;
@Value("{spring.redis.port}")
private int port;
@Bean
public RedisConnectionFactory redisConnectionFactory() {
RedisStandaloneConfiguration redisStandaloneConfiguration =
new RedisStandaloneConfiguration();
redisStandaloneConfiguration.setHostName(host);
redisStandaloneConfiguration.setPort(port);
return new LettuceConnectionFactory(redisStandaloneConfiguration);
}
@Bean
public RedisTemplate<String, Object> redisTemplate() {
RedisTemplate<String, Object> redisTemplate =
new RedisTemplate<>();
redisTemplate.setConnectionFactory(redisConnectionFactory());
redisTemplate.setKeySerializer(new StringRedisSerializer());
redisTemplate.setValueSerializer(new StringRedisSerializer());
return redisTemplate;
}
}
Configuration ์ถ๊ฐ
๋ก๊ทธ์ธ ์ฒ๋ฆฌ ์
๋จผ์ ํ ํฐ์ ๋ฐ๊ธํ๊ณ ,
ํ ํฐ์ RedisDB์ ์์ด๋ ์ด๋ฆ์ผ๋ก ์ ์ฅํ๋ค.
๋ก๊ทธ์์ ์ฒ๋ฆฌ ์
=> ํค๋ฅผ ์ญ์ ํ๋ฉด ๋๋ค.
๊ถํ ์ค์ ์ ๋น ๋ฅธ ์์ผ ๋ด์ ํํฐ ์ธํฐ์ ํฐ๋ก ๊ตฌํํด๋ด์ผ๊ฒ ๋ค.