1. 程式人生 > >7.jedis操作redis

7.jedis操作redis

jedis操作redis

Author:SimpleWu

Jedis介紹

Jedis是Redis官方推薦的的Java客戶端開發包。

官方:https://github.com/xetorthio/jedis

使用

匯入依賴:

<dependencies>
  <!-- redis -->
  <dependency>
    <groupId>redis.clients</groupId>
    <artifactId>jedis</artifactId>
    <version>2.9.0</version>
  </dependency>
</dependencies>

使用jedis連結redis非常簡單:

//Jedis jedis = new Jedis(host, port)
Jedis jedis = new Jedis("127.0.0.1", 6379);
System.out.println("如果是pong爆炸就連結成功 :" + jedis.ping());

如果redis設定了密碼必須要授權:

jedis.auth("password");  //如果設定密碼,要授權
key鍵api
命令 描述
DEL key [key ...] 刪除指定的一批keys,如果刪除中的某些key不存在,則直接忽略。
DUMP key 序列化給定 key ,並返回被序列化的值。
EXISTS key [key ...] 返回key是否存在。1表示存在,0表示不存在。
EXPIRE key seconds 設定key的過期時間,超過時間後,將會自動刪除該key。
EXPIREAT key timestamp EXPIREAT 的作用和 EXPIRE類似,都用於為 key 設定生存時間。不同在於 EXPIREAT 命令接受的時間引數是 UNIX 時間戳 Unix timestamp 。
KEYS pattern 查詢所有符合給定模式pattern(正則表示式)的 key 。
MOVE key db 將當前資料庫的 key 移動到給定的資料庫 db 當中。
TTL key 返回key剩餘的過期時間。
TYPE key 返回key所儲存的value的資料結構型別,它可以返回string, list, set, zset 和 hash等不同的型別。
String鍵api
命令 描述
DEL key [key ...] 刪除指定的一批keys,如果刪除中的某些key不存在,則直接忽略。
DUMP key 序列化給定 key ,並返回被序列化的值。
EXISTS key [key ...] 返回key是否存在。1表示存在,0表示不存在。
EXPIRE key seconds 設定key的過期時間,超過時間後,將會自動刪除該key。
EXPIREAT key timestamp EXPIREAT 的作用和 EXPIRE類似,都用於為 key 設定生存時間。不同在於 EXPIREAT 命令接受的時間引數是 UNIX 時間戳 Unix timestamp 。
KEYS pattern 查詢所有符合給定模式pattern(正則表示式)的 key 。
MOVE key db 將當前資料庫的 key 移動到給定的資料庫 db 當中。
TTL key 返回key剩餘的過期時間。
TYPE key 返回key所儲存的value的資料結構型別,它可以返回string, list, set, zset 和 hash等不同的型別。
Hash雜湊api
指令 描述
HSET key field value 將雜湊表 key 中的欄位 field 的值設為 value 。
HSET key field value 將雜湊表 key 中的欄位 field 的值設為 value 。
HGET key field 獲取儲存在雜湊表中指定欄位的值。
HMSET key field1 value1 [field2 value2 ] 同時將多個 field-value (域-值)對設定到雜湊表 key 中。
HMGET key field1 [field2] 獲取所有給定欄位的值
HGETALL key 獲取在雜湊表中指定 key 的所有欄位和值
HDEL key field1 [field2] 刪除一個或多個雜湊表字段
HEXISTS key field 檢視雜湊表 key 中,指定的欄位是否存在
HKEYS key 獲取所有雜湊表中的欄位
HLEN key 獲取雜湊表中欄位的數量
HSETNX key field value 只有在欄位 field 不存在時,設定雜湊表字段的值
HVALS key 獲取雜湊表中所有值
@Test
    public void test2(){
        Map<String, String> map = new HashMap<>();
        map.put("name", "SimpleWu");
        map.put("email", "[email protected]");
        //同時將多個field-value對設定到雜湊表key中
        jedis.hmset("info", map);
        //獲取所有給定欄位的值
        List<String> list = jedis.hmget("info", "email");
        for (String string : list) {
            System.out.println(string);
        }
        System.out.println("獲取數量:" + jedis.hlen("info"));
        jedis.hdel("info", "name");
        System.out.println("獲取數量:" + jedis.hlen("info"));
    }
