{"release":{"tag":{"name":"5.6.67","path":"/sagacity/sagacity-sqltoy/tags/5.6.67","tree_path":"/sagacity/sagacity-sqltoy/tree/5.6.67","message":"1、开启缓存数据动态获取FIFIO并保留频繁使用数据的方式，主要针对超大量的配置数据，如平台型电商SKU\r\n     具体原理：针对百万级SKU，但真正常用的可能只有10万左右，设置一个FIFOMap，最大数据量为一个固定值（如十万），一开始数据为空，用到哪些数据先判断缓存中是否存在，不存在就动态加载，频繁使用的会自动排序到最后面，达到10万条时，新进来的就会挤掉排最前面不常用的，具体参见：\r\n* org.sagacity.sqltoy.model.FIFOMap\r\n* org.sagacity.sqltoy.translate.cache.impl.FIFODynamicFetchCacheManager\r\n\r\n具体步骤：\r\n## 1、配置缓存，在sqltoy-translates.xml 中定义\r\n```xml\r\n//sid、properties 可选，会传递给查询数据的接口\r\n\u003Clocal-translate cache=\"缓存名称\" sid=\"特定标记如sqlId\" properties=\"属性信息\"  \r\nkeep-alive=\"3600\" dynamic-cache=\"true\" dynamic-cache-maxSize=\"100000\"/\u003E\r\n```\r\n## 2、项目yml配置\r\n```properties\r\n# 自定义捕获数据的接口实现，具体接口如下\r\nspring.sqltoy.dynamicCacheFetch=com.xxx.DynamicCacheFetchImpl\r\n```\r\n```java\r\npackage org.sagacity.sqltoy.translate;\r\npublic interface DynamicCacheFetch {\r\n    public void initialize(AppContext appContext);\r\n    public Object[] getCache(String cacheName, String cacheType, String sid, String[] properties, String key);\r\n    public Map\u003CString,Object[]\u003E getCache(String cacheName, String cacheType, String sid, String[] properties, String[] keys);\r\n}\r\n```\r\n## 3、【可选】可自定义DynamicFecthCacheManager,框架提供了默认实现：\r\n参见：org.sagacity.sqltoy.translate.cache.impl.FIFODynamicFetchCacheManager\r\n\r\n```java\r\n//自定义实现配置：spring.sqltoy.dynamicFecthCacheManager=xxxx.DynamicFecthCacheManagerImpl\r\npackage org.sagacity.sqltoy.translate.cache;\r\npublic interface DynamicFecthCacheManager {\r\n    ......\r\n}\r\n```\r\n\r\n```xml\r\n\u003C!-- 其他非spring框架可以基于sagacity-sqltoy 进行扩展 --\u003E\r\n\u003Cdependency\u003E\r\n\t\u003CgroupId\u003Ecom.sagframe\u003C/groupId\u003E\r\n\t\u003CartifactId\u003Esagacity-sqltoy\u003C/artifactId\u003E\r\n         \u003C!-- jdk8 对应的版本号为：5.6.67.jre8 --\u003E\r\n\t\u003Cversion\u003E5.6.67\u003C/version\u003E\r\n\u003C/dependency\u003E\r\n\r\n\u003C!-- springboot  --\u003E\r\n\u003Cdependency\u003E\r\n\t\u003CgroupId\u003Ecom.sagframe\u003C/groupId\u003E\r\n\t\u003CartifactId\u003Esagacity-sqltoy-spring-starter\u003C/artifactId\u003E\r\n         \u003C!-- jdk8 对应的版本号为：5.6.67.jre8 --\u003E\r\n\t\u003Cversion\u003E5.6.67\u003C/version\u003E\r\n\u003C/dependency\u003E\r\n\r\n\u003C!-- solon 插件  --\u003E\r\n\u003Cdependency\u003E\r\n\t\u003CgroupId\u003Ecom.sagframe\u003C/groupId\u003E\r\n\t\u003CartifactId\u003Esagacity-sqltoy-solon-plugin\u003C/artifactId\u003E\r\n        \u003C!-- jdk8 对应的版本号为：5.6.67.jre8 --\u003E\r\n\t\u003Cversion\u003E5.6.67\u003C/version\u003E\r\n\u003C/dependency\u003E\r\n```","commit":{"id":"1196e06ebc6ba9afdd72cc02e79687db4a16f5d9","short_id":"1196e06","title":"update README.md.","title_markdown":"update README.md.","description":"\nSigned-off-by: zhongxuchen \u003Czhongxuchen@gmail.com\u003E","description_markdown":"Signed-off-by: zhongxuchen \u003Ca href=\"mailto:zhongxuchen@gmail.com\"\u003Ezhongxuchen@gmail.com\u003C/a\u003E","message":"update README.md.\n\nSigned-off-by: zhongxuchen \u003Czhongxuchen@gmail.com\u003E","message_markdown":"update README.md.\nSigned-off-by: zhongxuchen \u003Ca href=\"mailto:zhongxuchen@gmail.com\"\u003Ezhongxuchen@gmail.com\u003C/a\u003E","detail_path":"/sagacity/sagacity-sqltoy/commit/1196e06ebc6ba9afdd72cc02e79687db4a16f5d9","commits_path":"/sagacity/sagacity-sqltoy/commits/1196e06ebc6ba9afdd72cc02e79687db4a16f5d9","tree_path":"/sagacity/sagacity-sqltoy/tree/1196e06ebc6ba9afdd72cc02e79687db4a16f5d9","author":{"name":"zhongxuchen","email":"zhongxuchen@gmail.com","username":"sagframe","user_path":"/sagframe","enterprise_user_path":null,"image_path":"no_portrait.png#zhongxuchen-sagframe","is_gitee_user":true,"is_enterprise_user":null,"widget_url":""},"committer":{"name":"Gitee GPG Bot","email":"noreply@gitee.com","username":"gitee-bot","user_path":"/gitee-bot","enterprise_user_path":null,"image_path":"https://foruda.gitee.com/avatar/1677201213385506226/10186697_gitee-bot_1639518846.png!avatar30","is_gitee_user":true,"is_enterprise_user":null,"widget_url":""},"authored_date":"2026-01-26T06:12:34+00:00","committed_date":"2026-01-26T06:12:34+00:00","signature":null,"build_state":null},"archive_path":"/sagacity/sagacity-sqltoy/repository/archive/5.6.67","signature":null},"operating":{"edit":false,"download":true,"destroy":false,"enterprise_forbid_zip":false},"release":{"title":"5.6.67 完善缓存数据动态获取，针对缓存翻译提供动态批量查询方式","path":"/sagacity/sagacity-sqltoy/releases/tag/5.6.67","tag_path":"/sagacity/sagacity-sqltoy/tree/5.6.67","project_id":8037646,"created_at":"2026-01-27T10:58:48+08:00","is_prerelease":false,"description":"1、开启缓存数据动态获取FIFIO并保留频繁使用数据的方式，主要针对超大量的配置数据，如平台型电商SKU\r\n     具体原理：针对百万级SKU，但真正常用的可能只有10万左右，设置一个FIFOMap，最大数据量为一个固定值（如十万），一开始数据为空，用到哪些数据先判断缓存中是否存在，不存在就动态加载，频繁使用的会自动排序到最后面，达到10万条时，新进来的就会挤掉排最前面不常用的，具体参见：\r\n* org.sagacity.sqltoy.model.FIFOMap\r\n* org.sagacity.sqltoy.translate.cache.impl.FIFODynamicFetchCacheManager\r\n\r\n具体步骤：\r\n## 1、配置缓存，在sqltoy-translates.xml 中定义\r\n```xml\r\n//sid、properties 可选，会传递给查询数据的接口\r\n\u003Clocal-translate cache=\"缓存名称\" sid=\"特定标记如sqlId\" properties=\"属性信息\"  \r\nkeep-alive=\"3600\" dynamic-cache=\"true\" dynamic-cache-maxSize=\"100000\"/\u003E\r\n```\r\n## 2、项目yml配置\r\n```properties\r\n# 自定义捕获数据的接口实现，具体接口如下\r\nspring.sqltoy.dynamicCacheFetch=com.xxx.DynamicCacheFetchImpl\r\n```\r\n```java\r\npackage org.sagacity.sqltoy.translate;\r\npublic interface DynamicCacheFetch {\r\n    public void initialize(AppContext appContext);\r\n    public Object[] getCache(String cacheName, String cacheType, String sid, String[] properties, String key);\r\n    public Map\u003CString,Object[]\u003E getCache(String cacheName, String cacheType, String sid, String[] properties, String[] keys);\r\n}\r\n```\r\n## 3、【可选】可自定义DynamicFecthCacheManager,框架提供了默认实现：\r\n参见：org.sagacity.sqltoy.translate.cache.impl.FIFODynamicFetchCacheManager\r\n\r\n```java\r\n//自定义实现配置：spring.sqltoy.dynamicFecthCacheManager=xxxx.DynamicFecthCacheManagerImpl\r\npackage org.sagacity.sqltoy.translate.cache;\r\npublic interface DynamicFecthCacheManager {\r\n    ......\r\n}\r\n```\r\n\r\n```xml\r\n\u003C!-- 其他非spring框架可以基于sagacity-sqltoy 进行扩展 --\u003E\r\n\u003Cdependency\u003E\r\n\t\u003CgroupId\u003Ecom.sagframe\u003C/groupId\u003E\r\n\t\u003CartifactId\u003Esagacity-sqltoy\u003C/artifactId\u003E\r\n         \u003C!-- jdk8 对应的版本号为：5.6.67.jre8 --\u003E\r\n\t\u003Cversion\u003E5.6.67\u003C/version\u003E\r\n\u003C/dependency\u003E\r\n\r\n\u003C!-- springboot  --\u003E\r\n\u003Cdependency\u003E\r\n\t\u003CgroupId\u003Ecom.sagframe\u003C/groupId\u003E\r\n\t\u003CartifactId\u003Esagacity-sqltoy-spring-starter\u003C/artifactId\u003E\r\n         \u003C!-- jdk8 对应的版本号为：5.6.67.jre8 --\u003E\r\n\t\u003Cversion\u003E5.6.67\u003C/version\u003E\r\n\u003C/dependency\u003E\r\n\r\n\u003C!-- solon 插件  --\u003E\r\n\u003Cdependency\u003E\r\n\t\u003CgroupId\u003Ecom.sagframe\u003C/groupId\u003E\r\n\t\u003CartifactId\u003Esagacity-sqltoy-solon-plugin\u003C/artifactId\u003E\r\n        \u003C!-- jdk8 对应的版本号为：5.6.67.jre8 --\u003E\r\n\t\u003Cversion\u003E5.6.67\u003C/version\u003E\r\n\u003C/dependency\u003E\r\n```","author":{"name":"zhongxuchen","username":"sagframe","path":"/sagframe","avatar_url":"no_portrait.png#zhongxuchen-sagframe"},"attach_files":[],"zip_download_url":"/sagacity/sagacity-sqltoy/releases/tag/5.6.67.zip","tar_download_url":"/sagacity/sagacity-sqltoy/releases/tag/5.6.67.tar.gz"}}}