Skip to content
项目
群组
代码片段
帮助
当前项目
正在载入...
登录 / 注册
切换导航面板
B
basic-api-boot
概览
概览
详情
活动
周期分析
版本库
存储库
文件
提交
分支
标签
贡献者
分支图
比较
统计图
问题
0
议题
0
列表
看板
标记
里程碑
合并请求
0
合并请求
0
CI / CD
CI / CD
流水线
作业
日程表
图表
维基
Wiki
代码片段
代码片段
成员
成员
折叠边栏
关闭边栏
活动
图像
聊天
创建新问题
作业
提交
问题看板
Open sidebar
Basic
basic-api-boot
Commits
2a892bd0
提交
2a892bd0
authored
4月 19, 2022
作者:
方治民
浏览文件
操作
浏览文件
下载
电子邮件补丁
差异文件
feat: 增加 Redis 操作序列化配置、缓存配置、实用技巧文档
上级
0b79e58c
隐藏空白字符变更
内嵌
并排
正在显示
5 个修改的文件
包含
116 行增加
和
1 行删除
+116
-1
README.md
README.md
+1
-0
build.gradle
basic-common/redis/build.gradle
+3
-1
CacheKeyGenerator.java
...main/java/com/yiring/common/config/CacheKeyGenerator.java
+40
-0
RedisConfig.java
...s/src/main/java/com/yiring/common/config/RedisConfig.java
+54
-0
skill.md
doc/skill.md
+18
-0
没有找到文件。
README.md
浏览文件 @
2a892bd0
...
@@ -16,6 +16,7 @@
...
@@ -16,6 +16,7 @@
<!-- prettier-ignore -->
<!-- prettier-ignore -->
-
[
开发规范说明
](
./doc/workflow.md
)
-
[
开发规范说明
](
./doc/workflow.md
)
-
[
技术栈说明
](
./doc/technique.md
)
-
[
技术栈说明
](
./doc/technique.md
)
-
[
实用技巧
](
./doc/skill.md
)
---
---
...
...
basic-common/redis/build.gradle
浏览文件 @
2a892bd0
dependencies
{
dependencies
{
implementation
'org.springframework.boot:spring-boot-starter-data-redis'
implementation
'org.springframework.boot:spring-boot-starter-data-redis'
// hutool-crypto
implementation
"cn.hutool:hutool-crypto:${hutoolVersion}"
}
}
basic-common/redis/src/main/java/com/yiring/common/config/CacheKeyGenerator.java
0 → 100644
浏览文件 @
2a892bd0
/* (C) 2022 YiRing, Inc. */
package
com
.
yiring
.
common
.
config
;
import
cn.hutool.crypto.digest.DigestUtil
;
import
java.lang.reflect.Method
;
import
java.util.HashMap
;
import
java.util.Map
;
import
java.util.Objects
;
import
lombok.NonNull
;
import
lombok.extern.slf4j.Slf4j
;
import
org.springframework.cache.interceptor.KeyGenerator
;
import
org.springframework.stereotype.Component
;
/**
* Cache KeyGenerator
*
* @author Jim
* @version 0.1
* 2022/4/19 15:36
*/
@Slf4j
@Component
public
class
CacheKeyGenerator
implements
KeyGenerator
{
@Override
@NonNull
public
Object
generate
(
Object
target
,
Method
method
,
Object
...
params
)
{
int
len
=
params
.
length
;
Map
<
String
,
Object
>
map
=
new
HashMap
<>(
2
+
len
);
map
.
put
(
"target"
,
target
.
getClass
().
toGenericString
());
map
.
put
(
"method"
,
method
.
getName
());
for
(
int
i
=
0
;
i
<
len
;
i
++)
{
map
.
put
(
"params-"
+
i
,
Objects
.
toString
(
params
[
i
]));
}
return
DigestUtil
.
sha256
(
map
.
toString
());
}
}
basic-common/redis/src/main/java/com/yiring/common/config/RedisConfig.java
0 → 100644
浏览文件 @
2a892bd0
/* (C) 2022 YiRing, Inc. */
package
com
.
yiring
.
common
.
config
;
import
java.time.Duration
;
import
org.springframework.cache.annotation.EnableCaching
;
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.connection.RedisConnectionFactory
;
import
org.springframework.data.redis.core.RedisTemplate
;
import
org.springframework.data.redis.serializer.GenericJackson2JsonRedisSerializer
;
import
org.springframework.data.redis.serializer.RedisSerializationContext
;
import
org.springframework.data.redis.serializer.StringRedisSerializer
;
/**
* Redis Config
*
* @author Jim
* @version 0.1
* 2022/4/19 15:27
*/
@EnableCaching
@Configuration
public
class
RedisConfig
{
@Bean
public
RedisTemplate
<
String
,
Object
>
redisTemplate
(
RedisConnectionFactory
factory
)
{
RedisTemplate
<
String
,
Object
>
redisTemplate
=
new
RedisTemplate
<>();
StringRedisSerializer
stringRedisSerializer
=
new
StringRedisSerializer
();
redisTemplate
.
setKeySerializer
(
stringRedisSerializer
);
redisTemplate
.
setHashKeySerializer
(
stringRedisSerializer
);
redisTemplate
.
setDefaultSerializer
(
new
GenericJackson2JsonRedisSerializer
());
redisTemplate
.
setEnableTransactionSupport
(
false
);
redisTemplate
.
setConnectionFactory
(
factory
);
redisTemplate
.
afterPropertiesSet
();
return
redisTemplate
;
}
@Bean
public
RedisCacheManager
cacheManager
(
RedisConnectionFactory
connectionFactory
)
{
RedisCacheConfiguration
config
=
RedisCacheConfiguration
.
defaultCacheConfig
()
.
entryTtl
(
Duration
.
ofMinutes
(
5
))
.
serializeKeysWith
(
RedisSerializationContext
.
SerializationPair
.
fromSerializer
(
new
StringRedisSerializer
()))
.
serializeValuesWith
(
RedisSerializationContext
.
SerializationPair
.
fromSerializer
(
new
GenericJackson2JsonRedisSerializer
())
)
.
disableCachingNullValues
();
return
RedisCacheManager
.
builder
(
connectionFactory
).
cacheDefaults
(
config
).
transactionAware
().
build
();
}
}
doc/skill.md
0 → 100644
浏览文件 @
2a892bd0
## 实用技巧
> Swagger 文档进行文件下载
```
diff
# 将下载接口上的 @ApiOperation 注解中的 produces 属性值改为 application/octet-stream
- @ApiOperation(value = "文件下载")
+ @ApiOperation(value = "文件下载", produces = MediaType.APPLICATION_OCTET_STREAM_VALUE)
```
> Redis 使用
```
diff
+ @Resource
+ Redis redis;
+ Object value = redis.get(key);
```
> Excel 导入/导出,使用 [MyExcel](https://github.com/liaochong/myexcel) 工具库
编写
预览
Markdown
格式
0%
重试
或
添加新文件
添加附件
取消
您添加了
0
人
到此讨论。请谨慎行事。
请先完成此评论的编辑!
取消
请
注册
或者
登录
后发表评论