Redis叢集 Java客戶端Jedis的使用
Java客戶端Jedis
這裡只講Jedis常規用法和五種資料結構的方法(關於叢集的搭建以後再寫)
2.稍微修飾下
3.執行效果
4.相應的jar包(第一個不相容,沒用,junit4.4:@test
做測試所需)
二,redis資料型別(String List Set Sorted Hash )方法介紹(方法引數型別如果每註明都是String)
1. Jedis jedis = new Jedis("192.168.0.163", 6379); //寫自己的地址
2.JedisCluster jedis = new JedisCluster(jedisClusterNodes);//jedisClusterNodes是多個IP組成
redis的String型別資料結構的快取操作:
/**
* 字串快取操作類或者JavaBean快取操作類
* key String, value String-->看下邊的注意點2
* key byte[], value byte[]-->key.getBytes[], value 序列化為byte[],通常需要自己寫一個序列化工具
* 注意:這一點與memcached不一樣,memcached可以key String, value Object
* 1、memcached直接加序列化器就可以,或者在業務層中將Object-->String
* 2、redis執行此介面,一般只會採用後者Object-->String
*/
String:
1. jedis.set(key,value);//set(String,String),value除了string以外,還可以是byte[]
/**
* 設定快取
* 類似於memcached的set,不管是否已經有相同的key,都成功
* 實際上只是set(String, String)
*/
2.jedis.setex(key, value, expire
/**
* 設定快取,並指定快取過期時間,單位是秒
*/
3.jedis.setnx(key, value);
/**
* 設定快取,如果設定的key不存在,直接設定,如果key已經存在了,則什麼操作都不做,直接返回
* 類似於memcached的add
*/
long setCount = jedis.setnx(keyPrefix+KEY_SPLIT+key, value);
4. jedis.get(key);
/**
* 根據key獲取快取
* @param key
* @return String
*/
5. jedis.del(key);
/**
* 根據key刪除快取
*/
6. jedis.expire(key, expire);
/**
* 更新快取過期時間,單位:秒
* 從執行該方法開始,為相應的key-value設定快取過期時間expire
* 類似於memcached中的touch命令
*/
redis的List型別資料結構的快取操作:
List(有序列表工具類)
1. jedis.lpush(list, values);//可以多值(String list, String... values)
/**
* 從左邊(首部)加入列表
* 注意:
* 1、可以一次性入隊n個元素(這裡使用了不定引數,當然可以換做陣列)
* 2、左邊入隊,相當於在隊頭插入元素,則之後的元素都要後移一位;而右邊入隊的話元素直接插在隊尾,之前的元素的索引不變
*/
2.
jedis.lpush(list, values);
jedis.expire(list, expire);//為該list設定快取過期時間
/**
* 從左邊(首部)加入列表
* 並指定列表快取過期時間
*/
3. jedis.rpush(list, values);
/**
* 從右邊(尾部)加入列表
*/
4.
jedis.rpush(list, values);
jedis.expire(list, expire);//設定快取過期時間
/**
* 從右邊(尾部)加入列表
* 並設定快取過期時間
*/
5. jedis.lset(list, index, value);
/**
* 設定list中index位置的元素
* index==-1表示最後一個元素
*/
6.jedis.lpop(list);
/**
* 從左邊(首部)出列表
*/
7.jedis.rpop(list);
/**
* 從右邊出列表
*/
8.jedis.lindex(list, index);
/**
* 返回list中index位置的元素
*/
9.jedis.lrange(list, start, end);
/**
* 返回list指定區間[start,end]內的元素
*/
10. lrange(list, 0, -1);
/**
* 返回list內的全部元素
*/
11. jedis.ltrim(list, start, end);
/**
* 讓list只保留指定區間[start,end]內的元素,不在指定區間內的元素都將被刪除
*/
12. jedis.lrem(list, count, value);//返回刪除了多少個元素
/**
* 刪除list中所有與value相等的元素
* 注意:
* count
* ==0 :刪除表中所有與value相等的元素
* >0:從表頭開始向表尾搜尋,移除count個與value相等的元素
* <0:從表尾開始向表頭搜尋,移除count個與value相等的元素
*/
13.lremove(list, 0, value);
/**
* 刪除list中所有與value相等的元素
*/
14.jedis.llen(list);
/**
* 返回list中共有多少個元素
*/
set無序集合工具類
注意:
-
元素在set中的存放順序為:與插入set的先後書順序無關(即無序)
-
不允許存放重複元素
-
對於set而言,Jedis有交集、差集、並集運算,可是ShardJedis沒有
1.jedis.sadd(set, values);
/*
* 對比:
* lpush(String key, String... strings);
* 返回push之後的list中包含的元素個數
*
* sadd(String key, String... members)
* 1:新增元素成功
* 0:set中已經有要新增的元素了
*/
2.jedis.smembers(set)
/**
* 獲取set集合中的所有快取
* @param set
*/
3. jedis.srem(set, values)
/**
* 刪除快取
* @param set
* @param values
*/
4.jedis.sismember(set, value);
/**
* set集合是否包含value
* @param set
*/
5.jedis.scard(set);
/**
* 返回set集合的元素個數
* @param set
*/
Sorted Set(有序集合工具類)
/**
* sorted set快取操作類
* 1、有序集合,最後的順序是按照score從小到大的順序排列
* 2、元素不能重複
* 3、沒有從set中獲取指定value的運算
*/
1.jedis.zadd(String sortedSet,double score, String value);
/**
* 新增快取(一個)
* @param sortedSet 新增入的集合
* @param score 權重
* @param value 值
*/
2.jedis.zadd(String sortedSet,Map<String, Double> value2score);
/**
* 新增快取(一次可新增多個)
* @param sortedSet 新增入的集合
* @param value2score 加入集合的元素集
*/
/***************************獲取快取*****************************/
3.jedis.zrange(sortedSet,long start, long end);
/**
* 返回sortedSet內[start,end]索引的元素set
* 1、在sortedSet中,元素是按照score從小到大排列的,
* 此方法從前向後獲取元素(即按元素的score從小到大排列)
*/
4.zrange(sortedSet, 0, -1);
/**
* 返回sortedSet內所有元素,元素按照score從小到大排列
*/
5.jedis.zrevrange(sortedSet,long start, long end);
/**
* 返回sortedSet集合[start, end]中的元素
* 1、此方法相當於從後向前取元素,即元素從大到小排列
* 或者相當於將sortedSet從大到小排列,然後從前向後去元素
*/
6.zrevrange(sortedSet, 0, -1);
/**
* 返回sortedSet內所有元素,元素按照score從大到小排列
*/
7.jedis.zrangeByScore(String sortedSet, double minScore, double maxScore);
/**
* 獲取sortedSet內[minScore, maxScore]的元素
*/
8. jedis.zrem(String sortedSet, String... values);
/**
* 刪除多個快取
* @param sortedSet
* @param values
*/
9. jedis.zremrangeByRank(String sortedSet, long start, long end);
/**
* 刪除指定範圍(按照索引,包前包後)的快取
*/
10. jedis.zremrangeByScore(String sortedSet, double minScore, double maxScore);
/**
* 刪除指定範圍(按照分數,包前包後)的快取
*/
11.jedis.zcard(String sortedSet);
/**
* 獲取集合sortedSet的長度
*/
12.edis.zscore(sortedSet, value);
/**
* 獲取sortedSet中的value的權重score
*/
13. jedis.zincrby(String sortedSet,double score, String value);
/**
* 為sortedSet中的value的權重加上增量score
*/
Hash(hash工具類)
1.jedis.hset(String map, String key, String value);
/**
* 新增單個快取key-value到map中
*/
2.jedis.hsetnx(String map, String key, String value);
/**
* 新增單個快取key-value到map中
* 若已經存在於指定key相同的key,那麼就不操作
*/
3. jedis.hmset(String map, Map<String, String> key2value);
/**
* 在map中新增key2value的map,即一次性新增多條快取
* @param map
* @param key2value
*/
4.jedis.hkeys(String map);//返回型別Set<String>
/**
* 獲取map中key的集合
* @param set
*/
5.jedis.hvals(String map)//返回型別List<String>
/**
* 獲取map中的所有key的value
*/
6.jedis.hmget(String map, String... keys) //返回型別List<String>
/**
* 從map中獲取多個key的value,並放在List集合中
*/
7.jedis.hgetAll(String map);//返回型別Map<String, String>
/**
* 從map中獲取全部的快取key-value對
*/
8.jedis.hget(String map, String key);// 返回型別String
/**
* 從map中獲取相應key的快取value
*/
9. jedis.hdel(String map, String... keys);