· Redis(遠程字典服務器)是一個內存數據結構項目,實現了具備可選持久性的分佈式內存鍵值數據庫。Redis支持各類抽象數據結構,例如字符串、列表、映射、集合、排序集合、HyperLogLogs、流和空間索引。java
· Spring Boot是Spring的基於約定的配置解決方案,用於建立能夠「運行」的獨立的、生產級的基於Spring的應用程序。它是由Spring團隊針對最佳配置以及Spring平臺和第三方庫的最佳使用的「意見視圖」預先配置的。大多數Spring Boot應用程序只須要不多的Spring配置。web
· Spring的數據訪問框架解決了開發人員在應用程序中使用數據庫時遇到的常見困難。提供了對Java中全部流行數據訪問框架的支持:JDBC,iBatis / MyBatis,Hibernate,Java數據對象(JDO),Java持久性API(JPA),Oracle TopLink,Apache OJB和Apache Cayenne等。redis
·對於Linux,您能夠今後處輕鬆下載最新版本(5.0)。spring
·若是您使用Windows 10,則能夠受益於Docker映像,可今後處訪問。docker
$ docker run -d --name redis -p 6379:6379 redis複製代碼
6379是默認端口,您能夠將其更改成所需的任何端口。數據庫
·若是使用Windows 7,則只能使用Redis 4.0版及如下版本,但不能使用最新版本(5.0)。可今後處下載Redis版本4.0.2的.msi和zip文件。apache
<?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 https://maven.apache.org/xsd/maven-4.0.0.xsd"> <modelVersion>4.0.0</modelVersion> <groupId>org.springframework</groupId> <artifactId>gs-spring-boot</artifactId> <version>0.1.0</version> <parent> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-parent</artifactId> <version>2.1.6.RELEASE</version> </parent> <dependencies> <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-web</artifactId> </dependency> </dependencies> <properties> <java.version>1.8</java.version> </properties> <build> <plugins> <plugin> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-maven-plugin</artifactId> </plugin> </plugins> </build></project>複製代碼
<dependency> <groupId>org.projectlombok</groupId> <artifactId>lombok</artifactId> <version>1.18.0</version> <optional>true</optional></dependency>複製代碼
<dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-data-redis</artifactId></dependency>複製代碼
1. Lettuceapi
2. Jedisbash
@Beanpublic LettuceConnectionFactory redisConnectionFactory() { RedisStandaloneConfiguration redisStandaloneConfiguration = new RedisStandaloneConfiguration(hostName, port); return new LettuceConnectionFactory(redisStandaloneConfiguration);}複製代碼
@Beanpublic RedisTemplate<?, ?> redisTemplate() { RedisTemplate<String, Object> template = new RedisTemplate<>(); RedisSerializer<String> stringSerializer = new StringRedisSerializer(); JdkSerializationRedisSerializer jdkSerializationRedisSerializer = new JdkSerializationRedisSerializer(); template.setConnectionFactory(redisConnectionFactory()); template.setKeySerializer(stringSerializer); template.setHashKeySerializer(stringSerializer); template.setValueSerializer(jdkSerializationRedisSerializer); template.setHashValueSerializer(jdkSerializationRedisSerializer); template.setEnableTransactionSupport(true); template.afterPropertiesSet(); return template;}複製代碼
@Data@NoArgsConstructor@RedisHash("User")public class User implements Serializable{ @Id private Long id; private String name; private String surname; private String age; public User(Long id, String name, String surname, String age) { this.id = id; this.name = name; this.surname = surname; this.age = age; }}複製代碼
Spring Data已經爲咱們實現了CRUD方法。咱們只需建立擴展CrudRepository的接口便可輕鬆使用它們。服務器
@Repositorypublic class UserDaoImpl implements UserDao { @Autowired UserRepository userRepository; @Autowired RedisTemplate redisTemplate; private static final String KEY = "user"; public Boolean saveRule(User user) { try { Map ruleHash = new ObjectMapper().convertValue(user, Map.class); redisTemplate.opsForHash().put(KEY, user.getName(), ruleHash); return true; } catch (Exception e) { e.printStackTrace(); return false; } } public User findByName(String name) { Map userMap = (Map) redisTemplate.opsForHash().get(KEY, name); User user = new ObjectMapper().convertValue(userMap, User.class); return user; }}複製代碼
@RestController@RequestMapping("/api")public class UserController { @Autowired AuthorizationService authorizationService; @RequestMapping(value = "/addUser", method = RequestMethod.POST) public ResponseEntity<String> addUser(@RequestBody User User) { ModelMapper modelMapper = new ModelMapper(); User user = modelMapper.map(User, User.class); Boolean result = authorizationService.saveRule(user); if (result) { return ResponseEntity.ok("A new user is saved!!!"); } else { return ResponseEntity.ok("An error occured!!!"); } } @RequestMapping(value = "/findUser", method = RequestMethod.POST) public ResponseEntity<User> findUser(@RequestBody User User) { ModelMapper modelMapper = new ModelMapper(); User user = modelMapper.map(User, User.class); User result = authorizationService.findByName(user.getName()); return ResponseEntity.ok(result); } 複製代碼
本人創業團隊產品MadPecker,主要作BUG管理、測試管理、應用分發
網址:www.madpecker.com,有須要的朋友歡迎試用、體驗!本文爲MadPecker團隊譯製,轉載請標明出處