- spring-boot-starter-data-redisを導入します
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-data-redis</artifactId>
</dependency>
- application.propertiesはredis接続アドレスを構成します
spring.redis.host=192.168.137.142
- RestTemplateを使用してredisを操作する
- redisTemplate.opsForValue(); //操作文字列
- redisTemplate.opsForHash(); //操作ハッシュ
- redisTemplate.opsForSet(); //操作セット
- redisTemplate.opsForList(); //操作リスト
- redisTemplate.opsForZSet(); //操作が整然と設定されている
- キャッシュ、CacheManagerCustomizersを構成します
package com.springcache;
import org.mybatis.spring.annotation.MapperScan;
import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
import org.springframework.cache.annotation.EnableCaching;
@MapperScan("com.springcache.dao")
@SpringBootApplication
@EnableCaching
public class SpringCacheApplication {
public static void main(String[] args) {
SpringApplication.run(SpringCacheApplication.class, args);
}
}
package com.springcache.service.Impl;
import com.springcache.dao.EmpMapper;
import com.springcache.pojo.Emp;
import com.springcache.pojo.EmpExample;
import com.springcache.service.EmpService;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.cache.annotation.Cacheable;
import org.springframework.stereotype.Service;
import java.util.List;
@Service
public class EmpServiceImpl implements EmpService {
@Autowired
private EmpMapper empMapper;
@Override
@Cacheable(cacheNames = {
"Emp"})
public Emp getlists(Integer no) {
EmpExample empExample =new EmpExample();
return empMapper.selectByPrimaryKey(no);
}
}
package com.springcache.controller;
import com.alibaba.fastjson.JSONArray;
import com.springcache.pojo.Emp;
import com.springcache.service.EmpService;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.ResponseBody;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
@Controller
public class EpmController {
@Autowired
private EmpService empService;
@RequestMapping("/getlist")
@ResponseBody
public String getlist(){
Map<String,Object>map =new HashMap<>();
Emp Emp= empService.getlists(14);
if (Emp!=null){
map.put("Emp",Emp);
}else {
map.put("mgs","失败");
}
return JSONArray.toJSONString(map);
}
}
package com.springcache.config;
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.core.StringRedisTemplate;
import org.springframework.data.redis.serializer.*;
import java.time.Duration;
@Configuration
@EnableCaching
public class RedisConfig {
private Duration timeToLive = Duration.ofDays(1);
@Bean
public RedisCacheManager cacheManager(RedisConnectionFactory connectionFactory) {
RedisCacheConfiguration config = RedisCacheConfiguration.defaultCacheConfig()
.entryTtl(this.timeToLive)
.serializeKeysWith(RedisSerializationContext.SerializationPair.fromSerializer(keySerializer()))
.serializeValuesWith(RedisSerializationContext.SerializationPair.fromSerializer(valueSerializer()))
.disableCachingNullValues();
RedisCacheManager redisCacheManager = RedisCacheManager.builder(connectionFactory)
.cacheDefaults(config)
.transactionAware()
.build();
return redisCacheManager;
}
@Bean
public RedisTemplate<String, String> redisTemplate(RedisConnectionFactory factory) {
StringRedisTemplate template = new StringRedisTemplate(factory);
template.setValueSerializer(new StringRedisSerializer());
template.setKeySerializer(new StringRedisSerializer());
template.afterPropertiesSet();
return template;
}
private RedisSerializer<String> keySerializer() {
return new StringRedisSerializer();
}
private RedisSerializer<Object> valueSerializer() {
return new GenericJackson2JsonRedisSerializer();
}
}