如何使用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 //建立一個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> |