第八章:springboot整合Redis

版权声明:如需转载,请备注出处 https://blog.csdn.net/u013783065/article/details/81164749

这次我们主要是整合Redis,如果有没有接触过redis的,可以先大致看一下我的这篇文章,能够让你大致的对redis有个了解:

Redis初级入门传送带

首先我们创建一个工程:

完整的pom文件如下:

<?xml version="1.0" encoding="UTF-8"?>
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
         xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
    <modelVersion>4.0.0</modelVersion>

    <groupId>com.wujie</groupId>
    <artifactId>springboot-redis</artifactId>
    <version>0.0.1-SNAPSHOT</version>
    <packaging>jar</packaging>

    <name>springboot-redis</name>
    <description>Demo project for Spring Boot</description>

    <parent>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-starter-parent</artifactId>
        <version>2.0.3.RELEASE</version>
        <relativePath/> <!-- lookup parent from repository -->
    </parent>

    <properties>
        <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
        <project.reporting.outputEncoding>UTF-8</project.reporting.outputEncoding>
        <java.version>1.8</java.version>
    </properties>

    <dependencies>
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-data-redis</artifactId>
        </dependency>
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-web</artifactId>
        </dependency>

        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-test</artifactId>
            <scope>test</scope>
        </dependency>
        <!-- https://mvnrepository.com/artifact/redis.clients/jedis -->
        <dependency>
            <groupId>redis.clients</groupId>
            <artifactId>jedis</artifactId>
            <version>2.9.0</version>
        </dependency>

    </dependencies>

    <build>
        <plugins>
            <plugin>
                <groupId>org.springframework.boot</groupId>
                <artifactId>spring-boot-maven-plugin</artifactId>
            </plugin>
        </plugins>
    </build>


</project>

老规矩,既然工程创建完成了,那我们首先需要来配置下数据源啦:

spring:
  redis:
    host: localhost
    port: 6379
    database: 1
    timeout: 0ms
    jedis:
          pool:
            max-active: 8
            max-idle: 500
            max-wait: 1ms

如果你的redis有密码的话,那就配置一下。

数据层dao

@Repository
public class RedisDao {
    @Autowired
    private StringRedisTemplate redisTemplate;
    @Autowired
    private RedisTemplate<Object,Object> template;

    public void setKey(String key,String value){
        ValueOperations<String,String> operations = redisTemplate.opsForValue();
        //设置过期时间为一分钟
        operations.set(key,value,1, TimeUnit.MINUTES);
    }

    public String getValue(String key){
        ValueOperations<String,String> operations = redisTemplate.opsForValue();
        return  operations.get(key);
    }

    public Long setList(String key,String ...str){
        ListOperations<String, String> operations = redisTemplate.opsForList();
        Long student = operations.leftPushAll(key, str);
        return student;
    }

    public List<String> getList(String key,Integer start,Integer end){
        ListOperations<String, String> operations = redisTemplate.opsForList();
        List<String> list = operations.range(key, start, end);
        return list;
    }

    public Long addObject(Object object){
        SetOperations<Object, Object> operations = template.opsForSet();
        Long add = operations.add(object.getClass(), object);
        return add;
    }
}

service层:

public interface StudentService {
    public void setString(String key,String value);

    public String getString(String key);

    public Long setListString(String key,String... str);

    public List<String> getListString(String key,Integer start,Integer end);

    public int addStudent(Student student);

    public Student findById(Integer id);

    public List<Object> findAll(String key);
}

service层实现类:

@Service
public class StudentServiceImpl implements StudentService {
    @Autowired
    private RedisDao redisDao;
    @Resource
    private RedisTemplate<String,Student> template;
    @Value("${student}")
    private String student;

    @Override
    public void setString(String key, String value) {
        redisDao.setKey(key, value);
    }

    @Override
    public String getString(String key) {
        return redisDao.getValue(key);
    }

    @Override
    public Long setListString(String key, String... str) {
        return redisDao.setList(key,str);
    }

    @Override
    public List<String> getListString(String key, Integer start, Integer end) {
        return redisDao.getList(key, start, end);
    }

    @Override
    public int addStudent(Student student) {
//        template.opsForValue().set(this.student + student.getId(), student, 600, TimeUnit.SECONDS);
        template.opsForHash().put(this.student,this.student+student.getId(),student);
        return 0;
    }


    @Override
    public Student findById(Integer id) {
        Student student = (Student) template.opsForHash().get(this.student, this.student + id);
        return student;
    }

    @Override
    public List<Object> findAll(String key) {
        List<Object> list = template.opsForHash().values(this.student);
        return  list;
    }
}

controller层:

@RestController
@RequestMapping("student")
public class StudentController {
    @Autowired
    private StudentService studentService;

    @RequestMapping("setString")
    public String setString(String key, String value) {
        studentService.setString(key, value);
        return "success";
    }
    @RequestMapping("getString")
    public String getString(String key) {
        String string = studentService.getString(key);
        if (string != null) {
            return string;
        }else {
            return "no data";
        }
    }
    @RequestMapping("setListString")
    public String setListString(String key, String... str) {
        Long aLong = studentService.setListString(key, str);
        if (aLong != null) {
            return "success "+aLong+" data";
        }else{
            return "fail";
        }
    }
    @RequestMapping("getListString")
    public List<String> getListString(String key, Integer start, Integer end) {
        List<String> listString = studentService.getListString(key, start, end);
        if (listString != null && listString.size() != 0) {
            return listString;
        }else{
            return null;
        }
    }
    @RequestMapping("add")
    public int addStudent(Student student) {
        return studentService.addStudent(student);
    }

    @RequestMapping("findById")
    public Student findById(Integer id) {
        Student student = studentService.findById(id);
        return student;
    }
    @RequestMapping("findAll")
    public List<Object> findAll(String key){
        List<Object> list = studentService.findAll(key);
        return list;
    }
}

结语

至此,springboot算是基本完结了,现在的就是我们只需要加入数据库的链接查询方式就可以了,这里我们做了普通的字符串的存取,对象的存取。以上代码经过测试没有问题。如有问题请联系我。有错误也请多多指出,我们共同进步,共同学习

欢迎关注我的公众号我们一起学习:

源码地址

猜你喜欢

转载自blog.csdn.net/u013783065/article/details/81164749
今日推荐