redis的安装和springboot整合redis

Redis的安装,以及SpringBoot整合Redis实现缓存操作

一、Redis的安装

1、使用docker拉取redis镜像

docker pull redis

2、制作redis的容器

docker run --name -p 6379:6379 -d redis

3、查看redis容器是否启动

docker ps -a
---如果没有启动就启动redis
docker start  容器ID

二、SpringBoot整合Redis实现缓存

1、配置yml

spring:
  datasource:
    driver-class-name: com.mysql.cj.jdbc.Driver
    url: jdbc:mysql://localhost:3306/studentdb?useUnicode=true&characterEncoding=UTF-8&serverTimezone=UTC
    username: root
    password: root
  redis:
    host: 192.168.159.135
    port: 6379
    password:
    database: 0

logging:
  level:
    com.changan.springboot_redis.mapper.*: debug
debug: true

mybatis:
  type-aliases-package: com.tdh.studentmgr.pojo
  mapper-locations: classpath:mapper/*.xml

2、在service层的实现类中进行逻辑处理

@Service
public class StudentServiceImpl implements StudentService {

    @Autowired
    private StudentMapper studentMapper;

    @Autowired
    private RedisTemplate redisTemplate;

    @Override
    public List<Student> findAll() {
      		String key="Student";//设置键名
      		ListOperations<String,Student> list = redisTemplate.opsForList();
      		Boolean bool=redisTemplate.hasKey(key);//判断是否存在该键名
      		 if (bool){
            return   list.range(key,0,-1);//如果存在直接从缓存查询返回集合
        }else {
             List<Student> students = studentMapper.findAll();
            System.out.println(students);
            list.leftPushAll(key,students);//如果不存在将设置好的key键值和查询数据库的结果放入
            return  students ;//既然都查出来了就直接返回咯
        }
    }

    @Override
    public Student findById(Integer id) {
        String key = "student_"+id;
        //先去redis数据库中查询有没有对应的key值
        Boolean hasKey = redisTemplate.hasKey(key);
        //得到操作string类型的redis对象
        ValueOperations<String,Student> operations = redisTemplate.opsForValue();
        if(hasKey){//如果有
            //通过key获取value返回给服务器
            Student student = operations.get(key);
            return student;
        }
        Student byId = studentMapper.findById(id);
        operations.set(key,byId);
        return byId;
    }

3、序列化设置 RedisTemplateConfig

package com.changan.springboot_redis.config;

import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
import org.springframework.data.redis.connection.RedisConnectionFactory;
import org.springframework.data.redis.core.RedisTemplate;
import org.springframework.data.redis.serializer.Jackson2JsonRedisSerializer;

import java.net.UnknownHostException;

@Configuration
public class RedisTemplateConfig {
    //覆盖默认的自动配置
    @Bean
    public RedisTemplate<Object, Object> redisTemplate(
            RedisConnectionFactory redisConnectionFactory) throws UnknownHostException {

        RedisTemplate<Object, Object> template = new RedisTemplate<>();
        template.setConnectionFactory(redisConnectionFactory);
        //修改默认的序列化规则
        //1.创建序列化规则对象
        Jackson2JsonRedisSerializer jackson2JsonRedisSerializer=new Jackson2JsonRedisSerializer(Object.class);
        //2.更改默认的序列化规则
        template.setDefaultSerializer(jackson2JsonRedisSerializer);
        return template;
    }
}

4、控制层(不做逻辑处理,直接调用就好!)

@RestController
public class StudentController {

    @Autowired
    private StudentService studentService;

    @GetMapping("/students")
    public List<Student> findAll(){
        return studentService.findAll();
    }

    @GetMapping("/student/{id}")
    public Student findById(@PathVariable("id")Integer id){
        return studentService.findById(id);
    }
}

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值