Community

๐Ÿ•Š๏ธ Java Redis์ง๋ ฌํ™” ์‚ผ์ด์‚ฌ: Json, String, JDK

์ด๋ฒˆ ํฌ์ŠคํŒ…์—์„œ๋Š” Java์—์„œ Redis ์ง๋ ฌํ™” ์‹œ ์ž์ฃผ ์‚ฌ์šฉํ•˜๋Š” ๋ฐฉ๋ฒ•๋“ค์„ ๋น„๊ตํ•˜๊ณ  ๊ฐ ๋ฐฉ์‹์˜ ํŠน์ง•๊ณผ ์˜ˆ์ œ๋ฅผ ์„ค๋ช…ํ•ฉ๋‹ˆ๋‹ค. ย  JdkSerializationRedisSerializer JDK ๊ธฐ๋ณธ ์ง๋ ฌํ™”๋Š” Java ํ‘œ์ค€ ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ์—์„œ ์ œ๊ณตํ•˜๋Š” java.io.Serializable ์ธํ„ฐํŽ˜์ด์Šค๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ ๊ฐ์ฒด๋ฅผ ๋ฐ”์ดํŠธ ์ŠคํŠธ๋ฆผ์œผ๋กœ ๋ณ€ํ™˜ํ•˜๋Š” ๋ฐฉ์‹์ž…๋‹ˆ๋‹ค. ์ด ๋ฐฉ์‹์€ ์‚ฌ์šฉํ•˜๊ธฐ ํŽธ๋ฆฌํ•˜์ง€๋งŒ, ๋‹ค์†Œ ๋ฌด๊ฑฐ์šด ์˜ค๋ฒ„ํ—ค๋“œ๊ฐ€ ์žˆ์„ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.ย  ย  ์žฅ์ : * Java ๋‚ด์žฅ ๊ธฐ๋Šฅ์ด๋ผ ๋ณ„๋„์˜ ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ ํ•„์š” ์—†์Œ * ๋ณต์žกํ•œ ๊ฐ์ฒด ๊ตฌ์กฐ๋„ ์‰ฝ๊ฒŒ ์ง๋ ฌํ™” ๊ฐ€๋Šฅ ๋‹จ์ : * ์ง๋ ฌํ™”๋œ ๋ฐ์ดํ„ฐ๊ฐ€ ์ƒ๋Œ€์ ์œผ๋กœ ํผ * ์ง๋ ฌํ™”/์—ญ์ง๋ ฌํ™” ๊ณผ์ •์ด ๋น„๊ต์  ๋А๋ฆผ public class RedisConfig { public RedisTemplate redisTemplate() { RedisTemplate template = new RedisTemplate(); template.setValueSerializer(new JdkSerializationRedisSerializer()); // ๊ธฐํƒ€ ์„ค์ • return template; } }ย  ์ €์žฅ๋˜๋Š” ํ˜•ํƒœ 127.0.0.1:6379> GET user:2 "\xac\xed\x00\x05sr\x00\x04User...\x78\x6f" ย  StringRedisSerializer String ์ง๋ ฌํ™”๋Š” ๋ฐ์ดํ„ฐ๋ฅผ ๋ฌธ์ž์—ด ํ˜•ํƒœ๋กœ ์ €์žฅํ•˜๋Š” ๋ฐฉ์‹์ž…๋‹ˆ๋‹ค. ์ด ๋ฐฉ์‹์€ ๊ฐ„๋‹จํ•˜๊ณ  ๊ฐ€๋ณ๊ธฐ ๋•Œ๋ฌธ์— ๊ธฐ๋ณธ์ ์ธ ํ‚ค-๊ฐ’ ์ €์žฅ์— ์ ํ•ฉํ•ฉ๋‹ˆ๋‹ค. ์ง๋ ฌํ™” ๊ณผ์ • ์—†์ด ๋‹จ์ˆœํžˆ ๋ฐ์ดํ„ฐ๋ฅผ ๋ฌธ์ž์—ด๋กœ ๋ณ€ํ™˜ํ•˜์—ฌ Redis์— ์ €์žฅํ•ฉ๋‹ˆ๋‹ค. ย  ์žฅ์ : * ์†๋„๊ฐ€ ๋น ๋ฅด๊ณ  ๊ฐ‘๋ฒผ์›€ * ๋ฐ์ดํ„ฐ๊ฐ€ ์‚ฌ๋žŒ์ด ์ฝ์„ ์ˆ˜ ์žˆ์–ด ๋””๋ฒ„๊น…์ด ์‰ฌ์›€ ๋‹จ์ : * ๊ฐ์ฒด ์ง๋ ฌํ™”์— ๋น„ํ•ด ์œ ์—ฐ์„ฑ์ด ๋–จ์–ด์ง * ๋ณต์žกํ•œ ๋ฐ์ดํ„ฐ ๊ตฌ์กฐ์—๋Š” ์ ํ•ฉํ•˜์ง€ ์•Š์Œย  import org.springframework.data.redis.serializer.StringRedisSerializer; import org.springframework.data.redis.core.RedisTemplate; public class RedisConfig { public RedisTemplate redisTemplate() { RedisTemplate template = new RedisTemplate(); template.setKeySerializer(new StringRedisSerializer()); template.setValueSerializer(new StringRedisSerializer()); // ๊ธฐํƒ€ ์„ค์ • return template; } } ์ €์žฅ๋˜๋Š” ํ˜•ํƒœ 127.0.0.1:6379> GET message "Hello, World!" ย  GenericJackson2JsonRedisSerializer JSON ์ง๋ ฌํ™”๋Š” ๊ฐ์ฒด๋ฅผ JSON ๋ฌธ์ž์—ด๋กœ ๋ณ€ํ™˜ํ•˜๋Š” ๋ฐฉ์‹์ž…๋‹ˆ๋‹ค. JSON์€ ๊ฐ€๋ณ๊ณ  ์‚ฌ๋žŒ์ด ์ฝ์„ ์ˆ˜ ์žˆ์œผ๋ฉฐ ๋‹ค์–‘ํ•œ ์–ธ์–ด์™€ ํ˜ธํ™˜์ด ์ž˜ ๋ฉ๋‹ˆ๋‹ค. Jackson ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ ๋“ฑ์„ ํ™œ์šฉํ•ด ์†์‰ฝ๊ฒŒ ๊ตฌํ˜„ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ย  ์žฅ์ : * ๋ฐ์ดํ„ฐ ํฌ๋งท์ด ๊ฐ€๋ณ๊ณ  ์‚ฌ๋žŒ์ด ์ฝ๊ธฐ ์‰ฌ์›€ * ๋‹ค์–‘ํ•œ ์–ธ์–ด ๊ฐ„ ํ˜ธํ™˜์„ฑ ์šฐ์ˆ˜ * ๊ฐ์ฒด ํƒ€์ž…์„ ์†์‰ฝ๊ฒŒ ๋ณต์› ๊ฐ€๋Šฅ ๋‹จ์ : * ๋ฐ์ดํ„ฐ ํฌ๊ธฐ๊ฐ€ ํ…์ŠคํŠธ ๊ธฐ๋ฐ˜์ด๋ผ ๋‹ค์†Œ ํด ์ˆ˜ ์žˆ์Œ * ์ด์ง„ ๋ฐ์ดํ„ฐ๋ณด๋‹ค๋Š” ๋А๋ฆผ import org.springframework.data.redis.serializer.GenericJackson2JsonRedisSerializer; import org.springframework.data.redis.core.RedisTemplate; public class RedisConfig { public RedisTemplate redisTemplate() { RedisTemplate template = new RedisTemplate(); template.setValueSerializer(new GenericJackson2JsonRedisSerializer()); // ๊ธฐํƒ€ ์„ค์ • return template; } } ์ €์žฅ๋˜๋Š” ํ˜•ํƒœ 127.0.0.1:6379> GET user:1 "{\"@class\":\"com.example.User\",\"name\":\"Alice\",\"age\":25}" ย  ์ผ€์ด์Šค๋ณ„ ์„ ํƒ * ์—ฌ๋Ÿฌ ์–ธ์–ด์™€์˜ ํ˜ธํ™˜์„ฑ: GenericJackson2JsonRedisSerializer ์ถ”์ฒœ * ๊ฐ™์€ ์–ธ์–ด(Java) ๊ฐ„ ๋ฐ์ดํ„ฐ ๊ณต์œ : GenericJackson2JsonRedisSerializer ๋˜๋Š” JdkSerializationRedisSerializer ์ถ”์ฒœ * ๋‹จ์ˆœ ๋ฐ์ดํ„ฐ: StringRedisSerializer ์ถ”์ฒœ * ๋ณต์žกํ•œ ๊ฐ์ฒด ๋˜๋Š” Java ์ „์šฉ ๋ฐ์ดํ„ฐ: JdkSerializationRedisSerializer (๋‹จ, ๋ชจ๋“  ์„œ๋น„์Šค๊ฐ€ Java์ธ ๊ฒฝ์šฐ์—๋งŒ) ย  ์ € ๊ฐ™์€ ๊ฒฝ์šฐ๋Š” ์„œ๋กœ ๋‹ค๋ฅธ ์„œ๋น„์Šค์—์„œ ๋™์ผํ•œ Redis ํด๋Ÿฌ์Šคํ„ฐ๋ฅผ ์‚ฌ์šฉํ•˜๊ณ  ์žˆ์—ˆ์Šต๋‹ˆ๋‹ค. ๋™์ผํ•œ ํ”„๋กœ์ ํŠธ๊ฐ€ ์•„๋‹ˆ์—ˆ๊ธฐ์— JdkSerializationRedisSerializer์€ ์‚ฌ์šฉํ•  ์ˆ˜ ์—†์—ˆ๊ณ , ๊ฐ„๋‹จํ•œ ๋ฐ์ดํ„ฐ๋„ ์•„๋‹ˆ์—ˆ๊ธฐ์— String์„ ์„ ํƒํ•˜๊ธฐ์—๋„ ์–ด๋ ค์› ์Šต๋‹ˆ๋‹ค. ย  ๊ฒฐ๊ตญ GenericJackson2JsonRedisSerializer๋ฅผ ์„ ํƒํ•˜์˜€๋Š”๋ฐ, ๊ธฐ๋ณธ์ ์œผ๋กœ ํฌํ•จ๋˜๋Š” @class ์†์„ฑ์€ ๋ฐ์ดํ„ฐ์˜ ํƒ€์ž… ์ •๋ณด๋ฅผ ์ œ๊ณตํ•˜์ง€๋งŒ, ๋‹ค๋ฅธ ์„œ๋น„์Šค์—์„œ ํ•„์š”ํ•˜์ง€ ์•Š์•˜์Šต๋‹ˆ๋‹ค. ์ด๋ฅผ ๋น„ํ™œ์„ฑํ™”ํ•˜๋ ค๋ฉด ObjectMapper ์„ค์ •์„ ํ†ตํ•ด ์ปค์Šคํ„ฐ๋งˆ์ด์ง•ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

์•Œ๋ฆผ

์•Œ๋ฆผ์ด ์—†์Šต๋‹ˆ๋‹ค