Redis入門之redis 串連以及 對字元的操作

來源:互聯網
上載者:User
[java] view plain copy package redis.clients.jedis.tests;      import java.text.ParseException;   import java.util.Iterator;   import java.util.List;   import java.util.Set;      import org.junit.AfterClass;   import org.junit.BeforeClass;   import org.junit.Test;      import redis.clients.jedis.HostAndPort;   import redis.clients.jedis.Jedis;   import redis.clients.jedis.Protocol;   import redis.clients.jedis.ScanParams;   import redis.clients.jedis.ScanResult;   import redis.clients.jedis.params.set.SetParams;      public class JedisAllMethodTest {       static Jedis jedis = null;       static HostAndPort hnp = new HostAndPort("10.0.50.11", Protocol.DEFAULT_PORT);              /**       * 初始化串連       * @author jackson       * @date 2015-12-16 上午8:54:01       * @throws Exception       * @return void       */       @BeforeClass  // junit 提供的@BeforeClass標籤,    beforeClass 標籤只執行一次         public static void setUp() throws Exception {          //串連jedis 的第一種方式           jedis = new Jedis(hnp.getHost(), hnp.getPort(), 500);           jedis.connect();           jedis.auth("foobared");// redis auth 命令 驗證 redis 密碼,需要在redis.conf設定檔中,開啟  requirepass foobared 參數,           jedis.configSet("timeout", "300");// redis config 命令           jedis.flushAll();// redis flushall 命令 清空所有key 及清空所有資料                      //串連jedis的第二種方式           /* 使用 uri 串連資料庫          jedis = new Jedis(new URI("redis://:foobared@10.0.50.11:6379/4"), 15000,15000);// 4 表示串連的是 第5個資料庫 url,逾時時間,輸入資料流逾時時間          jedis.connect();          jedis.flushAll();// redis flushall 命令 清空所有key 及清空所有資料            */                      // 串連jedis的第三種方式           /*使用 jedisShardInfo 串連redis          JedisShardInfo jedisShardInfo = new JedisShardInfo("redis://:foobared@10.0.50.11:6379/1");// /1 表示串連的是 第二個資料庫 ;foobared 資料庫的密碼          jedisShardInfo.setConnectionTimeout(150000);          jedisShardInfo.setSoTimeout(150000);          jedis = new Jedis(jedisShardInfo);          jedis.connect();          jedis.flushAll();// redis flushall 命令 清空所有key 及清空所有資料          */                    }          /**       * 關閉串連       * @author jackson       * @date 2015-12-16 上午8:54:34       * @return void       */       @AfterClass       public static void tearDown() { // 當標籤為 AfterClass BeforeClass 時方法 必須為static  為 before  after 時不需要           jedis.disconnect();// 最終調用的是  Connection 中的  disconnect  作用是關閉流,關閉socket        }       /**       *   redis 中  對 字串 和key的操作的示範       * @author jackson       * @date 2015-12-17 下午1:15:10       * @throws InterruptedException       * @throws ParseException       * @return void       */       /**       * @author jackson       * @date 2015-12-17 下午1:48:00       * @throws InterruptedException       * @throws ParseException       * @return void       */       @Test       public void jedisStringKeyTest() throws InterruptedException, ParseException{           System.out.println("===測試jedis BEGIN==="); // sotimeOut設定socket調用InputStream讀資料的逾時時間           jedis.set("test", "test");            System.out.println(jedis.get("test"));           jedis.append("test", "test2");// 最終是將 字串轉換為位元組數組通過流的形式寫入           System.out.println(jedis.get("test"));                      /*           * NX|XX, NX --有此參數時只能 set 不存在的key,如果給已經存在的key set 值則不生效, XX -- 此參數只能設定已經存在的key 的值,不存在的不生效           * EX|PX, key 的存在時間: EX = seconds; PX = milliseconds           * */           // 驗證  NX XX           String status = jedis.set("test", "test234",SetParams.setParams().nx());// status 為null 則說明操作失敗           System.out.println("測試SetParams.setParams().nx()給已經存在的key set值  操作狀態:"+status + "操作值"+jedis.get("test")); // 輸出值testtest2           status = jedis.set("test1", "test2222",SetParams.setParams().nx());//status 為ok           System.out.println("測試SetParams.setParams().nx()給不存在的key set值  操作狀態 操作狀態:"+status + "操作值"+jedis.get("test1"));// 輸出值為test2222                      status = jedis.set("test1", "test342222",SetParams.setParams().xx());// status 為ok           System.out.println(" 測試SetParams.setParams().xx()給已經存在的key set值  操作狀態 操作狀態:"+status + "操作值"+jedis.get("test1"));// 輸出值為 test342222           status = jedis.set("test21", "test34212222",SetParams.setParams().xx());// status 為null            System.out.println("測試SetParams.setParams().xx()給不存在的key set值  操作狀態 操作狀態 操作狀態:"+status + "操作值"+jedis.get("test21"));// 輸出值為null                      // 驗證 EX|PX           status = jedis.set("testEX", "testEX",SetParams.setParams().ex(1));           System.out.println("測試 ex  操作狀態:"+status+"操作值:"+jedis.get("testEX"));// 輸出 testEX           Thread.sleep(1002);           System.out.println("測試ex 1 秒後自動銷毀,輸出null 操作狀態:"+status+"操作值:"+jedis.get("testEX"));// 1 秒後自動銷毀,輸出null                      status = jedis.set("testPX", "testEX",SetParams.setParams().px(100));           System.out.println("測試 px  操作狀態:"+status+"操作值:"+jedis.get("testPX"));// 輸出 testEX           Thread.sleep(101);           System.out.println("測試px 1 秒後自動銷毀 操作狀態:"+status+"操作值:"+jedis.get("testPX"));// 1 秒後自動銷毀,輸出null                                  // Note: 因為SET 命令可以通過參數來實現和SETNX 、SETEX 和PSETEX 三個命令的效果,所以將來的Redis 版本可能會廢棄並最終移除SETNX 、SETEX 和PSETEX 這三個命令           //setNx 將key 的值設為value ,若且唯若key 不存在。若給定的key 已經存在,則SETNX 不做任何動作。 SETNX 是『SET if Not eXists』(如果不存在,則SET) 的簡寫            // 類似於 set(key,value,nx)              // 當key 不存在時            long   n = jedis.setnx("key6", "value6");            System.out.println(n!=0?"set 成功"+jedis.get("key6"):"set 失敗"); // set 成功返回 1  set失敗返回 0             // 當key 存在時            n = jedis.setnx("key6", "value6");            System.out.println(n!=0?"set 成功"+jedis.get("key6")+n:"set 失敗"+jedis.get("key6")+n);                        // setex 類似於 執行 set(key,value) 在執行   EXPIRE  類似於  set(key,value,ex)  設定存留時間是 秒級的           status =  jedis.setex("key7", 1, "value7");            System.out.println(status+jedis.get("key7"));            Thread.sleep(1000);            System.out.println(jedis.get("key7"));            jedis.psetex("key20", 10, "value20");// 設定毫秒級的存留時間,類似於  set(key,value,px)                      // exists  檢查給定key(多個 key值) 是否存在。 傳回值: 若 所有key都不存在,返回0 ,若存在 則返回 存在key的數量            System.out.println("===測試 exists 命令: ====");             n = jedis.exists("test1 test test2".split(" ")); //             int count = "test1 test test2".split(" ").length - (int) n;            System.out.println( n != 0 ? "key 存在 個數為:"+n+" 不存在個數為:"+count:"key 不存在"+n);                        // exist 檢查 單個 key 值是否存在   傳回值: 如果key 值存在 返回 true ,如果不存在 在返回false                       boolean exists =  jedis.exists("test");// 返回true            System.out.println(exists);                        // del 刪除給定的一個或多個key 。不存在的key 會被忽略  傳回值: 返回刪除key 的數量,            System.out.println("===測試 del 命令:=== ");            n = jedis.del("test1 test test2".split(" "));            System.out.println("刪除key 的數量為"+n);            System.out.println(jedis.get("test")+jedis.get("test1"));// 返回null  說明已經刪除了                        jedis.set("testDel", "testDel");            n = jedis.del("testDel");            System.out.println("刪除key 的數量為"+n);                        // type 命令            System.out.println("===測試 type 命令:=== ");            String type = jedis.type("test"); // test 不存在 返回none            System.out.println("儲存類型為:"+type);            jedis.set("testType", "testType");            type = jedis.type("testType"); // test 返回String            System.out.println("儲存類型為:"+type);                        jedis.flushAll();            // mset 命令 批量 插入   插入所有的值,如果key值已經存在,則進行覆蓋   插入成功 返回ok 總是插入成功
相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.