Redis(五)之整合Jedis与Spring

女爷i 2022-05-21 05:52 305阅读 0赞

思路:创建一个redis操作的接口。分别创建两个实现类对应redis 的单机版和集群版。当使用单机版redis时,配置单机版的实现类,当使用集群版本的时候,配置集群版的实现类。

JedisClient接口

  1. /** * redis客户端接口,在这里添加常用方法 */
  2. public interface JedisClient {
  3. public String set(String key, String value);
  4. public String get(String key);
  5. public Long hset(String key, String item, String value);
  6. public String hget(String key, String item);
  7. public Long incr(String key);
  8. public Long decr(String key);
  9. public Long expire(String key, int second);
  10. public Long ttl(String key);
  11. }

JedisClient单机版实现类

  1. /** * redis客户端单机版实现类 */
  2. public class JedisClientSingle implements JedisClient{
  3. @Autowired
  4. private JedisPool jedisPool;
  5. @Override
  6. public String set(String key, String value) {
  7. Jedis jedis = jedisPool.getResource();
  8. String result = jedis.set(key, value);
  9. jedis.close();
  10. return result;
  11. }
  12. @Override
  13. public String get(String key) {
  14. Jedis jedis = jedisPool.getResource();
  15. String result = jedis.get(key);
  16. jedis.close();
  17. return result;
  18. }
  19. @Override
  20. public Long hset(String key, String item, String value) {
  21. Jedis jedis = jedisPool.getResource();
  22. Long result = jedis.hset(key, item, value);
  23. jedis.close();
  24. return result;
  25. }
  26. @Override
  27. public String hget(String key, String item) {
  28. Jedis jedis = jedisPool.getResource();
  29. String result = jedis.hget(key, item);
  30. jedis.close();
  31. return result;
  32. }
  33. @Override
  34. public Long incr(String key) {
  35. Jedis jedis = jedisPool.getResource();
  36. Long result = jedis.incr(key);
  37. jedis.close();
  38. return result;
  39. }
  40. @Override
  41. public Long decr(String key) {
  42. Jedis jedis = jedisPool.getResource();
  43. Long result = jedis.decr(key);
  44. jedis.close();
  45. return result;
  46. }
  47. @Override
  48. public Long expire(String key, int second) {
  49. Jedis jedis = jedisPool.getResource();
  50. Long result = jedis.expire(key, second);
  51. jedis.close();
  52. return result;
  53. }
  54. @Override
  55. public Long ttl(String key) {
  56. Jedis jedis = jedisPool.getResource();
  57. Long result = jedis.ttl(key);
  58. jedis.close();
  59. return result;
  60. }
  61. }

JedisClient集群版实现类

  1. /** * redis客户端集群版实现类 */
  2. public class JedisClientCluster implements JedisClient {
  3. @Autowired
  4. private JedisCluster jedisCluster;
  5. @Override
  6. public String set(String key, String value) {
  7. return jedisCluster.set(key, value);
  8. }
  9. @Override
  10. public String get(String key) {
  11. return jedisCluster.get(key);
  12. }
  13. @Override
  14. public Long hset(String key, String item, String value) {
  15. return jedisCluster.hset(key, item, value);
  16. }
  17. @Override
  18. public String hget(String key, String item) {
  19. return jedisCluster.hget(key, item);
  20. }
  21. @Override
  22. public Long incr(String key) {
  23. return jedisCluster.incr(key);
  24. }
  25. @Override
  26. public Long decr(String key) {
  27. return jedisCluster.decr(key);
  28. }
  29. @Override
  30. public Long expire(String key, int second) {
  31. return jedisCluster.expire(key, second);
  32. }
  33. @Override
  34. public Long ttl(String key) {
  35. return jedisCluster.ttl(key);
  36. }
  37. }

Spring中的配置

  1. <!-- 包扫描器,扫描带注解的类 -->
  2. <context:component-scan base-package="com.taotao.rest.component"></context:component-scan>
  3. <!-- 根据实际情况,选择其中一个打开使用 -->
  4. <!-- 配置redis客户端单机版 -->
  5. <bean id="jedisPool" class="redis.clients.jedis.JedisPool">
  6. <constructor-arg name="host" value="192.168.25.153"></constructor-arg>
  7. <constructor-arg name="port" value="6379"></constructor-arg>
  8. </bean>
  9. <!-- 配置redis客户端实现类 -->
  10. <bean id="jedisClientSingle" class="com.taotao.rest.component.impl.JedisClientSingle"/>
  11. <!-- 配置redis客户端集群版 -->
  12. <!-- <bean id="jedisCluster" class="redis.clients.jedis.JedisCluster"> <constructor-arg> <set> <bean class="redis.clients.jedis.HostAndPort"> <constructor-arg name="host" value="192.168.25.153"/> <constructor-arg name="port" value="7001"/> </bean> <bean class="redis.clients.jedis.HostAndPort"> <constructor-arg name="host" value="192.168.25.153"/> <constructor-arg name="port" value="7002"/> </bean> <bean class="redis.clients.jedis.HostAndPort"> <constructor-arg name="host" value="192.168.25.153"/> <constructor-arg name="port" value="7003"/> </bean> <bean class="redis.clients.jedis.HostAndPort"> <constructor-arg name="host" value="192.168.25.153"/> <constructor-arg name="port" value="7004"/> </bean> <bean class="redis.clients.jedis.HostAndPort"> <constructor-arg name="host" value="192.168.25.153"/> <constructor-arg name="port" value="7005"/> </bean> <bean class="redis.clients.jedis.HostAndPort"> <constructor-arg name="host" value="192.168.25.153"/> <constructor-arg name="port" value="7006"/> </bean> </set> </constructor-arg> </bean> <bean id="jedisClientCluster" class="com.taotao.rest.component.impl.JedisClientCluster"/> -->

测试

  1. @Test
  2. public void testJedisClientSpring() throws Exception {
  3. //创建一个spring容器
  4. ApplicationContext applicationContext = new ClassPathXmlApplicationContext("classpath:spring/applicationContext-*.xml");
  5. //从容器中获得JedisClient对象
  6. JedisClient jedisClient = applicationContext.getBean(JedisClient.class);
  7. //jedisClient操作redis
  8. jedisClient.set("client", "1024");
  9. String string = jedisClient.get("client");
  10. System.out.println(string);
  11. }

发表评论

表情:
评论列表 (有 0 条评论,305人围观)

还没有评论,来说两句吧...

相关阅读

    相关 spring整合jedis

    1. 概述: spring封装了redis,使用很方便,总结下对spring与jedis的整合使用 redis 是目前最常用的开源缓存系统之一,它具有丰富的缓存数据结构

    相关 Redis整合JedisSpring

    思路:创建一个redis操作的接口。分别创建两个实现类对应redis 的单机版和集群版。当使用单机版redis时,配置单机版的实现类,当使用集群版本的时候,配置集群版的实现类。