spring boot进阶(一) springboot整合redis,可操作java对象。最完整、简单易懂、详细的spring boot教程。
2018-07-24 11:42
1176 查看
版权声明:版权所有 © 侵权必究 https://blog.csdn.net/m0_38075425/article/details/81181726
关于redis的基本操作和对java对象的操作,请见笔者博客。
本文我们介绍springboot整合redis。
首先是pom依赖:
[code]<dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-data-redis</artifactId> <version>2.0.0.RELEASE</version> </dependency>
1.假设我们操作的是User类,其代码如下:
[code]public class User implements Serializable { private String username; private String password; private String nickname; private String age; private String gender; public String getUsername() { return username; } public void setUsername(String username) { this.username = username; } public String getPassword() { return password; } public void setPassword(String password) { this.password = password; } public String getNickname() { return nickname; } public void setNickname(String nickname) { this.nickname = nickname; } public String getAge() { return age; } public void setAge(String age) { this.age = age; } public String getGender() { return gender; } public void setGender(String gender) { this.gender = gender; } }
注意一定要实现serializable接口。
2.序列化和反序列化工具类:
[code]public class ObjectRedisSerializer implements RedisSerializer<Object> { /** * 定义序列化和反序列化转化类 */ private Converter<Object, byte[]> serializer = new SerializingConverter(); private Converter<byte[], Object> deserializer = new DeserializingConverter(); /** * 定义转换空字节数组 */ private static final byte[] EMPTY_ARRAY = new byte[0]; @Override public byte[] serialize(Object obj) throws SerializationException { byte[] byteArray = null; if (null == obj) { System.err.println("----------------------------->:Redis待序列化的对象为空."); byteArray = EMPTY_ARRAY; } else { try { byteArray = serializer.convert(obj); } catch (Exception e) { System.err.println("----------------------------->Redis序列化对象失败,异常:"+e.getMessage()); byteArray = EMPTY_ARRAY; } } return byteArray; } @Override public Object deserialize(byte[] datas) throws SerializationException { Object obj = null; if((null == datas)|| (datas.length == 0)){ System.out.println("---------------------------------->Redis待反序列化的对象为空."); }else{ try { obj = deserializer.convert(datas); } catch (Exception e) { System.out.println("------------------------------------->Redis反序列化对象失败,异常:"+e.getMessage()); } } return obj; } }
此处我们使用spring的SerializingConverter和DeserializingConverter类来实现java对象的序列化和反序列化,这两个类实现了Converter接口。使用这个类相比getBytes()方法的好处是可以将大的对象也可以序列化,性能相比getBytes()做了优化。
3.redis的springboot配置类:
[code]@Configuration public class RedisConfig { @Bean public RedisTemplate<Serializable, Object> redisTemplate(RedisConnectionFactory connectionFactory) { RedisTemplate<Serializable, Object> template = new RedisTemplate<Serializable, Object>(); template.setConnectionFactory(connectionFactory); template.afterPropertiesSet(); // redis存取对象的关键配置 template.setKeySerializer(new StringRedisSerializer()); // ObjectRedisSerializer类为java对象的序列化和反序列化工具类 template.setValueSerializer(new ObjectRedisSerializer()); return template; } }
[code]连接和配置redis的类。
4.application.properties配置文件:
[code]# REDIS # Redis数据库索引(默认为0) spring.redis.database=0 # Redis服务器地址 (默认为127.0.0.1) spring.redis.host=127.0.0.1 # Redis服务器连接端口 (默认为6379) spring.redis.port=6379 # Redis服务器连接密码(默认为空) spring.redis.password= # 连接超时时间(毫秒) spring.redis.timeout=2000ms
5.在TestController类中编写接口方法,测试redis:
[code]@RestController public class TestController { @Autowired private RedisTemplate<Serializable, Object> redisTemplate; @RequestMapping("/set") public String setPOJO(){ User user = new User(); user.setAge("18"); user.setGender("男"); user.setNickname("cherish"); user.setPassword("123456"); user.setUsername("admin"); redisTemplate.opsForValue().set("user1", user); return "存储对象"; } @RequestMapping("/get") public Object getPOJO(){ return redisTemplate.opsForValue().get("user1"); } }
6.测试,首先访问"/set"接口设置user对象:
再访问"/get"接口获取刚刚存储的user对象:
springboot整合redis成功。
当然,在这里也可以操作string等java对象,读者可以自行操作。
阅读更多相关文章推荐
- Java爬虫初体验:简单抓取IT之家热评(整合Spring Boot+Elasticsearch+Redis+Mybatis)
- SpringBoot非官方教程 | 第九篇: springboot整合Redis
- Spring Boot 整合 Redis 实现缓存操作
- SpringBoot非官方教程 | 第九篇: springboot整合Redis
- Spring Boot 整合 Redis 实现缓存操作
- Eclipse+Tomcat+MAVEN+SVN项目完整环境搭建+SSM框架——详细整合教程(Spring+SpringMVC+MyBatis)
- java springboot与redis整合
- spring boot 整合 redis,使用@Cacheable,@CacheEvict,@CachePut,jedisPool操作redis数据库
- jedis与spring整合及简单的使用RedisTemplate操作
- spring boot整合 freemarker 详细教程
- spring整合mybatis(入门级简单教程3)--获取sqlSession对象
- 第一个基于Spring-Boot框架的项目以及Java8新特新之stream流操作的简单细说
- springboot整合redis进行数据操作(推荐)
- Spring Boot 整合 Redis 实现缓存操作
- Java中Jedis操作Redis与Spring的整合
- SpringBoot非官方教程 | 第九篇: springboot整合Redis
- redis整合spring实现简单的操作
- Spring Boot 整合 Redis 实现缓存操作
- Spring Boot 整合 Redis 实现缓存操作