程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 數據庫知識 >> SyBase數據庫 >> SyBase教程 >> jedis切片(集群)非切片(單機)實例

jedis切片(集群)非切片(單機)實例

編輯:SyBase教程

jedis切片(集群)非切片(單機)實例


package testRedis;

importjava.util.ArrayList;

importjava.util.Iterator;

importjava.util.List;

importjava.util.Set;

importredis.clients.jedis.Jedis;

importredis.clients.jedis.JedisPool;

importredis.clients.jedis.JedisPoolConfig;

importredis.clients.jedis.JedisShardInfo;

importredis.clients.jedis.ShardedJedis;

importredis.clients.jedis.ShardedJedisPool;

importredis.clients.jedis.SortingParams;

importredis.clients.util.Pool;



/**

*@author WHD

*2015-4-19

*/

public classRedisClient {

// 獲取數據庫的連接,非切片客戶端連接

privateJedis jedis;

// 非切片連接池

privateJedisPool jedisPool;

//切片客戶端

privateShardedJedis shardedJedis;

// 切片連接池

privateShardedJedisPool shardedJedisPool;



// 構造函數

publicRedisClient(){

// 初始化連接池

initialPool();

// 初始化切片連接池

initialShardedPool();

// 從切片池中獲取切片實例

shardedJedis=shardedJedisPool.getResource();

// 從非切片池中獲取實例

jedis=jedisPool.getResource();

}



// 初始化非切片池

privatevoid initialPool(){

// 池的配置

JedisPoolConfig config= new JedisPoolConfig();

// 最大連接數

config.setMaxActive(20);

// 最大空閒連接數

config.setMaxIdle(5);

//獲取連接時的最大等待毫秒數

config.setMaxWait(10001);

//在空閒時檢查有效性, 默認false

config.setTestOnBorrow(false);

jedisPool= new JedisPool(config,"127.0.0.1",6379);

}



// 初始化切片池

private void initialShardedPool(){

// 池基本配置

JedisPoolConfig config= new JedisPoolConfig();

// 最大連接個數

config.setMaxActive(20);

// 最大空閒連接數

config.setMaxIdle(2);

//獲取連接時的最大等待毫秒數

config.setMaxWait(10001);

// 在空閒時檢查有效性,默認false

config.setTestOnBorrow(false);

//slave 連接, 這裡實現了集群的功能,配置多個redis服務實現請求的分配進行負載均衡

List shards= newArrayList();

shards.add(newJedisShardInfo("192.168.0.106",6379,"master"));

shards.add(newJedisShardInfo("192.168.0.100",6379,"master"));

// 構造池

shardedJedisPool= newShardedJedisPool(config,shards);



}



public void show (){

KeyOperate();

StringOperate();

ListOperate();

// 釋放連接

jedisPool.returnResource(jedis);

// 釋放連接

shardedJedisPool.returnResource(shardedJedis);



}

//

private void KeyOperate(){

System.out.println("清空所有數據庫"+jedis.flushDB());

// 判斷key是否存在

System.out.println("判斷key999建是否存在"+shardedJedis.exists("key999"));

System.out.println("新曾key001value001鍵值對"+shardedJedis.set("key001","value001"));

System.out.println("判斷key001是否存在"+shardedJedis.exists("key001"));

//輸出系統中所有的key

System.out.println("新增key002value002"+shardedJedis.set("key002","value002"));

System.out.println("系統中的所有鍵如下:");

Set keys=jedis.keys("*");

Iterator it= keys.iterator();

while(it.hasNext()){

String key= it.next();

System.out.println(key);



}



// 刪除某個key 如果不從在則忽略

System.out.println("系統中刪除key002"+jedis.del("key002"));

System.out.println("判斷是否存在"+jedis.exists("key002"));

// 設置key 001 的過期時間

System.out.println("設置key001的過期時間為五秒"+jedis.expire("key001",5));

try{

Thread.sleep(2000);

}catch(Exception e){

e.printStackTrace();

}



// 查看某個key的剩余時間 單位秒 不存在或永久 返回-1

System.out.println("查看key001的剩余時間"+jedis.ttl("key001"));

//移除某個key的剩余時間

System.out.println("刪除key001的剩余時間"+jedis.persist("key001"));

//移除後在看時間

System.out.println("剩余時間"+jedis.ttl("key001"));



// 查看key 所存儲的值的類型

System.out.println("查看key所存儲的值的類型"+jedis.type("key001"));



}



/**

* String 類型

*/

private void StringOperate(){

System.out.println("+=+++++++String+++++++===");

//清空數據

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("======改=====");

// 直接覆蓋原來的值

System.out.println("直接覆蓋原來的值"+jedis.set("key001","value001-update"));

System.out.println("獲取key001 對應的新值 "+jedis.get("key001"));

// 如果有的話 則不修改如果沒有的話則要修改

System.out.println("沒有添加,有則無效"+jedis.setnx("key001","value001 a new "));

//獲取這個值看看那

System.out.println("修改了之後應該是value001 a new 獲取這個值"+jedis.get("key001"));

// 直接覆蓋原來的數據

System.out.println("在ke0y002原值後面追加"+jedis.append("key002","appendString"));

System.out.println("獲取key002的新值"+jedis.get("key002"));

System.out.println("======曾,刪查多個=======");

/**

* mset mget 同時新增 修改 查詢多個鍵值對

*/

// 一次性新增多個值

System.out.println(jedis.mset("key201","value201","key202","value202","key203","value203","key204","value204"));

//一次獲得多個建的值

System.out.println(jedis.mget("key201","key202","key203","key204"));

// 一次性刪除多個值

System.out.println("一次性刪除多個值"+jedis.del(newString[]{"key201","key202","key203","key204"}));

// jedis 中有的方法在 shardedJedis 中也可以直接使用,下面測試一些前面沒有使用過的方法

System.out.println("=========STRING2====");

System.out.println("清空所有數據庫"+jedis.flushDB());

System.out.println("原先 key301不存在的時候 新增301"+shardedJedis.setnx("key301","value301"));

System.out.println("原先key302 不存在的時候新增 302"+shardedJedis.setnx("key302","value302"));

System.out.println("原先key302存在時試著新增 302"+shardedJedis.setnx("key302","value302"));

// 獲取key3... 的值

System.out.println("獲取key301的值"+shardedJedis.get("key301"));

System.out.println("獲取key302的值"+shardedJedis.get("key302"));

// 超期 有效鍵值對被刪除

System.out.println("=======");

System.out.println("key303的有效時間為2"+shardedJedis.setex("key303", 2,"key303-2second"));

System.out.println("獲取key303 的值"+shardedJedis.get("key303"));

try{

Thread.sleep(3000);



}catch(Exception e){



}

System.out.println("過期後的key303的值"+shardedJedis.get("key303"));

//獲取原值,更新為新值一步完成

System.out.println("key302 的原值"+shardedJedis.getSet("key302","value302-aftergetset"));

System.out.println("key302 的新值"+shardedJedis.get("key302"));

// 獲取某個key 的子串

System.out.println("獲取key302對應值中的子串"+shardedJedis.getrange("key302", 2, 4));

}



/**

* list 類型

*/

private void ListOperate(){

System.out.println("=======list======11");

// 清空數據

System.out.println("清空數據庫中的所有數據"+jedis.flushDB());

// 添加數據

System.out.println("====增====");

shardedJedis.lpush("stringlists","vectory");

shardedJedis.lpush("stringlists","arraulist");

shardedJedis.lpush("stringlists","vectory");

shardedJedis.lpush("stringlists","vectory");

shardedJedis.lpush("stringlists","linkedlist");

shardedJedis.lpush("stringlists","maplist");

shardedJedis.lpush("stringlists","hashlist");

shardedJedis.lpush("numberlist","1");

shardedJedis.lpush("numberlist","2");

shardedJedis.lpush("numberlist","3");

shardedJedis.lpush("numberlist","4");

shardedJedis.lpush("numberlist","5");

shardedJedis.lpush("numberlist","6");

//獲取stringlist 的所有數據

System.out.println("所有數據stringlists"+shardedJedis.lrange("stringlists",0, -1));

Liststringlist=shardedJedis.lrange("stringlists", 0, -1);

System.out.println("stringlist 的長度"+stringlist.size());

// 獲取 numberlist 的所有數據

System.out.println("獲取numberlist的所有數據"+shardedJedis.lrange("numberlist", 0,-1));

List numberlist=shardedJedis.lrange("numberlist", 0, -1);

System.out.println("numberlist 的長度"+numberlist.size());

// 元素的刪除

System.out.println("元素的刪除");

// 刪除列表指定的值,第二個參數為刪除個數(如果有重復)後添加的先刪除,類似棧

System.out.println("刪除指定的元素"+shardedJedis.lrem("stringlists", 2,"vectory"));

System.out.println("刪除指定的元素在獲取所有元素"+shardedJedis.lrange("stringlists",0,-1));

// 刪除制定區間以外的數據

System.out.println("刪除指定區間以外的數據"+shardedJedis.ltrim("stringlists", 0, 3));

//獲取刪除指定元素外的的數據

System.out.println("刪除指定區間的數據"+shardedJedis.lrange("stringlists", 0,-1));

//列表元素出棧

System.out.println("列表元素出棧"+shardedJedis.lpop("stringlists"));

// 出棧後數據的獲取

System.out.println("出棧後獲取所有元素"+shardedJedis.lrange("stringlists", 0,-1));



// 修改列表中制定下標的值:

System.out.println("修改列表中指定下標的值"+shardedJedis.lset("stringlists", 0,"hello world"));

// 獲取修改制定下標的值

System.out.println("修改後的值"+shardedJedis.lrange("stringlists", 0,-1));



// 查詢 某個key的 數組的長度

System.out.println("獲取長度shardedJedis的"+shardedJedis.llen("stringlists"));

//查詢 某個key的 數組的長度

System.out.println("獲取長度numberlist的"+shardedJedis.llen("numberlist"));

// 排序 list中存字符串時必須指定參數為alpha,如果不使用sortingparams,而是直接使用sort("list")

SortingParams sortingParameters= newSortingParams();

sortingParameters.alpha();

sortingParameters.limit(0,3);

// 排序後的結果

System.out.println("返回排序後的結果stringlists"+shardedJedis.sort("stringlists",sortingParameters));

System.out.println("返回排序後的結果 numberlist"+shardedJedis.sort("numberlist"));



// 獲取子串 -1 代表倒數第一個 -2 代表倒數第二個

System.out.println("子串第二個開始到結束"+shardedJedis.lrange("stringlists", 1,-1));

// 獲取 第二個到倒數第二個

System.out.println("獲取子串"+shardedJedis.lrange("stringlists", 1, -2));

//獲取制定下標的數據

System.out.println("獲取stringlist 的指定的下標的值"+shardedJedis.lindex("stringlists",2));

}

}

 

  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved