1. 程式人生 > >Java實現Redis的字串(String)命令

Java實現Redis的字串(String)命令

下面測試redis字串型別,註釋裡面的程式碼是linux中redis命令

package com.huadian.String;

import com.huadian.redisUntil.JedisPoolUntil;
import org.junit.After;
import org.junit.Before;
import org.junit.Test;
import redis.clients.jedis.Jedis;

import java.util.List;

public class StringDemo {
    private Jedis jedis = null;
    @Before
    public void before(){
         jedis = JedisPoolUntil.getJedis();
    }

    /**
     * Redis SET 命令用於設定給定 key 的值。如果 key 已經儲存其他值, SET 就覆寫舊值,且無視型別。
     * redis 127.0.0.1:6379> SET KEY_NAME VALUE
     */
    @Test
    public void add(){
        Jedis jedis = JedisPoolUntil.getJedis();
        String set = jedis.set("name", "李四");
        System.out.println(set);
    }

    /**
     * Redis Get 命令用於獲取指定 key 的值。如果 key 不存在,返回 nil 。如果key 儲存的值不是字串型別,返回一個錯誤。
     * redis 127.0.0.1:6379> GET KEY_NAME
     */
    @Test
    public void get(){
        Jedis jedis = JedisPoolUntil.getJedis();
        String set = jedis.get("name");
        System.out.println(set);
    }

    //刪除
    @Test
    public void delete(){
        Jedis jedis = JedisPoolUntil.getJedis();
        Long address= jedis.del("name","age");
        System.out.println(address);
    }

    /**
     * 修改:字串型別實際的值存的數字
     * increase、decrease  自增/減  key
     * incrBy/decrBy增加/減少 一個數 引數key  更新
     * 返回值,兩者都是增加之後的數字
     * 如果這個值不識數,呼叫以上方法會丟擲異常
     *
     * Redis Incrbyfloat 命令為 key 中所儲存的值加上指定的浮點數增量值。

     如果 key 不存在,那麼 INCRBYFLOAT 會先將 key 的值設為 0 ,再執行加法操作。

     redis 127.0.0.1:6379> INCRBYFLOAT KEY_NAME INCR_AMOUNT


     Redis Decr 命令將 key 中儲存的數字值減一。

     如果 key 不存在,那麼 key 的值會先被初始化為 0 ,然後再執行 DECR 操作。

     如果值包含錯誤的型別,或字串型別的值不能表示為數字,那麼返回一個錯誤。

     本操作的值限制在 64 位(bit)有符號數字表示之內。

     redis 127.0.0.1:6379> DECR KEY_NAME


     Redis Decr 命令將 key 中儲存的數字值減一。

     如果 key 不存在,那麼 key 的值會先被初始化為 0 ,然後再執行 DECR 操作。

     如果值包含錯誤的型別,或字串型別的值不能表示為數字,那麼返回一個錯誤。

     本操作的值限制在 64 位(bit)有符號數字表示之內。

     redis 127.0.0.1:6379> DECR KEY_NAME


     Redis Decrby 命令將 key 所儲存的值減去指定的減量值。

     如果 key 不存在,那麼 key 的值會先被初始化為 0 ,然後再執行 DECRBY 操作。

     如果值包含錯誤的型別,或字串型別的值不能表示為數字,那麼返回一個錯誤。

     本操作的值限制在 64 位(bit)有符號數字表示之內。

     redis 127.0.0.1:6379> DECRBY KEY_NAME DECREMENT_AMOUNT
     */
    @Test
    public void modify(){
        Jedis jedis = JedisPoolUntil.getJedis();
        String s = jedis.get("age");
        System.out.println(s);
        jedis.incr("age");
        Long age = jedis.incrBy("age", 20);
        System.out.println(age);
        String s1 = jedis.get("age");

    }

