SpringBoot中整合Redis有好几种方式,这里简单的记录一下使用SpringData整合Redis,进行简单的操作。
我们还需要手动添加commos-pool2 的依赖。
<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-test</artifactId>
<scope>test</scope>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-web</artifactId>
</dependency>
<dependency>
<groupId>org.apache.commons</groupId>
<artifactId>commons-pool2</artifactId>
</dependency>
</dependencies>
在配置文件配置一些redis连接配置
Application.properties
spring.redis.database=0
#spring.redis.password=xxx
spring.redis.port=6379
spring.redis.host=192.168.127.188
spring.redis.lettuce.pool.min-idle=5
spring.redis.lettuce.pool.max-idle=10
spring.redis.lettuce.pool.max-active=8
spring.redis.lettuce.pool.max-wait=1ms
spring.redis.lettuce.shutdown-timeout=100ms
对redis的操作可以使用RedisTemplate
也可以使用StringRedisTemplate
DAO
@Repository
public class MyDao {
@Autowired
RedisTemplate redisTemplate;
public void set(String key, String value) {
ValueOperations ops = redisTemplate.opsForValue();
ops.set(key, value);
}
public String get(String key) {
ValueOperations ops = redisTemplate.opsForValue();
return ops.get(key).toString();
}
public void setuser(User user) {
ValueOperations ops = redisTemplate.opsForValue();
ops.set(user.getId(), user);
}
public User getuser(String id) {
ValueOperations<String, User> ops = redisTemplate.opsForValue();
User user = ops.get(id);
System.out.println(user);
return user;
}
}
Service
@Service
public class MyService {
@Autowired
MyDao myDao;
public void set(String key, String value) {
myDao.set(key,value);
}
public String get(String key) {
return myDao.get(key);
}
public void setuser(User user) {
myDao.setuser(user);
}
public String getuser(String id) {
String s = myDao.getuser(id).toString();
return s;
}
}
Controller
@Controller
public class MyController {
@Autowired
MyService myService;
@RequestMapping("/set")
@ResponseBody
public void set(String key, String value) {
myService.set(key, value);
}
@RequestMapping("/get")
@ResponseBody
public String get(String key) {
return myService.get(key);
}
@RequestMapping("/setuser")
@ResponseBody
public void setUser() {
User user = new User();
user.setId("111");
user.setUsername("zsl");
user.setPassword("zsl");
myService.setuser(user);
}
@RequestMapping(value = "/getuser",produces = "text/html;charset=UTF-8")
@ResponseBody
public String getUser() {
return myService.getuser("111");
}
}
Redistemplate 可以调用 ValueOperations 和 ListOperations 等等方法,都是对Redis 命令的高级封装,但是ValueOperations 等等这些命令最终是要转化成为 RedisCallback 来执行的。