Redis的Java客户端很多,常用的几种:
Spring Data Redis是Spring的一部分,对Jedis底层开发进行了高度封装。在Spring项目中,可以使用SpringDataRedis来简化操作
SpringDataRedis的使用
操作步骤:
1.导入SpringDataRedis依赖
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-data-redis</artifactId>
</dependency>
2.配置Redis数据源
//在配置文件中添加redis参数(redis是被spring所识别的,在spring下)
spring:
redis:
host: ${sky.redis.host} //host后面写主机IP地址 本机redis就写localhost
port: ${sky.redis.port} //redis 端口号
password: ${sky.redis.password} //密码 没有就删除该行
database: ${sky.redis.database}//指定数据库 默认是0号数据库,redis总共有16个数据库
//看不懂上面的可以看下面这个实例
spring:
redis:
host: localhost
port: 6379
password: 123456
database: 1
3.编写配置类,创建RedisTemplate对象
@Configuration
public class RedisConfiguration {
@Bean
public RedisTemplate redisTemplate(RedisConnectionFactory redisConnectionFactory){
log.info("开始创建redis模板对象...");
RedisTemplate redisTemplate = new RedisTemplate();
//设置redis的连接工厂对象
redisTemplate.setConnectionFactory(redisConnectionFactory);
//设置redis key的序列化器
redisTemplate.setKeySerializer(new StringRedisSerializer());
return redisTemplate;
}
}
4.通过RedisTemplate对象操作Redis
//操作字符串类型
ValueOperations valueOperations = redisTemplate.opsForValue();
//操作哈希类型
HashOperations hashOperations = redisTemplate.opsForHash();
//操作列表类型
SetOperations setOperations = redisTemplate.opsForSet();
//操作无序集合类型
ZSetOperations zSetOperations = redisTemplate.opsForZSet();
//操作有序集合类型
ListOperations listOperations = redisTemplate.opsForList();
案例:
@GetMapping("/list")
@ApiOperation("根据分类id查询菜品")
public Result<List<DishVO>> list(Long categoryId) {
//查询redis数据
// 拼接redis的key
String key = "dish_" + categoryId;
List<DishVO> list = (List<DishVO>) redisTemplate.opsForValue().get(key);
//判断是否缓存
if (list != null && list.size() > 0) {
//响应前端
return Result.success(list);
}
//查询数据库
Dish dish = new Dish();
dish.setCategoryId(categoryId);
dish.setStatus(StatusConstant.ENABLE);//查询起售中的菜品
list = dishService.listWithFlavor(dish);
//将数据放入缓存
redisTemplate.opsForValue().set(key, list);
return Result.success(list);
}
拓展问题:为什么需要编写配置类
因为当你使用java代码存入redis数据时,redis会自动将数据进行编码
这样会使我们的可读性变得很差,我们需要配置redis使redis的key不进行JDK序列化使用StringRedisSerializer序列化,来使我们的可读性增加
框架中是有配置Redis的方法的只需要记住配置序列化器的代码就可以了
推荐:
推荐使用Another Redis Desktop ManagerRedis可视化工具