1. 程式人生 > >如何使用redis的java客戶端

如何使用redis的java客戶端

首先需要使用Jedis連線redis伺服器。 

1.連線單機版

先把jedis依賴的jar包新增到工程中。

//單機版測試

      @Test

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

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

      public

void 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客戶端單機版實現類

 */

public class JedisClientSingle 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 Long hset(String key, String item, String value) {

           Jedis jedis = jedisPool.getResource();

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

           jedis.close();

           return result;

      }

      @Override

      public String hget(String key, String item) {

           Jedis jedis = jedisPool.getResource();

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

           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 decr(String key) {

           Jedis jedis = jedisPool.getResource();

           Long result = jedis.decr(key);

           jedis.close();

           return result;

      }

      @Override

      public Long expire(String key, int second) {

           Jedis jedis = jedisPool.getResource();

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

           jedis.close();

           return result;

      }

      @Override

      public Long ttl(String key) {

           Jedis jedis = jedisPool.getResource();

           Long result = jedis.ttl(key);

           jedis.close();

           return result;

      }

}

1.1.2  叢集版

/**

 * redis客戶端叢集版實現類

**/

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 Long hset(String key, String item, String value) {

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

      }

      @Override

      public String hget(String key, String item) {

           return jedisCluster.hget(key, item);

      }

      @Override

      public Long incr(String key) {

           return jedisCluster.incr(key);

      }

      @Override

      public Long decr(String key) {

           return jedisCluster.decr(key);

      }

      @Override

      public Long expire(String key, int second) {

           return jedisCluster.expire(key, second);

      }

      @Override

      public Long ttl(String key) {

           return jedisCluster.ttl(key);

      }

}

1.1.3  Spring的配置

<?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-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-scan base-package="com.taotao.rest.service"></context:component-scan>

      <!-- 配置redis客戶端單機版 -->

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

      <!-- 配置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>