首先安装Redis服务器
1.Redis的依赖配置,pom.xml新增以下依赖:
<!--redis缓存-->
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-data-redis</artifactId>
</dependency>
<dependency>
<groupId>com.google.code.gson</groupId>
<artifactId>gson</artifactId>
<version>2.6.2</version>
</dependency>
Gson转换json数据格式工具
2.Redis配置,application.yml新增以下配置:
spring:
redis:
database: 0 # Redis数据库索引(默认为0)
host: localhost # Redis服务器地址
port: 6379 # Redis服务器连接端口
password: # Redis服务器连接密码(默认为空)
timeout: 60000ms # 连接超时时间(毫秒)
jedis:
pool:
max-active: 1000 # 连接池最大连接数(使用负值表示没有限制)
max-idle: 100 # 连接池中的最大空闲连接
max-wait: -1 # 连接池最大阻塞等待时间(使用负值表示没有限制)
min-idle: 1 # 连接池中的最小空闲连接
3.RedisTemplate的初始化
@Configuration
public class RedisConfig{
/**
* 对存取的字符串进行一个json格式的系列化初始配置
*
* @param factory
* @return
*/
@Bean
public RedisTemplate<String, String> redisTemplate(RedisConnectionFactory factory) {
StringRedisTemplate template = new StringRedisTemplate(factory);
Jackson2JsonRedisSerializer jackson2JsonRedisSerializer = new Jackson2JsonRedisSerializer(Object.class);
ObjectMapper objectMapper = new ObjectMapper();
objectMapper.setVisibility(PropertyAccessor.ALL, JsonAutoDetect.Visibility.ANY);
objectMapper.enableDefaultTyping(ObjectMapper.DefaultTyping.NON_FINAL);
jackson2JsonRedisSerializer.setObjectMapper(objectMapper);
// 设置key和value的序列化规则
template.setKeySerializer(new StringRedisSerializer());
template.setValueSerializer(jackson2JsonRedisSerializer);
template.afterPropertiesSet();
return template;
}
}
4.创建Redis服务类,gson将对象转换为json格式存储,需要取出数据时,再将json转换为java对象,UserInfo为实体用户User的 服务类
@Repository
public class UserRedis {
@Resource
private RedisTemplate<String,String> redisTemplate;
public void add(String key,Long time,UserInfo user){
Gson gson = new Gson();
redisTemplate.opsForValue().set(key,gson.toJson(user),time, TimeUnit.MINUTES);
}
public void add(String key, Long time, List<UserInfo> users){
Gson gson = new Gson();
redisTemplate.opsForValue().set(key,gson.toJson(users),time,TimeUnit.MINUTES);
}
public UserInfo get(String key){
Gson gson = new Gson();
UserInfo user = null;
String userJson = redisTemplate.opsForValue().get(key);
if(!StringUtils.isEmpty(userJson))user = gson.fromJson(userJson,UserInfo.class);
return user;
}
public List<UserInfo> users(String key){
Gson gson = new Gson();
List<UserInfo> users = null;
String usersJson = redisTemplate.opsForValue().get(key);
// 将期望解析的数据类型返回给gson
if(!StringUtils.isEmpty(usersJson))users = gson.fromJson(usersJson,new TypeToken<List<UserInfo>>(){}.getType());
return users;
}
public void delete(String key){
redisTemplate.opsForValue().getOperations().delete(key);
}
}
5.Redis测试
@RunWith(SpringRunner.class)
@SpringBootTest
public class RedisTest {
private Logger logger = LoggerFactory.getLogger(RedisTest.class);
@Autowired
UserRedis userRedis;
@Before
public void setup(){
UserInfo user = new UserInfo();
user.setCompanyId("123");
user.setUserName("花无缺");
user.setIdNo("1234113299002312421");
user.setPkid("3212312313223123");
userRedis.delete(this.getClass().getName()+"userByName:"+user.getUserName());
userRedis.add(this.getClass().getName()+":userByPkid:"+user.getPkid(),10L,user);
}
@Test
public void get(){
UserInfo user = userRedis.get(this.getClass().getName()+":userByPkid:3212312313223123");
logger.info("=================user==================name:{}",user.getUserName());
}
}
6.IDEA的Run/Debug Configuration 配置中增加Junit配置项目,运行测试程序,点击右上角的Edit Configrations
选择所在的类以及模块
7.运行测试程序之后查看结果