Redis java API ——Jedis的使用
生活随笔
收集整理的這篇文章主要介紹了
Redis java API ——Jedis的使用
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
Redis 不僅是使用命令來操作,現在基本上主流的語言都有客戶端代碼支持,比如
java、C、C#、C++、php、Node.js、Go 等。
在官方網站里列一些 Java 的客戶端,有 Jedis、Redisson、Jredis、JDBC-Redis、等
其中官方推薦使用 Jedis 和 Redisson。 在企業中用的最多的就是 Jedis,下面我們就重
點學習下 Jedis。
Jedis 同樣也是托管在 github 上,地址:https://github.com/xetorthio/jedis.
1、Jedis的使用:
添加依賴:
<dependency> <groupId>redis.clients</groupId> <artifactId>jedis</artifactId> <version>2.9.0</version> </dependency>獲取jedis對象,使用jedis對象的方法操作redis數據庫的數據:
// 創建一個 Jedis 的連接 Jedis jedis = new Jedis(“127.0.0.1”, 6379); // 密碼認證 如果設置了密碼,就需要進行認證 jedis.auth(“offcn123”); // 執行 redis 命令 jedis.set(“mytest”, “hello world, this is jedis client!”);?各種方法實例:
import org.junit.Test; import redis.clients.jedis.Jedis; import redis.clients.jedis.JedisPool; import redis.clients.jedis.JedisPoolConfig; import redis.clients.jedis.SortingParams;import java.util.Iterator; import java.util.Set;public class JunitJedis {@Testpublic void jedis(){Jedis jedis=new Jedis("127.0.0.1", 6379);jedis.set("strKey","hello world");System.out.println(jedis.get("strKey"));System.out.println(jedis.ping());}@Testpublic void jedisPool(){//jedis池配置信息JedisPoolConfig config=new JedisPoolConfig();config.setMinIdle(10);config.setMaxWaitMillis(3000);config.setMaxTotal(100);//創建jedispool對象JedisPool pool=new JedisPool(config,"127.0.0.1", 6379);//從jedispool中獲取一個jedis對象Jedis jedis = pool.getResource();jedis.set("strKey","hello world");System.out.println(jedis.get("strKey"));//釋放連接jedis.close();}/*** 測試keys*/@Testpublic void KeyOperate() {Jedis jedis = new Jedis("127.0.0.1", 6379);System.out.println("======================key==========================");// 清空數據System.out.println("清空庫中所有數據:"+jedis.flushDB());// 判斷key否存在System.out.println("判斷key999鍵是否存在:"+jedis.exists("key999"));System.out.println("新增key001,value001鍵值對:"+jedis.set("key001", "value001"));System.out.println("判斷key001是否存在:"+jedis.exists("key001"));// 輸出系統中所有的keySystem.out.println("新增key002,value002鍵值對:"+jedis.set("key002", "value002"));System.out.println("系統中所有鍵如下:");Set<String> keys = jedis.keys("*");Iterator<String> it=keys.iterator() ;while(it.hasNext()){String key = it.next();System.out.println(key);}// 刪除某個key,若key不存在,則忽略該命令。System.out.println("系統中刪除key002: "+jedis.del("key002"));System.out.println("判斷key002是否存在:"+jedis.exists("key002"));// 設置 key001的過期時間System.out.println("設置 key001的過期時間為5秒:"+jedis.expire("key001", 5));try{Thread.sleep(2000);}catch (InterruptedException e){}// 查看某個key的剩余生存時間,單位【秒】.永久生存或者不存在的都返回-1System.out.println("查看key001的剩余生存時間:"+jedis.ttl("key001"));// 移除某個key的生存時間System.out.println("移除key001的生存時間:"+jedis.persist("key001"));System.out.println("查看key001的剩余生存時間:"+jedis.ttl("key001"));// 查看key所儲存的值的類型System.out.println("查看key所儲存的值的類型:"+jedis.type("key001"));/** 一些其他方法:1、修改鍵名:jedis.rename("key6", "key0");* 2、將當前db的key移動到給定的db當中:jedis.move("foo", 1)*/}/*** 測試String類型數據*/@Testpublic void StringOperate() {Jedis jedis = new Jedis("127.0.0.1", 6379);System.out.println("======================String_1==========================");// 清空數據System.out.println("清空庫中所有數據:"+jedis.flushDB());System.out.println("=============增=============");jedis.set("key001","value001");jedis.set("key002","value002");jedis.set("key003","value003");System.out.println("已新增的3個鍵值對如下:");System.out.println(jedis.get("key001"));System.out.println(jedis.get("key002"));System.out.println(jedis.get("key003"));System.out.println("=============刪=============");System.out.println("刪除key003鍵值對:"+jedis.del("key003"));System.out.println("獲取key003鍵對應的值:"+jedis.get("key003"));System.out.println("=============改=============");//1、直接覆蓋原來的數據System.out.println("直接覆蓋key001原來的數據:"+jedis.set("key001","value001-update"));System.out.println("獲取key001對應的新值:"+jedis.get("key001"));//2、直接覆蓋原來的數據System.out.println("在key002原來值后面追加:"+jedis.append("key002","+appendString"));System.out.println("獲取key002對應的新值"+jedis.get("key002"));System.out.println("=============增,刪,查(多個)=============");/*** mset,mget同時新增,修改,查詢多個鍵值對* 等價于:* jedis.set("name","ssss");* jedis.set("jarorwar","xxxx");*/System.out.println("一次性新增key201,key202,key203,key204及其對應值:"+jedis.mset("key201","value201","key202","value202","key203","value203","key204","value204"));System.out.println("一次性獲取key201,key202,key203,key204各自對應的值:"+jedis.mget("key201","key202","key203","key204"));System.out.println("一次性刪除key201,key202:"+jedis.del(new String[]{"key201", "key202"}));System.out.println("一次性獲取key201,key202,key203,key204各自對應的值:"+jedis.mget("key201","key202","key203","key204"));System.out.println();//jedis具備的功能jedis中也可直接使用,下面測試一些前面沒用過的方法System.out.println("======================String_2==========================");// 清空數據System.out.println("清空庫中所有數據:"+jedis.flushDB());System.out.println("=============新增鍵值對時防止覆蓋原先值=============");System.out.println("原先key301不存在時,新增key301:"+jedis.setnx("key301", "value301"));System.out.println("原先key302不存在時,新增key302:"+jedis.setnx("key302", "value302"));System.out.println("當key302存在時,嘗試新增key302:"+jedis.setnx("key302", "value302_new"));System.out.println("獲取key301對應的值:"+jedis.get("key301"));System.out.println("獲取key302對應的值:"+jedis.get("key302"));System.out.println("=============超過有效期鍵值對被刪除=============");// 設置key的有效期,并存儲數據System.out.println("新增key303,并指定過期時間為2秒"+jedis.setex("key303", 2, "key303-2second"));System.out.println("獲取key303對應的值:"+jedis.get("key303"));try{Thread.sleep(3000);}catch (InterruptedException e){}System.out.println("3秒之后,獲取key303對應的值:"+jedis.get("key303"));System.out.println("=============獲取原值,更新為新值一步完成=============");System.out.println("key302原值:"+jedis.getSet("key302", "value302-after-getset"));System.out.println("key302新值:"+jedis.get("key302"));System.out.println("=============獲取子串=============");System.out.println("獲取key302對應值中的子串:"+jedis.getrange("key302", 5, 7));}@Testpublic void ListOperate() {Jedis jedis = new Jedis("127.0.0.1", 6379);System.out.println("======================list==========================");// 清空數據System.out.println("清空庫中所有數據:"+jedis.flushDB());System.out.println("=============增=============");jedis.lpush("stringlists", "vector");jedis.lpush("stringlists", "ArrayList");jedis.lpush("stringlists", "vector");jedis.lpush("stringlists", "vector");jedis.lpush("stringlists", "LinkedList");jedis.lpush("stringlists", "MapList");jedis.lpush("stringlists", "SerialList");jedis.lpush("stringlists", "HashList");jedis.lpush("numberlists", "3");jedis.lpush("numberlists", "1");jedis.lpush("numberlists", "5");jedis.lpush("numberlists", "2");System.out.println("所有元素-stringlists:"+jedis.lrange("stringlists", 0, -1));System.out.println("所有元素-numberlists:"+jedis.lrange("numberlists", 0, -1));System.out.println("=============刪=============");// 刪除列表指定的值 ,第二個參數為刪除的個數(有重復時),后add進去的值先被刪,類似于出棧System.out.println("成功刪除指定元素個數-stringlists:"+jedis.lrem("stringlists", 2, "vector"));System.out.println("刪除指定元素之后-stringlists:"+jedis.lrange("stringlists", 0, -1));// 刪除區間以外的數據System.out.println("刪除下標0-3區間之外的元素:"+jedis.ltrim("stringlists", 0, 3));System.out.println("刪除指定區間之外元素后-stringlists:"+jedis.lrange("stringlists", 0, -1));// 列表元素出棧System.out.println("出棧元素:"+jedis.lpop("stringlists"));System.out.println("元素出棧后-stringlists:"+jedis.lrange("stringlists", 0, -1));System.out.println("=============改=============");// 修改列表中指定下標的值jedis.lset("stringlists", 0, "hello list!");System.out.println("下標為0的值修改后-stringlists:"+jedis.lrange("stringlists", 0, -1));System.out.println("=============查=============");// 數組長度System.out.println("長度-stringlists:"+jedis.llen("stringlists"));System.out.println("長度-numberlists:"+jedis.llen("numberlists"));// 排序/** list中存字符串時必須指定參數為alpha,如果不使用SortingParams,而是直接使用sort("list"),* 會出現"ERR One or more scores can't be converted into double"*/SortingParams sortingParameters = new SortingParams();sortingParameters.alpha();sortingParameters.limit(0, 3);System.out.println("返回排序后的結果-stringlists:"+jedis.sort("stringlists",sortingParameters));System.out.println("返回排序后的結果-numberlists:"+jedis.sort("numberlists"));// 子串: start為元素下標,end也為元素下標;-1代表倒數一個元素,-2代表倒數第二個元素System.out.println("子串-第二個開始到結束:"+jedis.lrange("stringlists", 1, -1));// 獲取列表指定下標的值System.out.println("獲取下標為2的元素:"+jedis.lindex("stringlists", 2)+"\n");}@Testpublic void SetOperate() {Jedis jedis = new Jedis("127.0.0.1", 6379);// 清空數據System.out.println("清空庫中所有數據:"+jedis.flushDB());System.out.println("=============增=============");System.out.println("向sets集合中加入元素element001:"+jedis.sadd("sets", "element001"));System.out.println("向sets集合中加入元素element002:"+jedis.sadd("sets", "element002"));System.out.println("向sets集合中加入元素element003:"+jedis.sadd("sets", "element003"));System.out.println("向sets集合中加入元素element004:"+jedis.sadd("sets", "element004"));System.out.println("查看sets集合中的所有元素:"+jedis.smembers("sets"));System.out.println();System.out.println("=============刪=============");System.out.println("集合sets中刪除元素element003:"+jedis.srem("sets", "element003"));System.out.println("查看sets集合中的所有元素:"+jedis.smembers("sets"));/*System.out.println("sets集合中任意位置的元素出棧:"+jedis.spop("sets"));//注:出棧元素位置居然不定?--無實際意義System.out.println("查看sets集合中的所有元素:"+jedis.smembers("sets"));*/System.out.println();System.out.println("=============改=============");System.out.println();System.out.println("=============查=============");System.out.println("判斷element001是否在集合sets中:"+jedis.sismember("sets", "element001"));System.out.println("循環查詢獲取sets中的每個元素:");Set<String> set = jedis.smembers("sets");Iterator<String> it=set.iterator() ;while(it.hasNext()){Object obj=it.next();System.out.println(obj);}System.out.println();System.out.println("=============集合運算=============");System.out.println("sets1中添加元素element001:"+jedis.sadd("sets1", "element001"));System.out.println("sets1中添加元素element002:"+jedis.sadd("sets1", "element002"));System.out.println("sets1中添加元素element003:"+jedis.sadd("sets1", "element003"));System.out.println("sets1中添加元素element002:"+jedis.sadd("sets2", "element002"));System.out.println("sets1中添加元素element003:"+jedis.sadd("sets2", "element003"));System.out.println("sets1中添加元素element004:"+jedis.sadd("sets2", "element004"));System.out.println("查看sets1集合中的所有元素:"+jedis.smembers("sets1"));System.out.println("查看sets2集合中的所有元素:"+jedis.smembers("sets2"));System.out.println("sets1和sets2交集:"+jedis.sinter("sets1", "sets2"));System.out.println("sets1和sets2并集:"+jedis.sunion("sets1", "sets2"));System.out.println("sets1和sets2差集:"+jedis.sdiff("sets1", "sets2"));//差集:set1中有,set2中沒有的元素}@Testpublic void SortedSetOperate() {Jedis jedis = new Jedis("127.0.0.1", 6379);System.out.println("======================zset==========================");// 清空數據System.out.println(jedis.flushDB());System.out.println("=============增=============");System.out.println("zset中添加元素element001:"+jedis.zadd("zset", 7.0, "element001"));System.out.println("zset中添加元素element002:"+jedis.zadd("zset", 8.0, "element002"));System.out.println("zset中添加元素element003:"+jedis.zadd("zset", 2.0, "element003"));System.out.println("zset中添加元素element004:"+jedis.zadd("zset", 3.0, "element004"));System.out.println("zset集合中的所有元素:"+jedis.zrange("zset", 0, -1));//按照權重值排序System.out.println();System.out.println("=============刪=============");System.out.println("zset中刪除元素element002:"+jedis.zrem("zset", "element002"));System.out.println("zset集合中的所有元素:"+jedis.zrange("zset", 0, -1));System.out.println();System.out.println("=============改=============");System.out.println();System.out.println("=============查=============");System.out.println("統計zset集合中的元素中個數:"+jedis.zcard("zset"));System.out.println("統計zset集合中權重某個范圍內(1.0——5.0),元素的個數:"+jedis.zcount("zset", 1.0, 5.0));System.out.println("查看zset集合中element004的權重:"+jedis.zscore("zset", "element004"));System.out.println("查看下標1到2范圍內的元素值:"+jedis.zrange("zset", 1, 2));}@Testpublic void HashOperate() {Jedis jedis = new Jedis("127.0.0.1", 6379);System.out.println("======================hash==========================");//清空數據System.out.println(jedis.flushDB());System.out.println("=============增=============");System.out.println("hashs中添加key001和value001鍵值對:"+jedis.hset("hashs", "key001", "value001"));System.out.println("hashs中添加key002和value002鍵值對:"+jedis.hset("hashs", "key002", "value002"));System.out.println("hashs中添加key003和value003鍵值對:"+jedis.hset("hashs", "key003", "value003"));System.out.println("新增key004和4的整型鍵值對:"+jedis.hincrBy("hashs", "key004", 4l));System.out.println("hashs中的所有值:"+jedis.hvals("hashs"));System.out.println();System.out.println("=============刪=============");System.out.println("hashs中刪除key002鍵值對:"+jedis.hdel("hashs", "key002"));System.out.println("hashs中的所有值:"+jedis.hvals("hashs"));System.out.println();System.out.println("=============改=============");System.out.println("key004整型鍵值的值增加100:"+jedis.hincrBy("hashs", "key004", 100l));System.out.println("hashs中的所有值:"+jedis.hvals("hashs"));System.out.println();System.out.println("=============查=============");System.out.println("判斷key003是否存在:"+jedis.hexists("hashs", "key003"));System.out.println("獲取key004對應的值:"+jedis.hget("hashs", "key004"));System.out.println("批量獲取key001和key003對應的值:"+jedis.hmget("hashs", "key001", "key003"));System.out.println("獲取hashs中所有的key:"+jedis.hkeys("hashs"));System.out.println("獲取hashs中所有的value:"+jedis.hvals("hashs"));System.out.println();} }2、JedisPool的使用:
import redis.clients.jedis.Jedis; import redis.clients.jedis.JedisPool; import redis.clients.jedis.JedisPoolConfig;public class JedisPoolUtil {private static JedisPool jedisPool;static{JedisPoolConfig jedisPoolConfig=new JedisPoolConfig();jedisPoolConfig.setMaxIdle(100);jedisPoolConfig.setMaxTotal(1000);jedisPoolConfig.setMaxWaitMillis(2000);jedisPoolConfig.setMinIdle(10);jedisPool=new JedisPool(jedisPoolConfig,"127.0.0.1",6379);}public static Jedis getJedis(){return jedisPool.getResource();} }?
?
總結
以上是生活随笔為你收集整理的Redis java API ——Jedis的使用的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 爬虫 spider07——爬取腾讯娱乐新
- 下一篇: 爬虫 spider08——爬取腾讯娱乐新