xiejun
2024-11-01 80b6cbfc9c861469146318d0b3dd5f8b8b525b8a
Source/BladeX-Tool/blade-starter-social/src/main/java/org/springblade/core/social/cache/AuthStateRedisCache.java
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,69 @@
package org.springblade.core.social.cache;
import lombok.AllArgsConstructor;
import me.zhyd.oauth.cache.AuthCacheConfig;
import me.zhyd.oauth.cache.AuthStateCache;
import org.springframework.data.redis.core.RedisTemplate;
import org.springframework.data.redis.core.ValueOperations;
import java.util.concurrent.TimeUnit;
/**
 * æ‰©å±•Redis版的state缓存
 *
 * @author yadong.zhang, Chill
 */
@AllArgsConstructor
public class AuthStateRedisCache implements AuthStateCache {
   private final RedisTemplate<String, Object> redisTemplate;
   private final ValueOperations<String, Object> valueOperations;
   /**
    * å­˜å…¥ç¼“存,默认3分钟
    *
    * @param key   ç¼“å­˜key
    * @param value ç¼“存内容
    */
   @Override
   public void cache(String key, String value) {
      valueOperations.set(key, value, AuthCacheConfig.timeout, TimeUnit.MILLISECONDS);
   }
   /**
    * å­˜å…¥ç¼“å­˜
    *
    * @param key     ç¼“å­˜key
    * @param value   ç¼“存内容
    * @param timeout æŒ‡å®šç¼“存过期时间(毫秒)
    */
   @Override
   public void cache(String key, String value, long timeout) {
      valueOperations.set(key, value, timeout, TimeUnit.MILLISECONDS);
   }
   /**
    * èŽ·å–ç¼“å­˜å†…å®¹
    *
    * @param key ç¼“å­˜key
    * @return ç¼“存内容
    */
   @Override
   public String get(String key) {
      return String.valueOf(valueOperations.get(key));
   }
   /**
    * æ˜¯å¦å­˜åœ¨key,如果对应key的value值已过期,也返回false
    *
    * @param key ç¼“å­˜key
    * @return true:存在key,并且value没过期;false:key不存在或者已过期
    */
   @Override
   public boolean containsKey(String key) {
      return redisTemplate.hasKey(key);
   }
}