Java中使用Jedis操作Redis
生活随笔
收集整理的這篇文章主要介紹了
Java中使用Jedis操作Redis
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
2019獨角獸企業重金招聘Python工程師標準>>>
需要jar包:
jedis-2.1.0.jar
commons-pool-1.6.jar
單元測試:
package?com.wangbingan.db;import?java.util.HashMap; import?java.util.Iterator; import?java.util.Map;import?org.junit.Before; import?org.junit.Test;import?com.wangbinga.util.RedisUtil;import?redis.clients.jedis.Jedis;/***?Redis測試*?*?@author?AK*?*/ public?class?RedisTest?{private?Jedis?jedis;//?private?String?name?=?"Usher";//?private?String?age?=?"44";//?private?String?sex?=?"male";/***?測試用例啟動前運行*/@Beforepublic?void?setup()?{//?服務器ipString?ip?=?"60.28.29.22";//?服務器端口int?port?=?6379;//?授權密碼String?password?=?"Ytw-2015#Ehsan";//?鏈接redis服務器jedis?=?new?Jedis(ip,?port);//?授權jedis.auth(password);}/***?String測試*/@Testpublic?void?stringTest()?{//?添加數據jedis.set("name",?"Usher");System.out.println("添加數據:"?+?jedis.get("name")?+?"\n");//?拼接數據jedis.append("name",?"\040is?very?cool!");System.out.println("拼接數據:"?+?jedis.get("name")?+?"\n");//?刪除數據jedis.del("name");System.out.println("刪除數據:"?+?jedis.get("name")?+?"\n");//?設置多個數據jedis.mset("name",?"Usher",?"age",?"24",?"sex",?"male");//?某個數據+jedis.incrBy("age",?10);System.out.println("姓名:"?+?jedis.get("name")?+?"\040年齡:"+?jedis.get("age")?+?"\040性別:"?+?jedis.get("sex")?+?"\n");}/***?Map測試*/@Testpublic?void?mapTest()?{Map<String,?String>?map?=?new?HashMap<String,?String>();//?添加數據map.put("name",?"Usher");map.put("age",?"24");map.put("sex",?"male");//?添加到redis中jedis.hmset("Information",?map);System.out.println("添加Map數據:"+?jedis.hmget("Information",?"name",?"age",?"sex")?+?"\n");//?刪除數據jedis.hdel("Information",?"name");System.out.println("刪除Map數據:"?+?jedis.hmget("Information",?"name")+?"\n");//?返回key=Information的值的個數System.out.println("返回key=Information的值的個數:"+?jedis.hlen("Information")?+?"\n");//?判斷是否存在key=Information的對象System.out.println("判斷是否存在key=Information的對象:"+?jedis.exists("Information")?+?"\n");//?返回map對象中的所有key值System.out.println("返回map對象中的所有key值:"?+?jedis.hkeys("Information")+?"\n");//?返回map對象中的所有value值System.out.println("返回map對象中的所有value值:"?+?jedis.hvals("Information")+?"\n");//?循環迭代keyIterator<String>?it?=?jedis.hkeys("Information").iterator();//?判斷是否有元素存在while?(it.hasNext())?{//?獲取元素keyString?key?=?it.next();System.out.println("返回key為"?+?key?+?"的值:"+?jedis.hmget("Information",?key)?+?"\n");}}/***?List測試*/@Testpublic?void?listTest()?{//?先清空Listjedis.del("Information");//?查看List是否清空System.out.println("Lis[清空后]t:"?+?jedis.lrange("Information",?0,?-1)+?"\n");//?添加數據jedis.lpush("Information",?"Usher");jedis.lpush("Information",?"sex");jedis.lpush("Information",?"age");//?查看List元素System.out.println("List[添加后]:"?+?jedis.lrange("Information",?0,?-1)+?"\n");//?清空Listjedis.del("Information");//?添加數據jedis.lpush("Information",?"Elliot");jedis.lpush("Information",?"sex");jedis.lpush("Information",?"age");//?查看List元素System.out.println("List[清空+添加]:"?+?jedis.lrange("Information",?0,?-1)+?"\n");}/***?set測試*/@Testpublic?void?setTest()?{//?添加元素jedis.sadd("user",?"Usher");jedis.sadd("user",?"sex");jedis.sadd("user",?"age");System.out.println("Key的value值[刪除前]:"?+?jedis.smembers("user")?+?"\n");//?刪除元素jedis.srem("user",?"age");//?所有元素的value()System.out.println("Key的value值[刪除后]:"?+?jedis.smembers("user")?+?"\n");//?判斷值是否存在System.out.println("判斷值是否存在:"?+?jedis.sismember("user",?"age")?+?"\n");//?返回集合元素的個數System.out.println("返回集合元素的個數:"?+?jedis.scard("user")?+?"\n");//?返回隨機元素System.out.println("返回隨機元素:"?+?jedis.srandmember("user")?+?"\n");}/***?jedis?排序*/@Testpublic?void?sortTest()?{//?添加元素jedis.rpush("sort",?"1");jedis.lpush("sort",?"2");jedis.lpush("sort",?"3");jedis.lpush("sort",?"4");System.out.println("元素:"?+?jedis.lrange("sort",?0,?-1)?+?"\n");//?排序System.out.println("排序:"?+?jedis.sort("sort")?+?"\n");//?jedis.sort("sort");//?再輸出一次//?System.out.println("元素:"?+?jedis.lrange("sort",?0,?-1)?+?"\n");}/***?測試中文*/@Testpublic?void?chineseTest()?{RedisUtil.getJedis().set("name",?"中文測試");System.out.println(RedisUtil.getJedis().get("name"));} }redis連接池:
package?com.wangbinga.util;import?redis.clients.jedis.Jedis; import?redis.clients.jedis.JedisPool; import?redis.clients.jedis.JedisPoolConfig;/***?Redis連接池*?*?@author?AK*?*/ public?final?class?RedisUtil?{//?Redis服務器IPprivate?static?String?ADDR?=?"60.28.29.22";//?Redis的端口號private?static?int?PORT?=?6379;//?訪問密碼private?static?String?AUTH?=?"Ytw-2015#Ehsan";//?可用連接實例的最大數目,默認值為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?long?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;/***?初始化Redis連接池*/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);}?catch?(Exception?e)?{e.printStackTrace();}}/***?獲取Jedis實例*?*?@return*/public?synchronized?static?Jedis?getJedis()?{try?{if?(jedisPool?!=?null)?{Jedis?resource?=?jedisPool.getResource();return?resource;}?else?{return?null;}}?catch?(Exception?e)?{e.printStackTrace();return?null;}}/***?釋放jedis資源*?*?@param?jedis*/public?static?void?returnResource(final?Jedis?jedis)?{if?(jedis?!=?null)?{jedisPool.returnResource(jedis);}} }最上面的2個jar包很重要(版本o),因為redis的連接池有些方法在jedis-2.1.0才有,如果別的版本可能沒有這個方法。
還有連接池操作的時候需要有commons-pool-1.6.jar這個包,因為第一次用java寫連接池,所以不太懂,但是我覺得
只要用到連接池的地方,肯定會有這個包,哈哈,機智的我!
?
轉載于:https://my.oschina.net/Tsher2015/blog/512919
總結
以上是生活随笔為你收集整理的Java中使用Jedis操作Redis的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: post和get的区别?
- 下一篇: java socket通信