list集合api
指令 描述
LPUSH key value1 [value2] 將一個或多個值插入到列表頭部
RPUSH key value1 [value2] 將一個或多個值插入到列表尾部
LRANGE key start stop 獲取列表指定範圍內的元素
LPOP key 移出並獲取列表的第一個元素
RPOP key 移除並獲取最後一個元素
LINDEX key index 通過索引獲取列表中的元素
LLEN key 獲取列表長度
LTRIM key start stop 對一個列表進行修剪(trim),就是說,讓列表只保留指定區間內的元素,不在指定區間之內的元素都將被刪除
LREM key 移除列表元素
LSET key index value 通過索引設定列表元素的值
LINSERT key BEFORE|AFTER pivot value 在列表的元素前或者後插入元素
@Test
    public void test3(){
        //將一個或多個值插入到列表頭部
        jedis.lpush("list", new String[]{"list1","list2","list3"});
        //通過索引獲取列表中的元素
        System.out.println(jedis.lindex("list",1));
        //獲取列表指定範圍內的元素
        List<String> list = jedis.lrange("list", 0, 1);
        for (String string : list) {
            System.out.println(string);
        }
    }
Set集合的API
指令 描述
SADD key member1 [member2] 向集合新增一個或多個成員
SCARD key 獲取集合的成員數
SMEMBERS key 返回集合中的所有成員
SISMEMBER key member 判斷 member 元素是否是集合 key 的成員
SREM key member1 [member2] 移除集合中一個或多個成員
SRANDMEMBER key [count] 返回集合中一個或多個隨機數
SPOP key 移除並返回集合中的一個隨機元素
SMOVE source destination member 將 member 元素從 source 集合移動到 destination 集合
指令 描述
SDIFF key1 [key2] 返回給定所有集合的差集,在第一個set裡面而不在第二個set裡面的項。
SDIFFSTORE destination key1 [key2] 返回給定所有集合的差集並存儲在 destination 中
SINTER key1 [key2] 返回給定所有集合的交集,在第一個個set裡面也在第二個set裡面。
SINTERSTORE destination key1 [key2] 返回給定所有集合的交集並存儲在 destination 中
SUNION key1 [key2] 返回所有給定集合的並集,將第一個set裡面和第二個set裡面的元素去重併合並。
SUNIONSTORE destination key1 [key2] 所有給定集合的並集儲存在 destination 集合中
SSCAN key cursor [MATCH pattern][COUNT count] 迭代集合中的元素
Zset集合的API
指令 描述
ZADD key score1 member1 [score2 member2] 向有序集合新增一個或多個成員,或者更新已存在成員的分數
ZRANGE key start stop [WITHSCORES] 通過索引區間返回有序集合成指定區間內的成員
ZRANGEBYSCORE key min max [WITHSCORES][LIMIT] 通過分數返回有序集合指定區間內的成員
ZREM key member [member ...] 移除有序集合中的一個或多個成員
ZREMRANGEBYLEX key min max 移除有序集合中給定的字典區間的所有成員
ZCARD key 獲取有序集合的成員數
ZCOUNT key min max 計算在有序集合中指定區間分數的成員數
ZREVRANK key member 返回有序集合中指定成員的排名,有序整合員按分數值遞減(從大到小)排序
ZSCORE key member 返回有序集中,成員的分數值
ZREVRANGE key start stop [WITHSCORES] 返回有序集中指定區間內的成員,通過索引,分數從高到底
ZREVRANGEBYSCORE key max min [WITHSCORES] 返回有序集中指定分數區間內的成員,分數從高到低排序
ZSCAN key cursor [MATCH pattern][COUNT count] 迭代有序集合中的元素(包括元素成員和元素分值)
Jedis的事務
指令 描述
DISCARD 取消事務,放棄執行事務內所有命令
EXEC 執行所有事務塊內的命令。
MULTI 標記一個事務塊的開始
UNWATCCH 取消WATCH命令對所有key的監視。
WATCH key[key...] 監視一個(或多個)key,如果在事務執行之前這個(或這些)key被其他命令所改動,那麼事務將被打斷。
@Test
    public void test4(){
        //開啟事務
        Transaction tx = jedis.multi();
        //新增指令到佇列中
        tx.set("name", "SimpleWu");
        tx.set("email", "[email protected]");
        //執行指令
        List<Object> execs = tx.exec();
        for (Object object : execs) {
            System.out.println(object);
        }
        //取消指令
        //String discard = tx.discard();
        //System.out.println(discard);
        System.out.println(jedis.get("name"));
    }
Jedis的連線池
@Test
public void test5(){
  JedisPoolConfig poolConfig = new JedisPoolConfig();
  // 最大空閒連線數, 預設8個
  poolConfig.setMaxIdle(10);
  // 最小空閒連線數, 預設0
  poolConfig.setMinIdle(0);
  // 最大連線數, 預設8個
  poolConfig.setMaxTotal(100);
  // 獲取連線時的最大等待毫秒數(如果設定為阻塞時BlockWhenExhausted),
  // 如果超時就拋異常,小於零:阻塞不確定的時間,
  // 預設-1
  poolConfig.setMaxWaitMillis(-1);
  // 在獲取連線的時候檢查有效性, 預設false
  poolConfig.setTestOnBorrow(false);
}