一 .Redis常用命令
1.字符串 string
2. 哈希 hash
3.列表 list
4.集合set
5.有序集合 SOrted set
6.通用命令
Redis中的通用命令,主要是针对key进行操作的相关命令:
二. Spring Data Redis
1.导入pom.xml文件
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-data-redis</artifactId>
</dependency>
2.配置application.yml
spring:
application:
name: springdataredis_demo
#Redis相关配置
redis:
host: linux的ip地址
port: 6379
#password: hcc
database: 0 #操作的是0号数据库
3.提供配置类(Spring Data Redis数据序列化配置)
/**
* Redis配置类
*/
@Configuration
public class RedisConfig {
@Bean
public RedisTemplate<Object, Object> redisTemplate(@Autowired RedisConnectionFactory connectionFactory) {
//1.构建RedisTemplate模板对象
RedisTemplate<Object, Object> template = new RedisTemplate<>();
template.setConnectionFactory(connectionFactory);
//2.构建序列化的对象,比如序列化转json的一些vo等
Jackson2JsonRedisSerializer objecterializer = new Jackson2JsonRedisSerializer(Object.class);
objecterializer.setObjectMapper(new ObjectMapper());
//3.构建普通字符串序列化对象
StringRedisSerializer stringSerializer = new StringRedisSerializer();
//4.为不同的数据结构设置不同的序列化方案
//设置value序列化方式
template.setValueSerializer(objecterializer);
//设置key序列化方式
template.setKeySerializer(stringSerializer);
//设置hash中field字段序列化方式
template.setHashKeySerializer(stringSerializer);
//设置hash中value的序列化方式
template.setHashValueSerializer(objecterializer);
//5.初始化参数设置
template.afterPropertiesSet();
return template;
}
}
4.注入对象
@Autowired
private RedisTemplate redisTemplate;
三.Spring Data Redis数据序列化配置原理
1.查看自动装配的Bean
默认序列化为jdk
需要自己构建RedisTemplate模板对象,名为redisTemplate(见提供配置类).
四.本地缓存和远程缓存的区别
五.本地缓存使用
引入依赖
<dependency>
<groupId>com.github.ben-manes.caffeine</groupId>
<artifactId>caffeine</artifactId>
</dependency>
添加缓存 获取缓存
public void test01() {
List<Integer> datas= Arrays.asList(100,200,300,400);
//缓存数据
caffeineCache.put("innerInfos",datas);
//获取缓存数据
Object datas2 = caffeineCache.getIfPresent("innerInfos");
System.out.println(datas2==datas);
}
无缓存数据补救方式
public void test02() {
Object data1 = caffeineCache.get("innerInfos", key -> {
System.out.println(key);
//可以去数据库动态查询数据
return Arrays.asList(500, 600, 700, 800);
});
Object data2 = caffeineCache.getIfPresent("innerInfos");
System.out.println(data1==data2);
}
六.多级缓存优化