springboot2.x整合Redis简单入门
Redis是一款开源的基于内存存储key-value的高性能数据库,且如今作为很多公司的缓存组件之一.
Redis的优点
- 速度快
因为Redis是基于内存存储的key-value数据库,所以性能非常出色,每秒能处理10w次的读写操作.
- 支持丰富的数据结构
支持 String ,List,Set,SortedSet,Hash这五种基本数据结构.同时还支持 Bitmap、HyperLogLog、GEO 等高级的数据结构.
- 丰富的特性
订阅发布 Pub / Sub 功能
Key 过期策略
事务
支持多个DB
计数
.......
- 持久化操作
Redis提供了RDB和AOF两种持久化方案,其目的是为了解决Redis集群过程的数据同步和以防宕机操作等.
- 高可用
内置 Redis Cluster ,提供集群方案,实现基于槽的分片方案,从而支持更大的 Redis 规模.
关于Redis多余的不说了,接下来我们来看整合的过程
整合过程
首先我们需要创建一个springboot的项目,我这里还是整合consul来作为服务的注册和发现.
首先我们需要引入Redis的依赖,代码如下:
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-data-redis</artifactId>
</dependency>
接着我们来看Redis的配置文件,代码如下:
spring.redis.database=0
spring.redis.host=localhost
spring.redis.port=6379
spring.redis.password=
spring.redis.timeout=2000
接着我们来看Redis的javaConfig代码:
package com.cacmp.starter.redis;
import com.cacmp.starter.entity.User;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
import org.springframework.data.redis.connection.RedisConnectionFactory;
import org.springframework.data.redis.core.RedisTemplate;
import org.springframework.data.redis.serializer.Jackson2JsonRedisSerializer;
import org.springframework.data.redis.serializer.StringRedisSerializer;
/**
* @author cb
*/
@Configuration
public class RedisConfig {
@Autowired
private RedisConnectionFactory redisConnectionFactory;
@Bean
public RedisTemplate<String, User> redisTemplate(){
RedisTemplate<String, User> template = new RedisTemplate<>();
//value采用Jackson2JsonRedisSerializer的序列化方式
Jackson2JsonRedisSerializer<User> redisSerializer = new Jackson2JsonRedisSerializer<User>(User.class);
template.setValueSerializer(redisSerializer);
template.setHashValueSerializer(redisSerializer);
//key采用StringRedisSerializer的方式
template.setKeySerializer(new StringRedisSerializer());
template.setHashKeySerializer(new StringRedisSerializer());
//设置连接
template.setConnectionFactory(redisConnectionFactory);
return template;
}
该配置主要的目的是配置Redis的key和value序列化的方式,这里key采用的是StringRedisSerializer方式,value采用的是Jackson2JsonRedisSerializer方式.我们这里再来创建一个实体User,代码如下:
package com.cacmp.starter.entity;
import lombok.Getter;
import lombok.Setter;
import lombok.ToString;
@Setter
@Getter
@ToString
public class User {
private String userName;
private String password;
}
创建一个接口,代码如下:
''''
package com.cacmp.starter.controller;
import com.cacmp.starter.entity.User;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.data.redis.core.RedisTemplate;
import org.springframework.data.redis.core.StringRedisTemplate;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;
/**
* @author cb
*/
@RestController
public class RedisController {
@Autowired
private RedisTemplate redisTemplate;
@Autowired
private StringRedisTemplate stringRedisTemplate;
@RequestMapping("user")
public User addUserInfo(){
User user = new User();
user.setUserName("小明");
user.setPassword("admin");
redisTemplate.opsForValue().set("user",user);
Object test = redisTemplate.opsForValue().get("user");
String s = stringRedisTemplate.opsForValue().get("test");
System.out.println(s);
System.out.println(test.toString());
return user;
}
微信截图_20191017221036.png启动Redis服务器,访问http://localhost:8080/user,打开Redis客户端我们会发现数据库中多了一组user的key-value数据,截图如下:
微信截图_20191017185241.png 微信截图_20191017185141.png当我们访问接口时,会在控制台得到如下的结果:
以上就是springboot2.x整合Redis的简单使用