Java實現Redis的字串(String)命令
阿新 • • 發佈:2019-02-20
下面測試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(); } }