13. Spring Boot Redis¶
13.1. 开始使用Redis¶
13.2. Maven依赖¶
1 2 3 4 5 6 7 8 9 10 11 12 | <dependency>
<groupId>org.springframework.data</groupId>
<artifactId>spring-data-redis</artifactId>
<version>2.0.3.RELEASE</version>
</dependency>
<dependency>
<groupId>redis.clients</groupId>
<artifactId>jedis</artifactId>
<version>2.9.0</version>
<type>jar</type>
</dependency>
|
13.3. Configuration¶
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 | @Bean
JedisConnectionFactory jedisConnectionFactory() {
JedisConnectionFactory jedisConFactory
= new JedisConnectionFactory();
jedisConFactory.setHostName("localhost");
jedisConFactory.setPort(6379);
return jedisConFactory;
}
@Bean
public RedisTemplate<String, Object> redisTemplate() {
RedisTemplate<String, Object> template = new RedisTemplate<>();
template.setConnectionFactory(jedisConnectionFactory());
return template;
}
|
13.4. Demo¶
13.4.1. pom¶
1 2 3 4 5 6 7 8 | <dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-web</artifactId>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-data-redis</artifactId>
</dependency>
|
13.4.2. entity¶
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 | package com.example.redis.entity;
public class User {
private String id;
private String name;
private long followers;
public String getId() {
return id;
}
public void setId(String id) {
this.id = id;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public long getFollowers() {
return followers;
}
public void setFollowers(long followers) {
this.followers = followers;
}
@Override
public String toString() {
return "User [id=" + id + ", name=" + name + ", followers=" + followers + "]";
}
}
|
13.4.3. repository¶
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 | package com.example.redis.repository;
import java.util.Map;
import javax.annotation.PostConstruct;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.data.redis.connection.lettuce.LettuceConnectionFactory;
import org.springframework.data.redis.core.HashOperations;
import org.springframework.data.redis.core.StringRedisTemplate;
import org.springframework.stereotype.Repository;
import com.example.redis.entity.User;
@Repository
public class UserRepository {
@Autowired
private StringRedisTemplate stringRedisTemplate;
private HashOperations<String, Object, Object> hashOperations;
@PostConstruct
private void init() {
hashOperations = stringRedisTemplate.opsForHash();
}
public void setDatabase(int index) {
LettuceConnectionFactory lettuceConnectionFactory = (LettuceConnectionFactory) stringRedisTemplate
.getConnectionFactory();
lettuceConnectionFactory.getStandaloneConfiguration().setDatabase(index);
stringRedisTemplate.setConnectionFactory(lettuceConnectionFactory);
}
public void save(User user) {
setDatabase(0);
hashOperations.put("USER", user.getId(), user.toString());
}
public void delete(String id) {
hashOperations.delete("USER", id);
}
public Map getUsers() {
return hashOperations.entries("USER");
}
}
|
13.4.4. controller¶
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 | package com.example.redis.controller;
import java.time.LocalTime;
import java.util.Map;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.http.ResponseEntity;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.RestController;
import com.example.redis.entity.User;
import com.example.redis.repository.UserRepository;
@RestController
public class HelloWorldController {
@Autowired
private UserRepository userRepository;
@GetMapping("/")
public ResponseEntity<Map> hello(String name) {
User user = new User();
user.setId(LocalTime.now().toString());
user.setName("Murphy");
user.setFollowers(33);
userRepository.save(user);
return ResponseEntity.ok(userRepository.getUsers());
}
}
|
13.4.5. application.properties¶
spring.redis.host=127.0.0.1
spring.redis.port=6379