实际使用 Jedis连接redis spring中配置

需要把jedis依赖的jar包添加到工程中。Maven工程中需要把jedis的坐标添加到依赖

连接单机版

第一步:创建一个Jedis对象。需要指定服务端的ip及端口。

第二步:使用Jedis对象操作数据库,每个redis命令对应一个方法。

第三步:打印结果。

第四步:关闭Jedis

@Test

     public void testJedis() throws Exception {

          // 第一步:创建一个Jedis对象。需要指定服务端的ip及端口。

          Jedis jedis = new Jedis("192.168.25.153", 6379);

          // 第二步:使用Jedis对象操作数据库,每个redis命令对应一个方法。

          String result = jedis.get("hello");

          // 第三步:打印结果。

          System.out.println(result);

          // 第四步:关闭Jedis

          jedis.close();

     }

 

连接单机版使用连接池

第一步:创建一个JedisPool对象。需要指定服务端的ip及端口。

第二步:从JedisPool中获得Jedis对象。

第三步:使用Jedis操作redis服务器。

第四步:操作完毕后关闭jedis对象,连接池回收资源。

第五步:关闭JedisPool对象。

@Test

     public void testJedisPool() throws Exception {

          // 第一步:创建一个JedisPool对象。需要指定服务端的ip及端口。

          JedisPool jedisPool = new JedisPool("192.168.25.153", 6379);

          // 第二步:从JedisPool中获得Jedis对象。

          Jedis jedis = jedisPool.getResource();

          // 第三步:使用Jedis操作redis服务器。

          jedis.set("jedis", "test");

          String result = jedis.get("jedis");

          System.out.println(result);

          // 第四步:操作完毕后关闭jedis对象,连接池回收资源。

          jedis.close();

          // 第五步:关闭JedisPool对象。

          jedisPool.close();

     }

连接集群版

第一步:使用JedisCluster对象。需要一个Set<HostAndPort>参数。Redis节点的列表。

第二步:直接使用JedisCluster对象操作redis。在系统中单例存在。

第三步:打印结果

第四步:系统关闭前,关闭JedisCluster对象。

 

@Test

     public void testJedisCluster() throws Exception {

          // 第一步:使用JedisCluster对象。需要一个Set<HostAndPort>参数。Redis节点的列表。

          Set<HostAndPort> nodes = new HashSet<>();

          nodes.add(new HostAndPort("192.168.25.153", 7001));

          nodes.add(new HostAndPort("192.168.25.153", 7002));

          nodes.add(new HostAndPort("192.168.25.153", 7003));

          nodes.add(new HostAndPort("192.168.25.153", 7004));

          nodes.add(new HostAndPort("192.168.25.153", 7005));

          nodes.add(new HostAndPort("192.168.25.153", 7006));

          JedisCluster jedisCluster = new JedisCluster(nodes);

          // 第二步:直接使用JedisCluster对象操作redis。在系统中单例存在。

          jedisCluster.set("hello", "100");

          String result = jedisCluster.get("hello");

          // 第三步:打印结果

          System.out.println(result);

          // 第四步:系统关闭前,关闭JedisCluster对象。

          jedisCluster.close();

     }

 

 

接口封装

常用的操作redis的方法提取出一个接口,分别对应单机版和集群版创建两个实现类。

接口定义

public interface JedisClient {

 

     String set(String key, String value);

     String get(String key);

     Boolean exists(String key);

     Long expire(String key, int seconds);

     Long ttl(String key);

     Long incr(String key);

     Long hset(String key, String field, String value);

     String hget(String key, String field);

     Long hdel(String key, String... field);

}

单机版实现类

public class JedisClientPool implements JedisClient {

    

     @Autowired

     private JedisPool jedisPool;

 

     @Override

     public String set(String key, String value) {

          Jedis jedis = jedisPool.getResource();

          String result = jedis.set(key, value);

          jedis.close();

          return result;

     }

 

     @Override

     public String get(String key) {

          Jedis jedis = jedisPool.getResource();

          String result = jedis.get(key);

          jedis.close();

          return result;

     }

 

     @Override

     public Boolean exists(String key) {

          Jedis jedis = jedisPool.getResource();

          Boolean result = jedis.exists(key);

          jedis.close();

          return result;

     }

 

     @Override

     public Long expire(String key, int seconds) {

          Jedis jedis = jedisPool.getResource();

          Long result = jedis.expire(key, seconds);

          jedis.close();

          return result;

     }

 

     @Override

     public Long ttl(String key) {

          Jedis jedis = jedisPool.getResource();

          Long result = jedis.ttl(key);

          jedis.close();

          return result;

     }

 

     @Override

     public Long incr(String key) {

          Jedis jedis = jedisPool.getResource();

          Long result = jedis.incr(key);

          jedis.close();

          return result;

     }

 

     @Override

