一、使用Maven导入Jedis的相关jar包。
?
?
class="xml" name="code"><dependencies> <dependency> <groupId>redis.clients</groupId> <artifactId>jedis</artifactId> <version>2.2.0</version> <type>jar</type> <scope>compile</scope> </dependency> </dependencies>
?
?
二、配置Redis的pool以从pool中获取redis的对象:
#最大分配的对象数 redis.pool.maxActive=1024 #最大能够保持idel状态的对象数 redis.pool.maxIdle=200 #当池内没有返回对象时,最大等待时间 redis.pool.maxWait=1000 #当调用borrow Object方法时,是否进行有效性检查 redis.pool.testOnBorrow=false #当调用return Object方法时,是否进行有效性检查 redis.pool.testOnReturn=true #IP redis.ip=192.168.1.155 #Port redis.port=6379
?
三、相关的Java代码:
1、创建一个Java类用于管理Redis的Pool以产生Redis对象
package com.chuanliu.platform.activity.cache; import java.util.ResourceBundle; import redis.clients.jedis.Jedis; import redis.clients.jedis.JedisPool; import redis.clients.jedis.JedisPoolConfig; /** * Get the Redis Object from the Pool, * Redis using commons-pool to manage its own pool * * @author Josh Wang(Sheng) * * @email josh_wang23@hotmail.com * */ public class RedisPoolManager { private static JedisPool pool; static { ResourceBundle bundle = ResourceBundle.getBundle("redis"); if (bundle == null) throw new IllegalArgumentException("[redis.properties] is not found"); JedisPoolConfig config = new JedisPoolConfig(); config.setMaxActive(Integer.valueOf(bundle.getString("redis.pool.maxActive"))); config.setMaxIdle(Integer.valueOf(bundle.getString("redis.pool.maxIdle"))); config.setMaxWait(Long.valueOf(bundle.getString("redis.pool.maxWait"))); config.setTestOnBorrow(Boolean.valueOf(bundle.getString("redis.pool.testOnBorrow"))); config.setTestOnReturn(Boolean.valueOf(bundle.getString("redis.pool.testOnReturn"))); pool = new JedisPool(config, bundle.getString("redis.ip"), Integer.valueOf(bundle.getString("redis.port"))); } /** * Get Jedis resource from the pool * @return */ public static Jedis createInstance() { Jedis jedis = pool.getResource(); jedis.auth("diandi"); return jedis; } /** * Return the resource to pool * @param jedis */ public static void returnResource(Jedis jedis) { pool.returnResource(jedis); } }
?
2. 定义一个Java类用于使用获取到的Redis对象往内存中进行CRUD基本操作。
package com.chuanliu.platform.activity.cache; import java.util.List; import java.util.Map; import org.springframework.stereotype.Component; import com.sun.jersey.spi.resource.Singleton; import redis.clients.jedis.Jedis; /** * @author Josh Wang(Sheng) * * @email josh_wang23@hotmail.com * */ @Singleton @Component("cacheManager") public class CacheManager { private Jedis jedis = RedisPoolManager.createInstance(); public void set(Map<String, String> entries) { for (Map.Entry<String, String> entry : entries.entrySet()) { jedis.set(entry.getKey(), entry.getValue()); } } public void set(String key, String value) { jedis.set(key, value); } /** * Set the value to the key and specify the key's life cycle as seconds. * @param key * @param live * @param value */ public void setKeyLive(String key, int live, String value) { jedis.setex(key, live, value); } /** * Append the value to an existing key * @param key * @param value */ public void append(String key, String value) { jedis.append(key, value); } public String getValue(String key) { return jedis.get(key); } public List<String> getValues(String... keys) { return jedis.mget(keys); } public Long deleteValue(String key) { return jedis.del(key); } public Long deleteValues(String... keys) { return jedis.del(keys); } public void returnSource() { RedisPoolManager.returnResource(jedis); } public long calculateSize() { return jedis.dbSize(); } }
?
3. 创建相关的Unit Test类进行测试
package com.chuanliu.platform.activity.cache; import java.util.HashMap; import java.util.Map; import javax.annotation.Resource; import junit.framework.Assert; import org.junit.Before; import org.junit.Test; import com.chuanliu.platform.activity.basic.test.SpringBaseTest; /** * @author Josh Wang(Sheng) * * @email josh_wang23@hotmail.com */ public class TestCacheManager extends SpringBaseTest { private @Resource CacheManager cacheManager; @Before public void init() { printHighlight(cacheManager.hashCode() + ""); } @Test public void set() { Map<String, String> kValues = new HashMap<String, String>(); kValues.put("swang6", "WangSheng"); kValues.put("23", "MJ"); kValues.put("34", "O'Nel"); kValues.put("10", "meixi"); kValues.put("li", "li"); cacheManager.append("li", "yun"); cacheManager.set(kValues); printHighlight(cacheManager.getValue("li")); } @Test public void calculateSize() { printHighlight(cacheManager.getValue("foo")); printHighlight(cacheManager.calculateSize() + ""); } @Test public void getValue() { String value = cacheManager.getValue("swang6"); Assert.assertNotNull(value); Assert.assertEquals("WangSheng", value); } }
?
这一篇讲了基本的Jedis的使用,下一篇讲接着讲解Jedis的高级使用,即Sharding。
?
?
?
?