国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 學院 > 開發設計 > 正文

Jedis API操作Redis數據庫入門

2019-11-09 13:38:46
字體:
來源:轉載
供稿:網友

半路出家菜碼農,裸辭找工迷茫中;面試碰壁知不足,歸家勤學記此中。

前段時間看完了csdn上的redis入門相關視頻,現在來學在java項目中操作redis的API,Jedis。文中代碼是模仿網上各大俠的,并無什么亮點。志在記錄自己學習的點滴,踏出的每步。

一、操作Redis的庫及其他基本資料:1.官網上的各種語言操作Redis的庫的介紹:https://redis.io/clients(注意官方推薦的java庫是Jedis)。2.網上找到的Jedis API文檔:http://tool.oschina.net/uploads/apidocs/ (2.1.0版英文,中文我暫時沒找到)。3.Jedis包:http://files.cnblogs.com/liuling/jedis-2.1.0.jar.zip4.Redis連接池的包:http://files.cnblogs.com/liuling/commons-pool-1.5.4.jar.zip

二、啟動redis(案例中redis在本機)

二、導入Jedis包以及Redis連接池:

import redis.clients.jedis.Jedis;import redis.clients.jedis.JedisPool;import redis.clients.jedis.JedisPoolConfig;三、Jedis對象生成

Jedis對象有各種對Redis的基本操作,包括對Redis支持的String、List等對象的基本增刪查改(與Redis操作命令基本一樣)。代碼中以JUnit測試:

public void testClient() {	jedisCli = new Jedis("127.0.0.1", 6379); //新建Jedis對象	jedisCli.select(2); //切換Redis數據庫	jedisCli.set("firstJedis", "hello,Jedis"); //與Redis命令行操作基本一致}再舉Jedis對Map的操作的例子:
@Testpublic void testMap() {	jedisCli = new Jedis("127.0.0.1", 6379); 	jedisCli.select(2);	jedisCli.hset("family", "lbq", "65"); //同Redis命令行中的hset操作,如名為family的set不存在,則創建set并放入名為lbq的元素,值為65	jedisCli.hset("family", "zjz", "62"); //Redis不支持int類型,如不傳String則會報錯。	System.out.PRintln(jedisCli.hmget("family","lbq","zjz"));			Map testMap1 = new HashMap();	testMap1.put("num1", "1"); //此處同上面,不能傳非String型	testMap1.put("num2", "15");	testMap1.put("num3", "606");	testMap1.put("num4", "1024");	jedisCli.hmset("testMap1", testMap1); //傳入整個map對象入redis	System.out.println(jedisCli.hmget("testMap1", "num1","num2","num3","num4"));}

四、使用Redis連接池:

與關系型的數據庫一樣,大型項目中使用連接池,能夠有效管理利用redis連接,避免連接資源不及時回收重用造成的浪費和對數據庫的影響。

代碼如下:

1.在測試類中新建線程池私有靜態變量與各種配置屬性:

	private Jedis jedisCli;	private static JedisPool pool; //線程池對象		private static String ADDR = "127.0.0.1"; 	//redis所在服務器地址(案例中是在本機)	private static int PORT = 6379; 		//端口號	private static String AUTH = "";		//密碼(我沒有設置)	private static int MAX_IDLE = 10;		//連接池最大空閑連接數(最多保持空閑連接有多少)	private static int MAX_ACTIVE = 50;		//最大激活連接數(能用的最多的連接有多少)	private static int MAX_WAIT = 100000;		//等待可用連接的最大時間(毫秒),默認值-1,表示永不超時。若超過等待時間,則拋JedisConnectionException	private static int TIMEOUT = 10000;		//鏈接連接池的超時時間#使用連接時,檢測連接是否成功	private static boolean TEST_ON_BORROW = true;	//使用連接時,測試連接是否可用
	private static boolean TEST_ON_RETURN = true;			//返回連接時,測試連接是否可用靜態塊加載連接屬性:

static{	JedisPoolConfig config = new JedisPoolConfig();	config.setMaxIdle(MAX_IDLE);	config.setMaxActive(MAX_ACTIVE);	config.setMaxWait(MAX_WAIT);	config.setTestOnBorrow(TEST_ON_BORROW);	config.setTestOnReturn(TEST_ON_RETURN);	pool = new JedisPool(config, ADDR, PORT, TIMEOUT); //新建連接池,如有密碼最后加參數}獲取連接資源以及回收使用完的連接的方法:

	//獲取連接方法
	public static Jedis getJedisResource () {		try {			if (pool!=null) {				Jedis resource = pool.getResource();				return resource;			} 			return null;		} catch(Exception e) {			e.printStackTrace();			return null;		}	}	
	//回收連接方法		public static void returnResource (Jedis used) {				if(pool!=null){			pool.returnResource(used);		}			}	}JUnit測試方法

@Test	public void testPool() {		Jedis resource = getJedisResource();		resource.select(2);		resource.lpush("Countries", "USA");	//redis對list頭的插入元素操作		resource.lpush("Countries", "UK");		resource.lpush("Countries", "CHINA");		System.out.println(resource.rpop("Countries"));	//list末尾彈出元素		returnResource(resource);	}


發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 东乡族自治县| 北宁市| 都兰县| 南通市| 闸北区| 剑河县| 嘉义市| 文水县| 金川县| 长岭县| 扎囊县| 保德县| 连平县| 平乡县| 大理市| 辛集市| 景宁| 房产| 马尔康县| 开封县| 奉贤区| 南城县| 五河县| 阳原县| 通榆县| 银川市| 通辽市| 卓尼县| 黑河市| 海晏县| 大方县| 水富县| 通海县| 卫辉市| 武清区| 晋江市| 沂源县| 闸北区| 吉安县| 安西县| 开阳县|