Java操作Redis需要导入两个jar:
- commons-pool2-2.4.2.jar
- jedis-2.1.0.jar
package com.chinasofti.test; import java.io.IOException; import java.io.OutputStream; import java.util.HashMap; import java.util.Map; import java.util.logging.Logger; import org.junit.Before; import org.junit.Test; import redis.clients.jedis.Jedis; /** * Java连接Redis测试 * @author liuhl * */ public class ConnRedis { Jedis jedis; @Before public void init(){ jedis = new Jedis("localhost", 6379, 30); jedis.auth("admin"); } /** * 测试Redis对字符串的操作 * set():添加一个新字符串 * append():向已有的key所对应的value上面追加值 * del():删除某个键 * mset():设置多个键值对 * incr(k):对该可以进行+1操作 * @author liuhl */ @Test public void testRedisString(){ jedis.set("username", "sMith kevens"); jedis.append("username", "是Redis开发者"); System.out.println(jedis.get("username")+"------------"); //删除某个键 jedis.del("date"); System.out.println(jedis.get("date")+"======"); //设置多个键值对 jedis.mset("nicheng","shubiao","QAge","3","QQnumber","906058683","sex","man"); jedis.incr("QAge");//进行+1操作 System.out.println(jedis.get("nicheng")+":"+jedis.get("QAge")+":"+jedis.get("QQnumber")+":"+jedis.get("sex")); } /** * Redis对List的操作 * llen():获取列表size * lpush():向列表左侧插入元素 * rpush():向列表右侧插入元素 * lrange("",0,-1):获取列表所有元素 * @author liuhl */ @Test public void testRedisList(){ //开始前先移除所有的内容 jedis.del("javaframe work"); System.out.println(jedis.lrange("java framework", 0, -1)); //定义列表frame work,并向其中添加三条数据 jedis.lpush("javaframe work", "struts2"); jedis.lpush("javaframe work", "spring"); jedis.lpush("javaframe work", "hibernate"); System.out.println(jedis.llen("javaframe work")+"个"); System.out.println(jedis.lrange("javaframe work", 0, -1)); //向列表右侧添加元素 jedis.rpush("javaframe work", "ibatis"); jedis.rpush("javaframe work", "mybatis"); jedis.rpush("javaframe work", "springmvc"); System.out.println(jedis.lrange("javaframe work", 0, -1)); } /** *Jedis操作无序列表(Set) *sadd():向无序列表插入元素 *smembers():获取所有加入的value *srem():移除 *sismember():判断一个值是不是某个集合的元素,返回boolean *scard():返回集合元素的个数 *srandmember():返回集合中的一个随机元素 *@author liuhl *@return void *@category */ @Test public void testRedisSet(){ //向无序集合插入元素 jedis.sadd("user", "yanbao"); jedis.sadd("user", "chengyi"); jedis.sadd("user", "fanwei"); //移除 jedis.srem("user", "chengyi"); System.out.println(jedis.smembers("user")); System.err.println(jedis.sismember("user", "yunfei")); System.out.println(jedis.scard("user")); System.out.println(jedis.srandmember("user")); } /** * 测试列表排序sort * redis:Lists是双向链表 * 排序前先清掉列表,后添加数据测试 * @exception InterruptedException:检查异常 * @author liuhl */ @Test public void testListSort() throws InterruptedException{ jedis.del("arr"); jedis.lpush("arr", "4"); jedis.lpush("arr", "78"); jedis.lpush("arr", "2"); jedis.lpush("arr", "9"); jedis.lpush("arr", "7"); jedis.rpush("arr", "120"); jedis.rpush("arr", "91"); jedis.rpush("arr", "88"); jedis.rpush("arr", "31"); jedis.rpush("arr", "10"); System.out.println("排序前:"+jedis.lrange("arr", 0, -1)); System.out.println("排序后:"+jedis.sort("arr")); } /** * * 测试redis有序集合 * com.chinasofti.test * 方法名:testRedisShortZset * 创建人:liuhl * 时间:2017-4-5-上午10:15:33 * return: void * @exception * @since 1.0.0 * zadd():向有序集合(sorts zsets)中插入一个元素 * zrange():仅列出所有的元素值。 */ @Test public void testRedisShortZset(){ //向有序集合sorts sets插入元素 jedis.zadd("lhlzset", 6, "http://localhost:8080"); jedis.zadd("lhlzset", 6, "sort"); //只列出有序集合的元素 System.out.println(jedis.zrange("lhlzset", 0, -1)); System.out.println(jedis.zrangeByScore("lhlzset", 0, 6)); } /** * * 测试hashs哈希 * com.chinasofti.test * 方法名:testHashs * 创建人:liuhl * 时间:2017-4-6-上午9:46:04 * return: void * @exception * @since 1.0.0 * hmset():建立hashs并赋值 * hmget():列出hashs相关 */ @Test public void testHashs(){ //建立hashs并赋值 Map<String, String> map = new HashMap<>(); map.put("首都", "北京");map.put("河南", "洛阳");map.put("陕西", "西安"); jedis.hmset("china", map); //列出hashs的内容 System.out.println(jedis.hmget("china", "河南")); } }
package com.chinasofti.test; import redis.clients.jedis.Jedis; import redis.clients.jedis.JedisPool; import redis.clients.jedis.JedisPoolConfig; /** * Redis连接池 * * @author Administrator * */ public class RedisUtils { // Redis服务器IP private static String ADDR = "127.0.0.1"; // redis端口号 private static int PORT = 6379; // 访问密码 private static String AUTH = "admin"; /** * 可用连接实例的最大数目,默认为8,如果赋值为-1,则表示不限制, * 如果pool已经分配了maxActive个jedis实例,则此时pool的状态为exhausted(耗尽)。 */ private static int MAX_ACTIVE = 1024; // 控制一个pool最多有多少个状态为idle(空闲的)的jedis实例,默认值也是8。 private static int MAX_IDLE = 200; // 等待可用连接的最大时间,单位毫秒,默认值为-1,表示永不超时。如果超过等待时间,则直接抛出JedisConnectionException; private static int MAX_WAIT = 10000; private static int TIMEOUT = 10000; // 在borrow一个jedis实例时,是否提前进行validate操作;如果为true,则得到的jedis实例均是可用的; private static boolean TEST_ON_BORROW = true; private static JedisPool jedisPool = null; // 初始化连接池 static { try { JedisPoolConfig config = new JedisPoolConfig(); config.setMaxActive(MAX_ACTIVE); config.setMaxIdle(MAX_IDLE); // config.setMaxWait(MAX_WAIT); config.setTestOnBorrow(TEST_ON_BORROW); // jedisPool = new JedisPool(config, ADDR, PORT, TIMEOUT, AUTH); // 注释的这两行为jdk版本问题导致,可忽略 } catch (Exception e) { e.printStackTrace(); } } /** * 获取redis实例 */ public synchronized static Jedis getJedis() { try { if (jedisPool != null) { Jedis jedis = jedisPool.getResource(); return jedis; } else { return null; } } catch (Exception e) { e.printStackTrace(); return null; } } /** * * @param jedis */ public static void returnResource(final Jedis jedis) { if (jedis != null) { jedisPool.returnResource(jedis);// 关闭操作已经在此处处理了 } } }
时间: 2024-10-10 09:12:24