2.2 引入相关依赖
我们引入Springboot Web的依赖,以启动REST服务。还需要引入Spring Data Redis相关的依赖。最后,还需要commons-pool2,不然会因为缺少类而无法启动。
Redis数据库索引,默认为0
spring.redis.database=0
Redis端口
spring.redis.port=6379
Redis服务器主机
spring.redis.host=localhost
连接池最大连接数
spring.redis.lettuce.pool.max-active=8
连接池最大空闲
spring.redis.lettuce.pool.max-idle=8
连接池最小空闲
spring.redis.lettuce.pool.min-idle=2
连接池最大阻塞等待时间
spring.redis.lettuce.pool.max-wait=1ms
超时时间
spring.redis.lettuce.shutdown-timeout=100ms
2.4 创建实体类
存入Redis中的数据类型,可以是自定义的一个类,注意需要加上注解@RedisHash和@Id。存入Redis的数据为Set类型。
具体代码如下:
package com.pkslow.redis.model;
import org.springframework.data.annotation.Id;
import org.springframework.data.redis.core.RedisHash;
import java.util.Date;
@RedisHash(“User”)
public class User {
@Id
private String userId;
private String name;
private Integer age;
private Date createTime = new Date();
public String getUserId() {
return userId;
}
public void setUserId(String userId) {
this.userId = userId;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public Integer getAge() {
return age;
}
public void setAge(Integer age) {
this.age = age;
}
public Date getCreateTime() {
return createTime;
}
public void setCreateTime(Date createTime) {
this.createTime = createTime;
}
}
2.5 数据库访问层UserRepository接口
直接继承CrudRepository接口就行了,不用自己来实现,需要注意CrudRepository<User, String>的泛型类型:
package com.pkslow.redis.dal;
import com.pkslow.redis.model.User;
import org.springframework.data.repository.CrudRepository;
public interface UserRepository extends CrudRepository<User, String> {
}
2.6 实现Controller
Controller实现了RESTful风格的增删改查功能,只要把UserRepository注入便可以使用它来操作:
package com.pkslow.redis.controller;
import com.pkslow.redis.dal.UserRepository;
import com.pkslow.redis.model.User;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.*;
@RestController
@RequestMapping("/user")
public class UserController {
@Autowired
private final UserRepository userRepository;
public UserController(UserRepository userRepository) {
this.userRepository = userRepository;
}
@GetMapping("")
public Iterable<User> getAllUsers() {
return userRepository.findAll();
}
@GetMapping("/{userId}")
public User getByUserId(@PathVariable String userId) {
return userRepository.findById(userId).orElse(new User());
}
@PostMapping("")
public User addNewUser(@RequestBody User user) {
return userRepository.save(user);
}
@DeleteMapping("/{userId}")
public String delete(@PathVariable String userId) {
User user = new User();
user.setUserId(userId);
userRepository.deleteById(userId);
return "deleted: " + userId;
}
@PutMapping("")
public User update(@RequestBody User user) {
return userRepository.save(user);
}
}
亚马逊测评www.yisuping.com