1. 程式人生 > >Redis叢集 Java客戶端Jedis的使用

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);