快速使用SpringDataRedis (学习笔记)

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可视化工具

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值