Appearance
缓存和redis
项目中缓存使用是非常常见的。用的最多的是基于Redis
缓存。于是我封装了对于Redis
Key和Value常用操作。
TIP
默认不引入Redis依赖,如果要使用Redis需要自己单独引入
xml
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-data-redis</artifactId>
</dependency>
项目使用
注入redisTempUtil
java
@Autowired
private RedisTempUtil redisTempUtil;
如示列
java
@Autowired
private RedisTempUtil redisTempUtil;
@GetMapping("/redis")
public Result chatDialogue( ) {
redisTempUtil.set("test","111");
redisTempUtil.get("test");
redisTempUtil.set("user","userObj",7200l);
redisTempUtil.getAllKey("xx"); //*表达式
redisTempUtil.clean();
redisTempUtil.deleteObject("test");
redisTempUtil.hasKey("");
return Result.buildSuccess();
}
统一缓存管理
上面我们是直接通过工具类redisTempUtil
直接自己定义key
然后去存储,这种方式是不可取的如果key很多随意定义就会很混乱
。我提供了统一缓存key管理接口CacheTmp
参考实现CacheKey
基于枚举形式,把所有key集中管理
java
package cn.soboys.restapispringbootstarter.cache;
import lombok.Getter;
/**
* @author 公众号 程序员三时
* @version 1.0
* @date 2023/7/2 11:04
* @webSite https://github.com/coder-amiao
* 缓存枚举
*/
@Getter
public enum CacheKey implements CacheTmp {
// 密码的重置码
PWD_RESET_CODE("reset:code:", true),
;
private String key;
/**
* Key是否是Key前缀, true时直接取key=key,如果false时key=key+suffix
*/
private boolean hasPrefix;
CacheKey(String key, boolean hasPrefix) {
this.key = key;
this.hasPrefix = hasPrefix;
}
@Override
public Boolean getHasPrefix() {
return this.hasPrefix;
}
@Override
public String getKey() {
return this.key;
}
}
使用
- 存储对于key
java
@GetMapping("/redis")
public Result chatDialogue() {
CacheKey.PWD_RESET_CODE.valueSetAndExpire("test", 60l, TimeUnit.SECONDS, "judy");
return Result.buildSuccess();
}
- 获取对应的key
java
@GetMapping("/redis/get")
public Result redisGet() {
String a = CacheKey.PWD_RESET_CODE.valueGet("judy");
return Result.buildSuccess(a);
}
spring Cache实现
封装了spring Cache
进一步使用 项目中在配置类或者启动类通过注解@EnableCaching
开启直接使用即可
java
@Cacheable(cacheNames = "testCache", keyGenerator = "keyGeneratorStrategy")
@GetMapping("/redis/springCache")
public Result springCache() {
String a = "test cache";
return Result.buildSuccess(a);
}
工具类使用springCacheUtil
支持提供不是基于注解的使用方式
java
@GetMapping("/redis/springCache")
public Result redisSpringCache() {
String a = "111344";
springCacheUtil.putCache("test","key","121e1");
return Result.buildSuccess(a);
}
TIP
默认不引入Redis依赖,缓存基于内存实现(你项目引入redis依赖后会自定切换数据源为Redis缓存)
redis配置
多个项目或者模块使用一个key可能会造成混乱,于是提供了一个全局配置key。
yml
redis:
key-prefix: rest
代码中添加一个 String 类型的 key:testKey
,其实际在 redis 中存储的 key name 为 rest:testKey
全局 key 前缀的配置,并不影响对 key 的其他操作,例如获取对应的 value 时,依然是传入 testKey
,而不是 rest:testKey
java
String key = "testKey";
String value = redisTempUtil.get(key);
String value1 = CacheKey.PWD_RESET_CODE.valueGet(key);