diff --git a/src/main/java/co/orange/ddanzi/global/redis/RedisRepositoryImpl.java b/src/main/java/co/orange/ddanzi/global/redis/RedisRepositoryImpl.java index f6d18e1..77ef750 100644 --- a/src/main/java/co/orange/ddanzi/global/redis/RedisRepositoryImpl.java +++ b/src/main/java/co/orange/ddanzi/global/redis/RedisRepositoryImpl.java @@ -4,7 +4,9 @@ import org.springframework.data.redis.core.RedisTemplate; import org.springframework.stereotype.Repository; +import java.util.List; import java.util.Set; +import java.util.concurrent.TimeUnit; @Slf4j @@ -12,6 +14,8 @@ public class RedisRepositoryImpl implements RedisRepository { private static final String DEVICE_PREFIX = "device:"; + private static final long MAX_RECENT_PRODUCTS = 12; + private static final long EXPIRATION_TIME = 10 * 24 * 60 * 60; // 10일 private final RedisTemplate redisTemplate; @@ -20,17 +24,22 @@ public RedisRepositoryImpl(RedisTemplate redisTemplate) { } @Override - public void saveDeviceToken(String deviceToken, String productId) { - redisTemplate.opsForSet().add(DEVICE_PREFIX + deviceToken, productId); + public void saveRecentProduct(String deviceToken, String productId) { + String key = DEVICE_PREFIX + deviceToken; + redisTemplate.opsForList().leftPush(key, productId); + redisTemplate.opsForList().trim(key, 0, MAX_RECENT_PRODUCTS - 1); // 리스트 길이 제한 + redisTemplate.expire(key, EXPIRATION_TIME, TimeUnit.SECONDS); + } @Override - public Set getRecentProducts(String deviceToken) { - return redisTemplate.opsForSet().members(DEVICE_PREFIX + deviceToken); + public List getRecentProducts(String deviceToken) { + String key = DEVICE_PREFIX + deviceToken; + return redisTemplate.opsForList().range(key, 0, -1); } @Override - public void deleteDeviceToken(String deviceToken) { + public void deleteRecentProduct(String deviceToken) { redisTemplate.delete(DEVICE_PREFIX + deviceToken); } }