Jedis操作Redis--String類型

來源:互聯網
上載者:User

標籤:art   計數   返回   cond   gty   等於   選擇性參數   到期   test   

/** * String(字串) * APPEND,BITCOUNT,BITOP,BITFIELD,DECR,DECRBY,GET,GETBIT,GETRANGE,GETSET,INCR,INCRBY,INCRBYFLOAT,MGET,MSET,MSETNX,PSETEX,SET,SETBIT,SETEX,SETNX,SETRANGE,STRLEN */public class StringTypeTest {    private Jedis jedis;    private static final String KEY = "name";    private static final String VALUE = "layman";    @Before    public void setUp() {        JedisShardInfo info = new JedisShardInfo("192.168.133.188", 6379);        this.jedis = new Jedis(info);        jedis.select(0);    }    /**     * SET key value [EX seconds] [PX milliseconds] [NX|XX]     * 將字串值 value 關聯到 key 。     * 如果 key 已經持有其他值, SET 就覆寫舊值,無視類型。     * 對於某個原本帶有存留時間(TTL)的鍵來說, 當 SET 命令成功在這個鍵上執行時, 這個鍵原有的 TTL 將被清除。     * 選擇性參數     * 從 Redis 2.6.12 版本開始, SET 命令的行為可以通過一系列參數來修改:     * EX second :設定鍵的到期時間為 second 秒。 SET key value EX second 效果等同於 SETEX key second value 。     * PX millisecond :設定鍵的到期時間為 millisecond 毫秒。 SET key value PX millisecond 效果等同於 PSETEX key millisecond value 。     * NX :只在鍵不存在時,才對鍵進行設定作業。 SET key value NX 效果等同於 SETNX key value 。     * XX :只在鍵已經存在時,才對鍵進行設定作業。     */    @Test    public void SET() {        //設定不存在key為name時設定其值為layman並在15秒後到期        jedis.set(KEY, VALUE, "NX", "EX", 15);        out(jedis.get(KEY));    }    /**     * MSET key value [key value ...]  MGET key [key ...]返回所有(一個或多個)給定 key 的值。如果給定的key裡面,有某個key不存在,那麼這個key返回特殊值nil 。因此,該命令永不失敗。     * 同時設定一個或多個 key-value 對。     * 如果某個給定 key 已經存在,那麼 MSET 會用新值覆蓋原來的舊值,如果這不是你所希望的效果,請考慮使用 MSETNX 命令:它只會在所有給定 key 都不存在的情況下進行設定作業。     * MSET 是一個原子性(atomic)操作,所有給定 key 都會在同一時間內被設定,某些給定 key 被更新而另一些給定 key 沒有改變的情況,不可能發生。     */    @Test    public void MSET() {        jedis.mset("name", "layman", "age", "24");        out(jedis.mget("name", "age"));    }    /**     * GET key     * 返回 key 所關聯的字串值。     * 如果 key 不存在那麼返回特殊值 nil 。     * 假如 key 儲存的值不是字串類型,返回一個錯誤,因為 GET 只能用於處理字串值。     */    @Test    public void GET() {        out(jedis.get(KEY));    }    /**     * GETSET key value     * 將給定 key 的值設為 value ,並返回 key 的舊值(old value)。     * 當 key 存在但不是字串類型時,返回一個錯誤。     */    @Test    public void GETSET() {        SET();        out(jedis.getSet(KEY, "leo"));        GET();    }    /**     * APPEND key value     * 如果 key 已經存在並且是一個字串, APPEND 命令將 value 追加到 key 原來的值的末尾。     * 如果 key 不存在, APPEND 就簡單地將給定 key 設為 value ,就像執行 SET key value 一樣。     */    @Test    public void APPEND() {        SET();        jedis.append("name", "APPEND");        GET();    }    /**     * SETBIT key offset value     * 對 key 所儲存的字串值,設定或清除指定位移量上的位(bit)。     * 位的設定或清除取決於 value 參數,可以是 0 也可以是 1 。     * 當 key 不存在時,自動產生一個新的字串值。     * 字串會進行伸展(grown)以確保它可以將 value 儲存在指定的位移量上。當字串值進行伸展時,空白位置以 0 填充。     * offset 參數必須大於或等於 0 ,小於 2^32 (bit 映射被限制在 512 MB 之內)。     */    @Test    public void SETBIT() {        jedis.setbit(KEY, 2l, true);        BITCOUNT();    }    /**     * BITCOUNT key [start] [end]     * 計算給定字串中,被設定為 1 的位元位的數量。     * 一般情況下,給定的整個字串都會被進行計數,通過指定額外的 start 或 end 參數,可以讓計數只在特定的位上進行。     * start 和 end 參數的設定和 GETRANGE 命令類似,都可以使用負數值: 比如 -1 表示最後一個位元組, -2 表示倒數第二個位元組,以此類推。     * 不存在的 key 被當成是Null 字元串來處理,因此對一個不存在的 key 進行 BITCOUNT 操作,結果為 0 。     */    @Test    public void BITCOUNT() {        out(jedis.bitcount(KEY));    }    /**     * SETRANGE key offset value     * 用 value 參數覆寫(overwrite)給定 key 所儲存的字串值,從位移量 offset 開始。     * 不存在的 key 當作空白字串處理。     * SETRANGE 命令會確保字串足夠長以便將 value 設定在指定的位移量上,     * 如果給定key原來儲存的字串長度比位移量小(比如字串只有 5 個字元長,但你設定的 offset 是 10 ),     * 那麼原字元和位移量之間的空白將用零位元組(zerobytes, "\x00" )來填充。     */    @Test    public void SETRANGE() {        SET();        jedis.setrange(KEY, 4L, "leo");        GET();        /** 結果         *  layman         *  laymleo         */    }    /**     * GETRANGE key start end     * 返回 key 中字串值的子字串,字串的截取範圍由 start 和 end 兩個位移量決定(包括 start 和 end 在內)。     * 負數位移量表示從字串最後開始計數, -1 表示最後一個字元, -2 表示倒數第二個,以此類推。     */    @Test    public void GETRANGE() {        SET();        out(jedis.getrange(KEY, 2, -3));    }    /**     * 返回 key 所儲存的字串值的長度。     */    @Test    public void STRLEN() {        SET();        out(jedis.strlen(KEY));    }    /**     * INCR key     * 將 key 中儲存的數字值增一。     * 如果 key 不存在,那麼 key 的值會先被初始化為 0 ,然後再執行 INCR 操作。     * 如果值包含錯誤的類型,或字串類型的值不能表示為數字,那麼返回一個錯誤。     */    @Test    public void INCR() {        jedis.incr(KEY);        GET();    }    /**     * INCRBY key increment     INCRBYFLOAT key increment     * 將 key 所儲存的值加上增量 increment 。     * 如果 key 不存在,那麼 key 的值會先被初始化為 0 ,然後再執行 INCRBY 命令。     * 如果值包含錯誤的類型,或字串類型的值不能表示為數字,那麼返回一個錯誤。     */    @Test    public void INCRBY() {        jedis.incrBy(KEY, 24);        GET();        jedis.incrByFloat(KEY, 0.22225);        GET();    }    private void out(Object msg) {        System.out.println(msg);    }}

 

Jedis操作Redis--String類型

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在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.