    /**
     * 字元產拼接
     * append key value 拼接在原有字串後面
     * 返回值:long 拼接之後字串的長度
     *
     * Redis Getrange 命令用於獲取儲存在指定 key 中字串的子字串。字串的擷取範圍由 start 和 end 兩個偏移量決定(包括 start 和 end 在內)。
     * redis 127.0.0.1:6379> GETRANGE KEY_NAME start end
     */
    @Test
    public void modify1(){
        Jedis jedis = JedisPoolUntil.getJedis();
        Long append = jedis.append("age", "is not real");
        System.out.println(append);
        String age = jedis.getrange("age", 0, 4);
        System.out.println(age);
    }

    /**
     * Redis Getset 命令用於設定指定 key 的值,並返回 key 舊的值。
     * redis 127.0.0.1:6379> GETSET KEY_NAME VALUE
     */
    @Test
    public void getset(){
        String set = jedis.getSet("age", "is not real");
        System.out.println(set);
        /**
         * Redis Getbit 命令用於對 key 所儲存的字串值,獲取指定偏移量上的位(bit)。
         * redis 127.0.0.1:6379> GETBIT KEY_NAME OFFSET
         */
        Boolean age = jedis.getbit("age",2 );
        System.out.println(age);
        /**
         * Redis Mget 命令返回所有(一個或多個)給定 key 的值。 如果給定的 key 裡面,有某個 key 不存在,那麼這個 key 返回特殊值 nil
         * redis 127.0.0.1:6379> MGET KEY1 KEY2 .. KEYN
         */
        List<String> mget = jedis.mget("age");
        System.out.println(mget);

        /**
         * Redis Setbit 命令用於對 key 所儲存的字串值,設定或清除指定偏移量上的位(bit)。
         * redis 127.0.0.1:6379> Setbit KEY_NAME OFFSET
         */
        Boolean age1 = jedis.setbit("age",0, "is not real");
        System.out.println(age1);

        /**
         * Redis Setex 命令為指定的 key 設定值及其過期時間。如果 key 已經存在, SETEX 命令將會替換舊的值。
         * redis 127.0.0.1:6379> SETEX KEY_NAME TIMEOUT VALUE
         */
        String setex = jedis.setex("age", 60, "not");
        System.out.println(setex);

        /**
         * Redis Setnx(SET if Not eXists) 命令在指定的 key 不存在時,為 key 設定指定的值。
         * redis 127.0.0.1:6379> SETNX KEY_NAME VALUE
         */
        Long age2 = jedis.setnx("age", "ages");
        System.out.println(age2);
    }

    /**
     * Redis Setrange 命令用指定的字串覆蓋給定 key 所儲存的字串值,覆蓋的位置從偏移量 offset 開始。
     * redis 127.0.0.1:6379> SETRANGE KEY_NAME OFFSET VALUE
     */
    @Test
    public void setrange(){
        Long setrange = jedis.setrange("age", 4, "no real");
        System.out.println(setrange);


        /**
         * Redis Strlen 命令用於獲取指定 key 所儲存的字串值的長度。當 key 儲存的不是字串值時,返回一個錯誤。
         * redis 127.0.0.1:6379> STRLEN KEY_NAME
         */
        Long age = jedis.strlen("age");
        System.out.println(age);

        /**
         * Redis Mset 命令用於同時設定一個或多個 key-value 對。
         * redis 127.0.0.1:6379> MSET key1 value1 key2 value2 .. keyN valueN
         */
        String mset = jedis.mset("age", "she is beautiful girl");
        System.out.println(mset);

        /**
         * Redis Msetnx 命令用於所有給定 key 都不存在時,同時設定一個或多個 key-value 對。
         * redis 127.0.0.1:6379> MSETNX key1 value1 key2 value2 .. keyN valueN
         */

        /**
         * Redis Psetex 命令以毫秒為單位設定 key 的生存時間。
         * redis 127.0.0.1:6379> PSETEX key1 EXPIRY_IN_MILLISECONDS value1
         */




    }



    @After
    public void after(){
        Jedis jedis = JedisPoolUntil.getJedis();
    }
}