     public Long hset(String key, String field, String value) {

          Jedis jedis = jedisPool.getResource();

          Long result = jedis.hset(key, field, value);

          jedis.close();

          return result;

     }

 

     @Override

     public String hget(String key, String field) {

          Jedis jedis = jedisPool.getResource();

          String result = jedis.hget(key, field);

          jedis.close();

          return result;

     }

 

     @Override

     public Long hdel(String key, String... field) {

          Jedis jedis = jedisPool.getResource();

          Long result = jedis.hdel(key, field);

          jedis.close();

          return result;

     }

 

}

 

配置:applicationContext-redis.xml

<?xml version="1.0" encoding="UTF-8"?>

<beans xmlns="http://www.springframework.org/schema/beans"

     xmlns:context="http://www.springframework.org/schema/context" xmlns:p="http://www.springframework.org/schema/p"

     xmlns:aop="http://www.springframework.org/schema/aop" xmlns:tx="http://www.springframework.org/schema/tx"

     xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"

     xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans4.2.xsd

     http://www.springframework.org/schema/context http://www.springframework.org/schema/context/spring-context4.2.xsd

     http://www.springframework.org/schema/aop http://www.springframework.org/schema/aop/spring-aop4.2.xsd http://www.springframework.org/schema/tx http://www.springframework.org/schema/tx/spring-tx4.2.xsd

     http://www.springframework.org/schema/util http://www.springframework.org/schema/util/spring-util4.2.xsd">

 

     <!-- 配置单机版的连接 -->

     <bean id="jedisPool" class="redis.clients.jedis.JedisPool">

          <constructor-arg name="host" value="192.168.25.153"></constructor-arg>

          <constructor-arg name="port" value="6379"></constructor-arg>

     </bean>

     <bean id="jedisClientPool" class="cn.e3mall.jedis.JedisClientPool"/>

    

</beans>

 

 

集群版实现类

package cn.e3mall.jedis;

 

import org.springframework.beans.factory.annotation.Autowired;

 

import redis.clients.jedis.JedisCluster;

 

public class JedisClientCluster implements JedisClient {

    

     @Autowired

     private JedisCluster jedisCluster;

 

     @Override

     public String set(String key, String value) {

          return jedisCluster.set(key, value);

     }

 

     @Override

     public String get(String key) {

          return jedisCluster.get(key);

     }

 

     @Override

     public Boolean exists(String key) {

          return jedisCluster.exists(key);

     }

 

     @Override

     public Long expire(String key, int seconds) {

          return jedisCluster.expire(key, seconds);

     }

 

     @Override

     public Long ttl(String key) {

          return jedisCluster.ttl(key);

     }

 

     @Override

     public Long incr(String key) {

          return jedisCluster.incr(key);

     }

 

     @Override

     public Long hset(String key, String field, String value) {

          return jedisCluster.hset(key, field, value);

     }

 

     @Override

     public String hget(String key, String field) {

          return jedisCluster.hget(key, field);

     }

 

     @Override

     public Long hdel(String key, String... field) {

          return jedisCluster.hdel(key, field);

     }

 

}

 

Spring的配置:

<!-- 集群版的配置 -->

     <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>

                         <constructor-arg name="port" value="7001"></constructor-arg>

                    </bean>

                    <bean class="redis.clients.jedis.HostAndPort">

                         <constructor-arg name="host" value="192.168.25.153"></constructor-arg>

                         <constructor-arg name="port" value="7002"></constructor-arg>

                    </bean>

                    <bean class="redis.clients.jedis.HostAndPort">

                         <constructor-arg name="host" value="192.168.25.153"></constructor-arg>

                         <constructor-arg name="port" value="7003"></constructor-arg>

                    </bean>

                    <bean class="redis.clients.jedis.HostAndPort">

                         <constructor-arg name="host" value="192.168.25.153"></constructor-arg>

                         <constructor-arg name="port" value="7004"></constructor-arg>

                    </bean>

                    <bean class="redis.clients.jedis.HostAndPort">

                         <constructor-arg name="host" value="192.168.25.153"></constructor-arg>

                         <constructor-arg name="port" value="7005"></constructor-arg>

                    </bean>

                    <bean class="redis.clients.jedis.HostAndPort">

                         <constructor-arg name="host" value="192.168.25.153"></constructor-arg>

                         <constructor-arg name="port" value="7006"></constructor-arg>

                    </bean>

               </set>

          </constructor-arg>

     </bean>

     <bean id="jedisClientCluster" class="cn.e3mall.jedis.JedisClientCluster"/>

 

注意:单机版和集群版不能共存,使用单机版时注释集群版的配置。使用集群版,把单机版注释。

 

©️2020 CSDN 皮肤主题: 编程工作室 设计师: CSDN官方博客 返回首页
实付0元
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、C币套餐、付费专栏及课程。

余额充值