版权声明:如需转载,请备注出处 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算是基本完结了,现在的就是我们只需要加入数据库的链接查询方式就可以了,这里我们做了普通的字符串的存取,对象的存取。以上代码经过测试没有问题。如有问题请联系我。有错误也请多多指出,我们共同进步,共同学习
欢迎关注我的公众号我们一起学习: