Ver Fonte

使用本地缓存, 暂时不使用 redis

reghao há 2 anos atrás
pai
commit
8778ec4b3c

+ 5 - 1
dfs-store/pom.xml

@@ -105,9 +105,13 @@
             <groupId>org.springframework.boot</groupId>
             <artifactId>spring-boot-starter-cache</artifactId>
         </dependency>
-        <dependency>
+        <!--<dependency>
             <groupId>org.springframework.boot</groupId>
             <artifactId>spring-boot-starter-data-redis</artifactId>
+        </dependency>-->
+        <dependency>
+            <groupId>com.github.ben-manes.caffeine</groupId>
+            <artifactId>caffeine</artifactId>
         </dependency>
 
         <dependency>

+ 20 - 7
dfs-store/src/main/java/cn/reghao/dfs/store/config/CacheConfig.java

@@ -1,17 +1,14 @@
 package cn.reghao.dfs.store.config;
 
+import com.github.benmanes.caffeine.cache.Caffeine;
 import org.springframework.cache.CacheManager;
 import org.springframework.cache.annotation.EnableCaching;
 
+import org.springframework.cache.caffeine.CaffeineCacheManager;
 import org.springframework.context.annotation.Bean;
 import org.springframework.context.annotation.Configuration;
-import org.springframework.data.redis.cache.RedisCacheConfiguration;
-import org.springframework.data.redis.cache.RedisCacheManager;
-import org.springframework.data.redis.core.RedisTemplate;
-import org.springframework.data.redis.serializer.RedisSerializationContext;
 
-import java.time.Duration;
-import java.util.Objects;
+import java.util.concurrent.TimeUnit;
 
 /**
  * 缓存配置
@@ -22,7 +19,7 @@ import java.util.Objects;
 @EnableCaching
 @Configuration
 public class CacheConfig {
-    @Bean
+    /*@Bean
     public CacheManager cacheManager(RedisTemplate<String, Object> template) {
         RedisCacheConfiguration config = RedisCacheConfiguration
                 .defaultCacheConfig()
@@ -36,5 +33,21 @@ public class CacheConfig {
                         .cacheDefaults(config)
                         .transactionAware()
                         .build();
+    }*/
+
+    @Bean
+    public CacheManager cacheManager() {
+        CaffeineCacheManager cacheManager = new CaffeineCacheManager();
+        Caffeine<Object, Object> caffeineCache = caffeineCache();
+        cacheManager.setCaffeine(caffeineCache);
+        return cacheManager;
+    }
+
+    @Bean("caffeineCache")
+    public Caffeine<Object, Object> caffeineCache() {
+        return Caffeine.newBuilder()
+                .initialCapacity(1000)
+                .maximumSize(10_000)
+                .expireAfterAccess(365, TimeUnit.DAYS);
     }
 }

+ 0 - 61
dfs-store/src/main/java/cn/reghao/dfs/store/redis/RedisConfig.java

@@ -1,61 +0,0 @@
-package cn.reghao.dfs.store.redis;
-
-import org.springframework.cache.annotation.CachingConfigurerSupport;
-import org.springframework.context.annotation.Bean;
-import org.springframework.context.annotation.Configuration;
-import org.springframework.core.convert.converter.Converter;
-import org.springframework.core.serializer.support.DeserializingConverter;
-import org.springframework.core.serializer.support.SerializingConverter;
-import org.springframework.data.redis.connection.RedisConnectionFactory;
-import org.springframework.data.redis.core.RedisTemplate;
-import org.springframework.data.redis.serializer.RedisSerializer;
-import org.springframework.data.redis.serializer.SerializationException;
-import org.springframework.data.redis.serializer.StringRedisSerializer;
-
-/**
- * Redis 连接和序列化配置
- *
- * @author reghao
- * @date 2021-11-15 14:40:57
- */
-@Configuration
-public class RedisConfig extends CachingConfigurerSupport {
-    @Bean
-    public RedisTemplate<String, Object> redisTemplate(RedisConnectionFactory factory) {
-        RedisTemplate<String, Object> template = new RedisTemplate<>();
-        template.setConnectionFactory(factory);
-        template.setKeySerializer(new StringRedisSerializer());
-        template.setValueSerializer(new RedisObjectSerializer());
-        return template;
-    }
-
-    /**
-     * 序列化对象
-     *
-     * @param
-     * @return
-     * @date 2021-12-09 下午12:02
-     */
-    @Configuration
-    static class RedisObjectSerializer implements RedisSerializer<Object> {
-        private static final byte[] EMPTY_BYTE_ARRAY = new byte[0];
-        private final Converter<Object, byte[]> serializingConverter = new SerializingConverter();
-        private final Converter<byte[], Object> deserializingConverter = new DeserializingConverter();
-
-        @Override
-        public byte[] serialize(Object obj) throws SerializationException {
-            if (obj == null) {
-                return EMPTY_BYTE_ARRAY ;
-            }
-            return this.serializingConverter.convert(obj);
-        }
-
-        @Override
-        public Object deserialize(byte[] data) throws SerializationException {
-            if (data == null || data.length == 0) {
-                return null;
-            }
-            return this.deserializingConverter.convert(data);
-        }
-    }
-}

