如何使用redis的java客户端

来源:互联网 发布:r语言编程 编辑:程序博客网 时间:2024/05/22 03:33

首先需要使用Jedis连接redis服务器。 

1.连接单机版

先把jedis依赖的jar包添加到工程中。

//单机版测试

      @Test

      publicvoid testJedisSingle() throws Exception {

           //创建一个Jedis对象

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

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

           String string = jedis.get("test");

           System.out.println(string);

           jedis.close();

      }

 

使用连接池:

//使用连接池

      @Test

      publicvoid testJedisPool() throws Exception {

           //创建一个连接池对象

           //系统中应该是单例的。

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

           //从连接池中获得一个连接

           Jedis jedis = jedisPool.getResource();

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

           System.out.println(result);

           //jedis必须关闭

           jedis.close();

          

           //系统关闭时关闭连接池

           jedisPool.close();

          

      }

 

2.  集群版使用Jedis

//连接redis集群

      @Test

      publicvoid testJedisCluster() throws Exception {

           //创建一个JedisCluster对象

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

           //在nodes中指定每个节点的地址

           //jedisCluster在系统中是单例的。

           JedisCluster jedisCluster = new JedisCluster(nodes);

           jedisCluster.set("name", "zhangsan");

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

           String name = jedisCluster.get("name");

           String value = jedisCluster.get("value");

           System.out.println(name);

           System.out.println(value);

          

          

           //系统关闭时关闭jedisCluster

           jedisCluster.close();

      }

 

1.1   项目中使用jedis

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

 

1.1.1  单机版实现类

/**

 * redis客户端单机版实现类

 

 */

publicclass JedisClientSingle implements JedisClient{

     

      @Autowired

      private JedisPooljedisPool;

 

      @Override

      public String set(Stringkey, String value) {

           Jedis jedis = jedisPool.getResource();

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

           jedis.close();

           returnresult;

      }

 

      @Override

      public String get(Stringkey) {

           Jedis jedis = jedisPool.getResource();

           String result = jedis.get(key);

           jedis.close();

           returnresult;

      }

 

      @Override

      public Long hset(Stringkey, String item, Stringvalue) {

           Jedis jedis = jedisPool.getResource();

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

           jedis.close();

           returnresult;

      }

 

      @Override

      public String hget(Stringkey, String item) {

           Jedis jedis = jedisPool.getResource();

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

           jedis.close();

           returnresult;

      }

 

      @Override

      public Long incr(Stringkey) {

           Jedis jedis = jedisPool.getResource();

           Long result = jedis.incr(key);

           jedis.close();

           returnresult;

      }

 

      @Override

      public Long decr(Stringkey) {

           Jedis jedis = jedisPool.getResource();

           Long result = jedis.decr(key);

           jedis.close();

           returnresult;

      }

 

      @Override

      public Long expire(Stringkey, intsecond) {

           Jedis jedis = jedisPool.getResource();

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

           jedis.close();

           returnresult;

      }

 

      @Override

      public Long ttl(Stringkey) {

           Jedis jedis = jedisPool.getResource();

           Long result = jedis.ttl(key);

           jedis.close();

           returnresult;

      }

 

}

 

1.1.2  集群版

/**

 * redis客户端集群版实现类

**/

 

publicclass JedisClientCluster implements JedisClient {

     

      @Autowired

      private JedisClusterjedisCluster;

 

      @Override

      public String set(Stringkey, String value) {

           returnjedisCluster.set(key,value);

      }

 

      @Override

      public String get(Stringkey) {

           returnjedisCluster.get(key);

      }

 

      @Override

      public Long hset(Stringkey, String item, Stringvalue) {

           returnjedisCluster.hset(key,item, value);

      }

 

      @Override

      public String hget(Stringkey, String item) {

           returnjedisCluster.hget(key,item);

      }

 

      @Override

      public Long incr(Stringkey) {

           returnjedisCluster.incr(key);

      }

 

      @Override

      public Long decr(Stringkey) {

           returnjedisCluster.decr(key);

      }

 

      @Override

      public Long expire(Stringkey, intsecond) {

           returnjedisCluster.expire(key,second);

      }

 

      @Override

      public Long ttl(Stringkey) {

           returnjedisCluster.ttl(key);

      }

 

}

 

1.1.3  Spring的配置

<?xmlversion="1.0"encoding="UTF-8"?>

<beansxmlns="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-beans-4.0.xsd

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

      http://www.springframework.org/schema/aop http://www.springframework.org/schema/aop/spring-aop-4.0.xsd http://www.springframework.org/schema/tx http://www.springframework.org/schema/tx/spring-tx-4.0.xsd

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

 

      <!--包扫描器,扫描带@Service注解的类 -->

      <context:component-scanbase-package="com.taotao.rest.service"></context:component-scan>

     <!-- 配置redis客户端单机版 -->

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

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

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

     </bean>

     <!-- 配置redis客户端实现类 -->

     <bean id="jedisClientSingle" class="com.taotao.rest.component.impl.JedisClientSingle"/>

     

     <!-- 配置redis客户端集群版 -->

     <!-- <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"/> -->

</beans>

原创粉丝点击