SpringBoot中如何集成Redis呢?
下文笔者讲述SpringBoot中集成Redis的方法分享,如下所示
我们都知道日常开发中,Redis是我们常用的组件,那么将redis这一优秀的组件应用于SpringBoot中
下文笔者将一一道来,如下所示:
我们都知道日常开发中,Redis是我们常用的组件,那么将redis这一优秀的组件应用于SpringBoot中
下文笔者将一一道来,如下所示:
实现思路:
1.引入redis starter jar包
2.application中配置相应的属性
3.编写相应的代码,即可实现redis的操作
例:
SpringBoot引入redis启动器
<!--redis依赖-->
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-data-redis</artifactId>
</dependency>
配置redis的yml信息
#redis配置
redis:
# 数据库索引
database: 0
# 服务器地址
host: 127.0.0.1
# 服务器连接端口
port: 6379
# 链接密码
password:
# 链接池
pool:
# 最大连接数(负值表示没有限制)
max-active: 8
# 最大阻塞等待时间(负值表示没有限制)
max-wait: 1
# 最大空闲链接
max-idle: 8
# 最小空闲链接
min-idle: 0
# 链接超时时间(毫秒)
timeout: 0
Redis代码测试
@SpringBootTest
@RunWith(SpringJUnit4ClassRunner.class)
public class RedisAutoTest {
@Autowired
private StringredisTemplate stringRedisTemplate;
@Test
public void save(){
stringRedisTemplate.opsForValue().set("rediskey","redisValue");
Assert.assertEquals("redisValue",stringRedisTemplate.opsForValue().get("redisKey"));
}
}
Redis存储一个对象
定义一个对象
public class UserInfo implements Serializable{
private static final long serialVersionUID = 1L;
private String tel;
private String nickName;
@Max(value = 999999,message = "超过最大数值")
@Min(value = 000000,message = "密码设定不正确")
private String passWord;
public UserInfo() {
}
@Override
public String toString() {
return "UserInfo{" +
"tel='" + tel + '\'' +
", nickName='" + nickName + '\'' +
", passWord='" + passWord + '\'' +
'}';
}
public UserInfo(String tel, String nickName, String passWord) {
this.tel = tel;
this.nickName = nickName;
this.passWord = passWord;
}
public String getTel() {
return tel;
}
public void setTel(String tel) {
this.tel = tel;
}
public String getNickName() {
return nickName;
}
public void setNickName(String nickName) {
this.nickName = nickName;
}
public String getPassWord() {
return passWord;
}
public void setPassWord(String passWord) {
this.passWord = passWord;
}
}
//定义redis系列化接口
public class RedisObjectSerializer implements RedisSerializer<Object> {
private Converter<Object,byte[]> serializer = new SerializingConverter();
private Converter<byte[],Object> deserializer = new DeserializingConverter();
static final byte[] EMPTY_ARRAY = new byte[0];
@Override
public byte[] serialize(Object o) throws SerializationException {
if(o == null){
return EMPTY_ARRAY;
}
try {
}catch (Exception e){
return EMPTY_ARRAY;
}
}
@Override
public Object deserialize(byte[] bytes) throws SerializationException {
if(isEmpty(bytes)){
return null;
}
try {
return deserializer.convert(bytes);
}catch (Exception e){
throw new SerializationException("Can not deserializer",e);
}
}
private boolean isEmpty(byte[] data){
return (data == null || data.length == 0);
}
}
//RedisTemplate重新配置
//使用自定义序列化方法
@Configuration
public class RedisConfig {
@Bean
JedisConnectionFactory jedisConnectionFactory(){
return new JedisConnectionFactory();
}
/**
* 存入对象序列化信息
* @return
*/
@Bean
public RedisTemplate<String,UserInfo> redisSerizlizerObj(){
RedisTemplate<String,UserInfo> redisTemplate = new RedisTemplate<String,UserInfo>();
redisTemplate.setConnectionFactory(jedisConnectionFactory());
redisTemplate.setKeySerializer(new StringRedisSerializer());
redisTemplate.setValueSerializer(new RedisObjectSerializer());
return redisTemplate;
}
}
//例:
@Autowired
private RedisTemplate<String,UserInfo> Template;
@Test
public void testobjSerializer() throws InterruptedException {
UserInfo user = new UserInfo("88888","java265user","67777");
Template.opsForValue().set("User:java265user",user);
Assert.assertEquals(true,redisTemplate.hasKey("User:java265user"));
}
Redis 存储String
@Bean
public RedisTemplate<String,String> redisTemplate(){
RedisTemplate<String,String> redisTemplate = new StringRedisTemplate();
redisTemplate.setConnectionFactory(jedisConnectionFactory());Jackson2JsonRedisSerializer jackson2JsonRedisSerializer = new Jackson2JsonRedisSerializer(Object.class);
ObjectMapper om = new ObjectMapper();
om.setVisibility(PropertyAccessor.ALL, JsonAutoDetect.Visibility.ANY);
om.enableDefaultTyping(ObjectMapper.DefaultTyping.NON_FINAL);
jackson2JsonRedisSerializer.setObjectMapper(om);
redisTemplate.setValueSerializer(jackson2JsonRedisSerializer);
redisTemplate.afterPropertiesSet();
return redisTemplate;
}
//例
@Test
public void testobj() throws InterruptedException {
UserInfo user = new UserInfo("1823232323","Java265User","666666");
ValueOperations<String,UserInfo> operations = redisTemplate.opsForValue();
operations.set("User:uuuuu",user);
Thread.sleep(1000);
operations.set("User:uuuuu",user);
Thread.sleep(1000);uuuuu
Assert.assertEquals(true,redisTemplate.hasKey("User:uuuuu"));
Assert.assertEquals(true,redisTemplate.hasKey("User:uuuuu2"));
}
以上就是笔者对redis在springBoot集成的简单示例分享
版权声明
本文仅代表作者观点,不代表本站立场。
本文系作者授权发表,未经许可,不得转载。


