我使用的是redisson
首先是maven 版本自选
<dependency>
<groupId>org.redisson</groupId>
<artifactId>redisson</artifactId>
<version>3.7.3</version>
</dependency>
application.properties 会配置的自己根据需求配置 不会配置的直接复制
#redis
#IP需要根据自己的实际需求进行配置
spring.redis.host=http://10.35.147.15:6379
spring.redis.jedis.pool.max-idle=10000
spring.redis.jedis.pool.max-active=5000
spring.redis.jedis.pool.max-wait=6000
spring.redis.jedis.pool.min-idle=4
RedisConfiguration.java
import org.redisson.Redisson;
import org.redisson.api.RedissonClient;
import org.redisson.config.Config;
import org.springframework.beans.factory.annotation.Value;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
@Configuration
public class RedisConfiguration {
@Value("${spring.redis.host}")
private String host;
//如果你安装redis时有密码 自己需要在application.properties文件里配置
//@Value("${spring.redis.password}")
//private String password;
@Value("${spring.redis.jedis.pool.max-active}")
private int maxActive;
@Value("${spring.redis.jedis.pool.max-idle}")
private int maxIdle;
@Value("${spring.redis.jedis.pool.max-wait}")
private int maxWait;
@Value("${spring.redis.jedis.pool.min-idle}")
private int minIdle;
@Bean(destroyMethod = "shutdown")
public RedissonClient getRedisson() {
Config config = new Config();
config.useSingleServer().setAddress(host)
//如果有密码需要在当前设置
//.setPassword(password)
.setDatabase(0)
.setConnectionPoolSize(maxActive)
//如果当前连接池里的连接数量超过了最小空闲连接数,
//而同时有连接空闲时间超过了该数值,那么这些连接将会自动被关闭,
//并从连接池里去掉。时间单位是毫秒
.setIdleConnectionTimeout(maxIdle)
.setTimeout(maxWait)
.setPingConnectionInterval(3000)
.setDatabase(0);
return Redisson.create(config);
}
}
根据需求进行简单配置例子
UserCache.java
import org.redisson.api.RBucket;
import org.redisson.api.RedissonClient;
import org.redisson.codec.KryoCodec;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Component;
import java.util.concurrent.TimeUnit;
@Component
public class UserCache {
@Autowired
private RedissonClient redisson;
private static KryoCodec kryoCodec = new KryoCodec();
// 获取
public String getItemCode(String captchaId) {
//这个userLoginCache 相当于你在redis里面的分组 这个整租分类数据的前缀
RBucket<String> info = redisson.getBucket("userLoginCache:" + captchaId, kryoCodec);
if (info.isExists()) {
try {
return info.get();
} catch (Exception e) {
return null;
}
}
return "";
}
//将数据存入redis 第一个时key值 第二个是存入的数据
//第三个是多长时间 第四个是 时间单位 例如天或者小时
public void setItemCode(String captchaId, String value, long time, TimeUnit timeunit) {
RBucket<String> info = redisson.getBucket("userLoginCache:" + captchaId, kryoCodec);
info.set(value);
info.expire(time, timeunit);
}
//根据你的key值删除
public void delItemCode(String captchaId) {
RBucket<String> info = redisson.getBucket("userLoginCache:" + captchaId, kryoCodec);
if (info.isExists()) {
info.delete();
}
}
}
使用示例
@Autowired
private UserCache userCache;
public void doFilterInternal(){
String json = userCache.getItemCode(userDetails.getId().toString());
if (StringUtils.isNotEmpty(json)) {
UserCacheInfo user = JSONObject.parseObject(json, UserCacheInfo.class);
}
}
}