+ 0 - 11
dfs-store/src/main/java/cn/reghao/dfs/store/redis/RedisKeys.java

@@ -1,11 +0,0 @@
-package cn.reghao.dfs.store.redis;
-
-/**
- * @author reghao
- * @date 2021-12-11 19:20:25
- */
-public class RedisKeys {
-    public static String verifyCodeKey(String receiver) {
-        return "verifyCode.receiver:" + receiver;
-    }
-}

+ 0 - 40
dfs-store/src/main/java/cn/reghao/dfs/store/redis/ds/RedisString.java

@@ -1,40 +0,0 @@
-package cn.reghao.dfs.store.redis.ds;
-
-import org.springframework.data.redis.core.RedisTemplate;
-import org.springframework.data.redis.core.ValueOperations;
-import org.springframework.stereotype.Component;
-
-import java.util.concurrent.TimeUnit;
-
-/**
- * @author reghao
- * @date 2021-03-07 17:44:23
- */
-@Component
-public class RedisString {
-    private final ValueOperations<String, String> stringOps;
-
-    public RedisString(RedisTemplate<String, String> redisTemplate) {
-        this.stringOps = redisTemplate.opsForValue();
-    }
-
-    public void set(String key, String value) {
-        stringOps.set(key, value);
-    }
-
-    public void setWithTimeout(String key, String value, long timeout) {
-        stringOps.set(key, value, timeout, TimeUnit.SECONDS);
-    }
-
-    public Boolean setIfAbsent(String key, String value, long timeout) {
-        return stringOps.setIfAbsent(key, value, timeout, TimeUnit.SECONDS);
-    }
-
-    public String get(String key) {
-        return stringOps.get(key);
-    }
-
-    public long incr(String key) {
-        return stringOps.increment(key);
-    }
-}

+ 0 - 28
dfs-store/src/main/java/cn/reghao/dfs/store/redis/ds/RedisStringObj.java

@@ -1,28 +0,0 @@
-package cn.reghao.dfs.store.redis.ds;
-
-import org.springframework.data.redis.core.RedisTemplate;
-import org.springframework.data.redis.core.ValueOperations;
-import org.springframework.stereotype.Component;
-
-import java.util.concurrent.TimeUnit;
-
-/**
- * @author reghao
- * @date 2023-04-29 23:03:23
- */
-@Component
-public class RedisStringObj {
-    private final ValueOperations<String, Object> stringOps;
-
-    public RedisStringObj(RedisTemplate<String, Object> redisTemplate) {
-        this.stringOps = redisTemplate.opsForValue();
-    }
-
-    public void set(String key, Object value) {
-        stringOps.set(key, value);
-    }
-
-    public Object get(String key) {
-        return stringOps.get(key);
-    }
-}

+ 0 - 62
dfs-store/src/test/java/RedisTest.java

@@ -1,62 +0,0 @@
-import cn.reghao.dfs.store.DfsStoreApplication;
-import cn.reghao.dfs.store.db.mapper.FileMetaMapper;
-import cn.reghao.dfs.store.model.po.FileMeta;
-import cn.reghao.oss.api.dto.ObjectMeta;
-import cn.reghao.dfs.store.redis.ds.RedisStringObj;
-import cn.reghao.jutil.jdk.db.Page;
-import lombok.extern.slf4j.Slf4j;
-import org.junit.Test;
-import org.junit.runner.RunWith;
-import org.springframework.beans.factory.annotation.Autowired;
-import org.springframework.boot.test.context.SpringBootTest;
-import org.springframework.test.context.ActiveProfiles;
-import org.springframework.test.context.junit4.SpringRunner;
-
-import java.util.List;
-
-/**
- * @author reghao
- * @date 2023-03-22 16:19:12
- */
-@Slf4j
-@ActiveProfiles("dev")
-@SpringBootTest(classes = DfsStoreApplication.class)
-@RunWith(SpringRunner.class)
-public class RedisTest {
-    String key = "oss:store:object:";
-    @Autowired
-    RedisStringObj redisString;
-    @Autowired
-    FileMetaMapper fileMetaMapper;
-
-    @Test
-    public void test() {
-        int total = fileMetaMapper.count();
-        List<FileMeta> list = fileMetaMapper.findAll();
-        list.forEach(fileMeta -> {
-            String objectName = fileMeta.getObjectName();
-            String key1 = key + objectName;
-            redisString.set(key1, fileMeta);
-        });
-    }
-
-    @Test
-    public void test1() {
-        int pageSize = 1000;
-        int pageNumber = 1;
-        Page page = new Page(pageNumber, pageSize);
-        List<ObjectMeta> list = fileMetaMapper.findObjectMetaByPage(page);
-        while (!list.isEmpty()) {
-            list.forEach(objectMeta -> {
-                String objectName = objectMeta.getObjectName();
-                String key1 = key + objectName;
-                redisString.set(key1, objectMeta);
-            });
-
-            pageNumber++;
-            page = new Page(pageNumber, pageSize);
-            list = fileMetaMapper.findObjectMetaByPage(page);
-            log.info("page -> {}", pageNumber);
-        }
-    }
-}