StringRedisTemplate์ Spring Data Redis์์ ์ ๊ณตํ๋ ํด๋์ค๋ก, Redis์ ์ฝ๊ฒ ์ํธ์์ฉํ ์ ์๊ฒ ํด์ค๋๋ค. ์ด ํด๋์ค๋ Java์ String ํ์ ์ key์ value๋ก ์ฌ์ฉํ์ฌ Redis ์์ ์ ์ํํฉ๋๋ค.
๋ฌธ์์ด ๋ฐ์ดํฐ์ ์ต์ ํ
์๋์ผ๋ก Spring Bean์ผ๋ก ์์ฑ๋จ
๋ค์ํ Redis ๋ฐ์ดํฐ ๊ตฌ์กฐ ์ง์ (String, List, Set ๋ฑ)
๋จผ์ , Spring Boot ํ๋ก์ ํธ์ Redis ์์กด์ฑ์ ์ถ๊ฐํด์ผ ํฉ๋๋ค. ๊ทธ ๋ค์, ํ ์คํธ ํด๋์ค๋ฅผ ๋ง๋ค์ด StringRedisTemplate์ ์ฃผ์ ๋ฐ์ต๋๋ค.
@SpringBootTest
public class RedisTemplateTests {
@Autowired
private StringRedisTemplate stringRedisTemplate;
// ํ
์คํธ ๋ฉ์๋๋ค์ด ์ฌ๊ธฐ์ ์์นํฉ๋๋ค.
}
Redis์ String ํ์ ์ผ๋ก ์์ ํ๋ ค๋ฉด ValueOperations ์ธํฐํ์ด์ค๋ฅผ ์ฌ์ฉํฉ๋๋ค.
@Test
public void stringValueOpsTest() {
ValueOperations<String, String> ops = stringRedisTemplate.opsForValue();
// ๋ฐ์ดํฐ ์ ์ฅ
ops.set("username", "ํ๊ธธ๋");
// ๋ฐ์ดํฐ ์กฐํ
String username = ops.get("username");
System.out.println("์ฌ์ฉ์ ์ด๋ฆ: " + username);
// ๋ฐ์ดํฐ ์์
ops.set("username", "๊น์ฒ ์");
System.out.println("๋ณ๊ฒฝ๋ ์ด๋ฆ: " + ops.get("username"));
}
Redis์ Set ํ์ ์ผ๋ก ์์ ํ๋ ค๋ฉด SetOperations ์ธํฐํ์ด์ค๋ฅผ ์ฌ์ฉํฉ๋๋ค.
@Test
public void stringSetOpsTest() {
SetOperations<String, String> setOps = stringRedisTemplate.opsForSet();
// Set์ ๋ฐ์ดํฐ ์ถ๊ฐ
setOps.add("fruits", "์ฌ๊ณผ", "๋ฐ๋๋", "์ค๋ ์ง");
setOps.add("fruits", "์ฌ๊ณผ"); // ์ค๋ณต ์ถ๊ฐ (๋ฌด์๋จ)
// Set ํฌ๊ธฐ ํ์ธ
Long size = setOps.size("fruits");
System.out.println("๊ณผ์ผ ์ข
๋ฅ ์: " + size);
// Set์ ๋ชจ๋ ๋ฉค๋ฒ ์กฐํ
Set<String> fruits = setOps.members("fruits");
System.out.println("๊ณผ์ผ ๋ชฉ๋ก: " + fruits);
// ํน์ ๊ฐ์ด Set์ ํฌํจ๋์ด ์๋์ง ํ์ธ
boolean hasBanana = setOps.isMember("fruits", "๋ฐ๋๋");
System.out.println("๋ฐ๋๋๊ฐ ์๋์? " + hasBanana);
}
StringRedisTemplate์ ๋ง๋ฃ ์๊ฐ ์ค์ ์ด๋ ํค ์ญ์ ๊ฐ์ ๊ณตํต ์์ ๋ ์ง์ํฉ๋๋ค.
@Test
public void redisCommonOpsTest() {
ValueOperations<String, String> ops = stringRedisTemplate.opsForValue();
// ๋ฐ์ดํฐ ์ ์ฅ
ops.set("sessionId", "abc123");
// ๋ง๋ฃ ์๊ฐ ์ค์ (5์ด)
stringRedisTemplate.expire("sessionId", 5, TimeUnit.SECONDS);
// ๋จ์ ๋ง๋ฃ ์๊ฐ ํ์ธ
Long ttl = stringRedisTemplate.getExpire("sessionId");
System.out.println("sessionId์ ๋จ์ ์๊ฐ: " + ttl + "์ด");
// 5์ด ๋๊ธฐ
try {
Thread.sleep(5000);
} catch (InterruptedException e) {
e.printStackTrace();
}
// ๋ง๋ฃ๋ ํค ์กฐํ
String expiredValue = ops.get("sessionId");
System.out.println("๋ง๋ฃ ํ sessionId ๊ฐ: " + expiredValue);
// ์๋ก์ด ๋ฐ์ดํฐ ์ ์ฅ
ops.set("tempKey", "์์ ๋ฐ์ดํฐ");
// ํค ์ญ์
Boolean deleted = stringRedisTemplate.delete("tempKey");
System.out.println("tempKey ์ญ์ ์ฑ๊ณต? " + deleted);
}