内容简介:上文我们介绍了 Redis,在开发环境中,我们还有另外一个解决方案,那就是 Spring Data Redis 。本文我们就来看看这个东西。本文是 Redis 系列的第十四篇文章,了解前面的文章有助于更好的理解本文:1.
上文我们介绍了 Redis,在开发环境中,我们还有另外一个解决方案,那就是 Spring Data Redis 。本文我们就来看看这个东西。
本文是 Redis 系列的第十四篇文章,了解前面的文章有助于更好的理解本文:
4. Redis 字符串 (STRING) 中 BIT 相关命令
5. Redis 列表与集合
8. Redis 快照持久化
10. Redis 主从复制(一)
11. Redis 主从复制(二)
12. Redis 集群搭建
13. Jedis 使用
Spring Data Redis 介绍
Spring Data Redis 是 Spring 官方推出,可以算是 Spring 框架集成 Redis 操作的一个子框架,封装了 Redis 的很多命令,可以很方便的使用 Spring 操作 Redis 数据库,Spring 对很多 工具 都提供了类似的集成,如 Spring Data MongDB、Spring Data JPA 等, Spring Data Redis 只是其中一种。
环境搭建
要使用 SDR,首先需要搭建 Spring+SpringMVC 环境,由于这个不是本文的重点,因此这一步我直接略过,Spring+SpringMVC 环境搭建成功后,接下来我们要整合 SDR,首先需要添加如下依赖:
<dependency> <groupId>redis.clients</groupId> <artifactId>jedis</artifactId> <version>2.9.0</version> </dependency> <dependency> <groupId>org.springframework.data</groupId> <artifactId>spring-data-redis</artifactId> <version>RELEASE</version> </dependency> <dependency> <groupId>org.apache.commons</groupId> <artifactId>commons-pool2</artifactId> <version>RELEASE</version> </dependency>
然后创建在 resources 目录下创建 redis.properties 文件作为 redis 的配置文件,如下:
redis.host=192.168.248.128 redis.port=6379 redis.maxIdle=300 redis.maxTotal=600 redis.maxWait=1000 redis.testOnBorrow=true
在 spring 的配置文件中,添加如下 bean:
<!--引入redis.properties文件--> <context:property-placeholder location="classpath:redis.properties"/> <!--配置连接池信息--> <bean class="redis.clients.jedis.JedisPoolConfig" id="poolConfig"> <property name="maxIdle" value="${redis.maxIdle}"/> <property name="maxTotal" value="${redis.maxTotal}"/> <property name="maxWaitMillis" value="${redis.maxWait}"/> <property name="testOnBorrow" value="${redis.testOnBorrow}"/> </bean> <!--配置基本连接信息--> <bean class="org.springframework.data.redis.connection.jedis.JedisConnectionFactory" id="connectionFactory"> <property name="hostName" value="${redis.host}"/> <property name="port" value="${redis.port}"/> <property name="poolConfig" ref="poolConfig"/> </bean> <!--配置RedisTemplate--> <bean class="org.springframework.data.redis.core.RedisTemplate" id="redisTemplate"> <property name="connectionFactory" ref="connectionFactory"/> <!--key和value要进行序列化,否则存储对象时会出错--> <property name="keySerializer"> <bean class="org.springframework.data.redis.serializer.StringRedisSerializer"/> </property> <property name="valueSerializer"> <bean class="org.springframework.data.redis.serializer.JdkSerializationRedisSerializer"/> </property> </bean>
好了,在 Spring 中配置了 redisTemplate 之后,接下来我们就可以在 Dao 层注入 redisTemplate 进而使用了。
接下来我们首先创建实体类 User ,注意 User 一定要可序列化:
public class User implements Serializable{ private String username; private String password; private String id; //get/set省略 }
然后在 Dao 层实现数据的添加和获取,如下:
@Repository public class HelloDao { @Autowired RedisTemplate redisTemplate; public void set(String key, String value) { ValueOperations ops = redisTemplate.opsForValue(); ops.set(key, value); } public String get(String key) { ValueOperations ops = redisTemplate.opsForValue(); return ops.get(key).toString(); } public void setuser(User user) { ValueOperations ops = redisTemplate.opsForValue(); ops.set(user.getId(), user); } public User getuser(String id) { ValueOperations<String, User> ops = redisTemplate.opsForValue(); User user = ops.get(id); System.out.println(user); return user; } }
SDR 官方文档中对 Redistemplate 的介绍,通过 Redistemplate 可以调用 ValueOperations 和 ListOperations 等等方法,分别是对 Redis 命令的高级封装。但是 ValueOperations 等等这些命令最终是要转化成为 RedisCallback 来执行的。也就是说通过使用 RedisCallback 可以实现更强的功能。
最后,给大家展示下我的 Service 和 Controller ,如下:
@Service public class HelloService { @Autowired HelloDao helloDao; public void set(String key, String value) { helloDao.set(key,value); } public String get(String key) { return helloDao.get(key); } public void setuser(User user) { helloDao.setuser(user); } public String getuser(String id) { String s = helloDao.getuser(id).toString(); return s; } } Controller: @Controller public class HelloController { @Autowired HelloService helloService; @RequestMapping("/set") @ResponseBody public void set(String key, String value) { helloService.set(key, value); } @RequestMapping("/get") @ResponseBody public String get(String key) { return helloService.get(key); } @RequestMapping("/setuser") @ResponseBody public void setUser() { User user = new User(); user.setId("1"); user.setUsername("深圳"); user.setPassword("sang"); helloService.setuser(user); } @RequestMapping(value = "/getuser",produces = "text/html;charset=UTF-8") @ResponseBody public String getUser() { return helloService.getuser("1"); } }
测试过程就不再展示了,小伙伴们可以用 POSTMAN 等工具自行测试。
好了,Spring Data Redis 我们就说到这里,有问题欢迎留言讨论。
以上所述就是小编给大家介绍的《Spring Data Redis 使用》,希望对大家有所帮助,如果大家有任何疑问请给我留言,小编会及时回复大家的。在此也非常感谢大家对 码农网 的支持!
猜你喜欢:- RecyclerView使用指南(一)—— 基本使用
- 如何使用Meteorjs使用URL参数
- 使用 defer 还是不使用 defer?
- 使用 Typescript 加强 Vuex 使用体验
- [译] 何时使用 Rust?何时使用 Go?
- UDP协议的正确使用场合(谨慎使用)
本站部分资源来源于网络,本站转载出于传递更多信息之目的,版权归原作者或者来源机构所有,如转载稿涉及版权问题,请联系我们。