生活随笔
收集整理的這篇文章主要介紹了
[java进阶]2.Jedis基础与List的接口
小編覺(jué)得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.
1. Jedis應(yīng)用與基本連接
jedis 是 redis推薦的java客戶(hù)端。通過(guò)Jedis可以很方便地使用java代碼的方式,從而對(duì)redis進(jìn)行操作。jedis使用起來(lái)比較簡(jiǎn)單,它的操作方法與redis命令相類(lèi)似。jedis在github上的下載地址為https://github.com/xetorthio/jedis 。如需要maven管理,可以添加如下依賴(lài):
?
<dependency><groupId>redis.clients</groupId><artifactId>jedis</artifactId><version>2.6.0</version> </dependency>
使用jedis進(jìn)行連接:
public void connectionTest() {
jedis = new Jedis("127.0.0.1", 6379); // ip+port
jedis.auth("helloworld"); //password
}
- 關(guān)系型數(shù)據(jù)庫(kù)和nosql數(shù)據(jù)庫(kù)
關(guān)系型數(shù)據(jù)庫(kù)是基于關(guān)系表的數(shù)據(jù)庫(kù),最終會(huì)將數(shù)據(jù)持久化到磁盤(pán)上,而nosql數(shù)據(jù)庫(kù)是基于特殊的結(jié)構(gòu),并將數(shù)據(jù)存儲(chǔ)到內(nèi)存的數(shù)據(jù)庫(kù)。從性能上而言,nosql數(shù)據(jù)庫(kù)要優(yōu)于關(guān)系型數(shù)據(jù)庫(kù),從安全性上而言關(guān)系型數(shù)據(jù)庫(kù)要優(yōu)于nosql數(shù)據(jù)庫(kù),所以在實(shí)際開(kāi)發(fā)中一個(gè)項(xiàng)目中nosql和關(guān)系型數(shù)據(jù)庫(kù)會(huì)一起使用,達(dá)到性能和安全性的雙保證。
redis就是典型的非關(guān)系型,可基于內(nèi)存亦可持久化的日志型,Key-Value數(shù)據(jù)庫(kù)。為什么會(huì)出現(xiàn)NoSql數(shù)據(jù)庫(kù)?主要是對(duì)數(shù)據(jù)庫(kù)高并發(fā)讀寫(xiě)的需求,每秒鐘上萬(wàn)次的讀寫(xiě)請(qǐng)求,硬盤(pán)IO無(wú)法承受。在部分場(chǎng)合(發(fā)紅包 獲取用戶(hù)的點(diǎn)擊信息 實(shí)時(shí)熱力圖)可以對(duì)關(guān)系數(shù)據(jù)庫(kù)起到很好的補(bǔ)充作用。
?
2. Jedis基本接口
public void keyTest() throws UnsupportedEncodingException {
// 清空數(shù)據(jù)
System.out.println(jedis.flushDB());
System.out.println(jedis.echo("hello"));
// 判斷key否存在
System.out.println(jedis.exists("foo"));
jedis.set("key", "values");
System.out.println(jedis.exists("key"));
// 如果數(shù)據(jù)庫(kù)沒(méi)有任何key,返回nil,否則返回?cái)?shù)據(jù)庫(kù)中一個(gè)隨機(jī)的key。
String randomKey = jedis.randomKey();
System.out.println("randomKey: " + randomKey);
// 設(shè)置60秒后該key過(guò)期
jedis.expire("key", 60);
// key有效毫秒數(shù)
System.out.println(jedis.pttl("key"));
// 移除key的過(guò)期時(shí)間
jedis.persist("key");
// 獲取key的類(lèi)型, "string", "list", "set". "none" none表示key不存在System.out.println("type: " + jedis.type("key"));
// 導(dǎo)出key的值byte[]
bytes = jedis.dump("key");System.out.println(new String(bytes));
// 將key重命名
jedis.renamenx("key", "keytest");
System.out.println("key是否存在: " + jedis.exists("key"));
// 刪除key
jedis.del("key");
System.out.println(jedis.exists("key"));
}
- Jedis對(duì)字符串(String)的相關(guān)操作
public void stringTest() {jedis.set("hello", "hello");System.out.println(jedis.get("hello"));// 使用append 向字符串后面添加jedis.append("hello", " world");System.out.println(jedis.get("hello"));// set覆蓋字符串jedis.set("hello", "123");System.out.println(jedis.get("hello"));// 設(shè)置過(guò)期時(shí)間jedis.setex("hello2", 2, "world2");System.out.println(jedis.get("hello2"));try {Thread.sleep(3000);} catch (InterruptedException e) {}System.out.println(jedis.get("hello2"));// 一次添加多個(gè)key-value對(duì)jedis.mset("a", "1", "b", "2");// 獲取a和b的valueList<String> valus = jedis.mget("a", "b");System.out.println(valus);// 批量刪除jedis.del("a", "b");System.out.println(jedis.exists("a"));System.out.println(jedis.exists("b"));
}
public void listTest() {// 隊(duì)列添加元素jedis.rpush(key, "aaaa");jedis.rpush(key, "bbbb");jedis.rpush(key, "cccc");// 隊(duì)列長(zhǎng)度System.out.println("lenth: " + jedis.llen(key));// 打印隊(duì)列,從索引0開(kāi)始,到倒數(shù)第1個(gè)(全部元素)System.out.println("all elements: " + jedis.lrange(key, 0, -1));// 索引為1的元素,當(dāng)index超出范圍時(shí)會(huì)返回一個(gè)errorSystem.out.println("index of 1: " + jedis.lindex(key, 1));// 從隊(duì)列的右邊入隊(duì)一個(gè)元素jedis.rpush(key, "-2", "-1");// 先-2,后-1入隊(duì)列System.out.println("all elements: " + jedis.lrange(key, 0, -1));// 從隊(duì)列的左邊入隊(duì)一個(gè)或多個(gè)元素jedis.lpush(key, "second element", "first element");// 先second// 從隊(duì)列的右邊出隊(duì)一個(gè)元素System.out.println(jedis.rpop(key));// 從隊(duì)列的左邊出隊(duì)一個(gè)元素System.out.println(jedis.lpop(key));System.out.println("all elements: " + jedis.lrange(key, 0, -1));// count > 0: 從頭往尾移除值為 value 的元素,count為移除的個(gè)數(shù)。// count < 0: 從尾往頭移除值為 value 的元素,count為移除的個(gè)數(shù)。// count = 0: 移除所有值為 value 的元素。jedis.lrem(key, 1, "cccc");System.out.println("all elements: " + jedis.lrange(key, 0, -1));// 刪除區(qū)間以外的元素System.out.println(jedis.ltrim(key, 0, 2));System.out.println("all elements: " + jedis.lrange(key, 0, -1));
}
?
總結(jié)
以上是生活随笔為你收集整理的[java进阶]2.Jedis基础与List的接口的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。
如果覺(jué)得生活随笔網(wǎng)站內(nèi)容還不錯(cuò),歡迎將生活随笔推薦給好友。