首先安裝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.運行測試程序之後查看結果