reghao 2 лет назад
Родитель
Сommit
347760e7db

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

@@ -0,0 +1,28 @@
+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);
+    }
+}

+ 14 - 2
dfs-store/src/main/java/cn/reghao/dfs/store/service/ObjectBasicService.java

@@ -6,6 +6,7 @@ import cn.reghao.dfs.store.db.mapper.FileMetaMapper;
 import cn.reghao.dfs.store.model.po.ContentRange;
 import cn.reghao.dfs.store.model.po.ContentRange;
 import cn.reghao.dfs.store.model.po.DataBlock;
 import cn.reghao.dfs.store.model.po.DataBlock;
 import cn.reghao.dfs.store.model.po.FileMeta;
 import cn.reghao.dfs.store.model.po.FileMeta;
+import cn.reghao.dfs.store.redis.ds.RedisStringObj;
 import cn.reghao.jutil.jdk.security.DigestUtil;
 import cn.reghao.jutil.jdk.security.DigestUtil;
 import cn.reghao.jutil.tool.id.IdGenerator;
 import cn.reghao.jutil.tool.id.IdGenerator;
 import cn.reghao.jutil.web.ServletUtil;
 import cn.reghao.jutil.web.ServletUtil;
@@ -44,10 +45,12 @@ public class ObjectBasicService {
     private final FileUrlService fileUrlService;
     private final FileUrlService fileUrlService;
     private final FileTypeService fileTypeService;
     private final FileTypeService fileTypeService;
     private final LocalCache localCache;
     private final LocalCache localCache;
+    private final RedisStringObj redisStringObj;
 
 
     public ObjectBasicService(FileMetaMapper fileMetaMapper, DataBlockMapper dataBlockMapper,
     public ObjectBasicService(FileMetaMapper fileMetaMapper, DataBlockMapper dataBlockMapper,
                               FileStoreService fileStoreService, FileUrlService fileUrlService,
                               FileStoreService fileStoreService, FileUrlService fileUrlService,
-                              FileTypeService fileTypeService, LocalCache localCache) {
+                              FileTypeService fileTypeService, LocalCache localCache,
+                              RedisStringObj redisStringObj) {
         this.objectIdGenerator = new IdGenerator(32, "object-id");
         this.objectIdGenerator = new IdGenerator(32, "object-id");
         this.blockIdGenerator = new IdGenerator(32, "block-id");
         this.blockIdGenerator = new IdGenerator(32, "block-id");
         this.fileMetaMapper = fileMetaMapper;
         this.fileMetaMapper = fileMetaMapper;
@@ -56,6 +59,7 @@ public class ObjectBasicService {
         this.fileUrlService = fileUrlService;
         this.fileUrlService = fileUrlService;
         this.fileTypeService = fileTypeService;
         this.fileTypeService = fileTypeService;
         this.localCache = localCache;
         this.localCache = localCache;
+        this.redisStringObj = redisStringObj;
     }
     }
 
 
     public void putObject(String objectName, File file, String contentType, String sha256sum) throws Exception {
     public void putObject(String objectName, File file, String contentType, String sha256sum) throws Exception {
@@ -144,7 +148,15 @@ public class ObjectBasicService {
 
 
     public void getObject(String objectName) throws IOException {
     public void getObject(String objectName) throws IOException {
         HttpServletResponse response = ServletUtil.getResponse();
         HttpServletResponse response = ServletUtil.getResponse();
-        FileMeta fileMeta = fileMetaMapper.findByObjectName(objectName);
+        Object object = redisStringObj.get(objectName);
+        FileMeta fileMeta;
+        if (object != null) {
+            fileMeta = (FileMeta) object;
+        } else {
+            fileMeta = fileMetaMapper.findByObjectName(objectName);
+        }
+
+        // FileMeta fileMeta = fileMetaMapper.findByObjectName(objectName);
         if (fileMeta == null) {
         if (fileMeta == null) {
             response.setStatus(HttpServletResponse.SC_NOT_FOUND);
             response.setStatus(HttpServletResponse.SC_NOT_FOUND);
 
 

+ 7 - 7
dfs-store/src/main/resources/application-dev.yml

@@ -1,22 +1,22 @@
 dubbo:
 dubbo:
   registry:
   registry:
-    address: zookeeper://127.0.0.1:2181
+    address: zookeeper://192.168.0.110:2181
 spring:
 spring:
   redis:
   redis:
     database: 0
     database: 0
-    host: 127.0.0.1
+    host: 192.168.0.110
     port: 6379
     port: 6379
-    password: Dev@123456
+    password: Test@123456
   datasource:
   datasource:
-    url: jdbc:mysql://localhost:3306/reghao_oss_rdb?useSSL=false&useUnicode=true&characterEncoding=UTF-8&serverTimezone=GMT%2b8
-    username: dev
-    password: Dev@123456
+    url: jdbc:mysql://192.168.0.110:3306/reghao_oss_tdb?useSSL=false&useUnicode=true&characterEncoding=UTF-8&serverTimezone=GMT%2b8
+    username: test
+    password: Test@123456
 dfs:
 dfs:
   domain: file.reghao.cn
   domain: file.reghao.cn
   group: 0
   group: 0
   node: 0
   node: 0
   baseDirs:
   baseDirs:
-    - /opt/oss/disk/00b989fc-991b-4d4e-959e-9b6e19299b72/
+    - /opt/oss/disk/13f654c8-af87-4710-aac9-7aa086c99aec/
   encryptKey: 5JCdi68CulSDu0TqD4jR
   encryptKey: 5JCdi68CulSDu0TqD4jR
   metaDir: /opt/oss/meta
   metaDir: /opt/oss/meta
   cacheDir: /opt/oss/cache
   cacheDir: /opt/oss/cache

+ 5 - 0
dfs-store/src/main/resources/application-test.yml

@@ -2,6 +2,11 @@ dubbo:
   registry:
   registry:
     address: zookeeper://192.168.0.110:2181
     address: zookeeper://192.168.0.110:2181
 spring:
 spring:
+  redis:
+    database: 0
+    host: 192.168.0.110
+    port: 6379
+    password: Test@123456
   datasource:
   datasource:
     url: jdbc:mysql://192.168.0.110:3306/reghao_oss_tdb?useSSL=false&useUnicode=true&characterEncoding=UTF-8&serverTimezone=GMT%2b8
     url: jdbc:mysql://192.168.0.110:3306/reghao_oss_tdb?useSSL=false&useUnicode=true&characterEncoding=UTF-8&serverTimezone=GMT%2b8
     username: test
     username: test

+ 1 - 1
dfs-store/src/main/resources/application.yml

@@ -36,5 +36,5 @@ mybatis:
     map-underscore-to-camel-case: true
     map-underscore-to-camel-case: true
     # mybatis sql 执行日志
     # mybatis sql 执行日志
 #    log-impl: org.apache.ibatis.logging.stdout.StdOutImpl
 #    log-impl: org.apache.ibatis.logging.stdout.StdOutImpl
-  mapper-locations: classpath*:mapper/**/**.xml
+  mapper-locations: classpath*:mapper/**.xml
   type-aliases-package: cn.reghao.dfs.store.model.po
   type-aliases-package: cn.reghao.dfs.store.model.po

+ 0 - 0
dfs-store/src/main/resources/mapper/oss/BucketMapper.xml → dfs-store/src/main/resources/mapper/BucketMapper.xml


+ 0 - 0
dfs-store/src/main/resources/mapper/oss/DataBlockMapper.xml → dfs-store/src/main/resources/mapper/DataBlockMapper.xml


+ 1 - 0
dfs-store/src/main/resources/mapper/oss/FileMetaMapper.xml → dfs-store/src/main/resources/mapper/FileMetaMapper.xml

@@ -28,6 +28,7 @@
     </select>
     </select>
     <select id="findAll" resultType="cn.reghao.dfs.store.model.po.FileMeta">
     <select id="findAll" resultType="cn.reghao.dfs.store.model.po.FileMeta">
         select * from file_meta
         select * from file_meta
+<!--        limit 1000-->
     </select>
     </select>
     <select id="findAll0" resultType="cn.reghao.dfs.store.model.po.FileMeta">
     <select id="findAll0" resultType="cn.reghao.dfs.store.model.po.FileMeta">
         select file_meta.* from file_meta
         select file_meta.* from file_meta

+ 0 - 0
dfs-store/src/main/resources/mapper/oss/FileTypeMapper.xml → dfs-store/src/main/resources/mapper/FileTypeMapper.xml


+ 0 - 0
dfs-store/src/main/resources/mapper/oss/RegionMapper.xml → dfs-store/src/main/resources/mapper/RegionMapper.xml


+ 0 - 50
dfs-store/src/test/java/AwsTest.java

@@ -1,50 +0,0 @@
-import cn.reghao.dfs.store.util.AWS4Signer;
-
-import java.util.Map;
-import java.util.TreeMap;
-
-/**
- * @author reghao
- * @date 2023-03-22 16:19:12
- */
-public class AwsTest {
-    static String host = "oss-cn-chengdu.reghao.cn";
-    static String accessKey = "accesskey123456";
-    static String secretKey = "secretKey123456";
-
-    public static void main(String[] args) {
-        String url = "http://oss-cn-chengdu.reghao.cn/";
-
-        /**
-         * Add host without http or https protocol.
-         * You can also add other parameters based on your amazon service requirement.
-         */
-        TreeMap<String, String> awsHeaders = new TreeMap<>();
-        awsHeaders.put("host", host);
-
-
-        AWS4Signer aWSV4Signer = new AWS4Signer.Builder(accessKey, secretKey)
-                .regionName("")
-                .serviceName("s3") // es - elastic search. use your service name
-                .httpMethodName("GET") //GET, PUT, POST, DELETE, etc...
-                .canonicalURI("/") //endpoint
-                .queryParametes(null) //query parameters if any
-                .awsHeaders(awsHeaders) //aws header parameters
-                .payload(null) // payload if any
-                //.debug() // turn on the debug mode
-                .build();
-
-        /* Get header calculated for request */
-        Map<String, String> header = aWSV4Signer.getHeaders();
-        for (Map.Entry<String, String> entrySet : header.entrySet()) {
-            String key = entrySet.getKey();
-            String value = entrySet.getValue();
-            System.out.println();
-            /* Attach header in your request */
-            /* Simple get request */
-            //HttpGet httpGet = new HttpGet(url);
-            //httpGet.addHeader(key, value);
-        }
-        // execute httpGet
-    }
-}

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

@@ -0,0 +1,39 @@
+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.dfs.store.redis.ds.RedisString;
+import cn.reghao.dfs.store.redis.ds.RedisStringObj;
+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
+ */
+@ActiveProfiles("dev")
+@SpringBootTest(classes = DfsStoreApplication.class)
+@RunWith(SpringRunner.class)
+public class RedisTest {
+    String key = "dfs: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);
+        });
+    }
+}