通過Jedis操作Redis


 

package com.yh;

import org.junit.After;
import org.junit.Before;
import org.junit.Test;
import redis.clients.jedis.Jedis;
import redis.clients.jedis.params.SetParams;

import java.util.HashMap;
import java.util.Map;

public class TestRedis {

    private Jedis jedis;

    @Before
    public void init() {
        //連接本地的 Redis 服務
        jedis = new Jedis("localhost");
        System.out.println("連接成功");
    }

    @Test
    public void testList() { // 有序,鏈表結構
        System.out.println(jedis.lpush("list1", "v1", "v2", "v3", "v4")); // 4 從左邊添加
        System.out.println(jedis.rpush("list2", "v1", "v2", "v3", "v4")); // 4 從右邊添加
        System.out.println(jedis.lrange("list1", 0, -1)); // [v4, v3, v2, v1]
        System.out.println(jedis.lrange("list2", 0, -1)); // [v1, v2, v3, v4]
        System.out.println(jedis.rpop("list1")); // v1 刪除最后一個元素
        System.out.println(jedis.lpop("list2")); // v1 刪除第一個元素
    }

    @Test
    public void testSet() { // 無序,不可重復
        jedis.sadd("set1", "v1", "v2", "v3", "v4");
        System.out.println(jedis.smembers("set1")); // 獲取所有成員
        System.out.println(jedis.sismember("set1", "v1")); // 判斷是否存在

        jedis.sadd("set2", "v1", "v3", "v5", "v7");
        System.out.println(jedis.sdiff("set1", "set2")); // 輸出第一個有,后面沒有的(差集)
        System.out.println(jedis.sinter("set1", "set2")); // 輸出兩個都有的(交集)
        System.out.println(jedis.sunion("set1", "set2")); // 輸出兩個總和(並集)
    }

    @Test
    public void testZSet() { // 有序集合
        Map<String, Double> map = new HashMap<>();
        map.put("k1", 20d);
        map.put("k2", 30d);
        map.put("k3", 15d);
        map.put("k4", 25d);
        System.out.println(jedis.zadd("zset", map)); // 4
        System.out.println(jedis.zrange("zset", 0, -1)); // [k3, k1, k4, k2]
        System.out.println(jedis.zrangeWithScores("zset", 0, -1)); // [[k3,15.0], [k1,20.0], [k4,25.0], [k2,30.0]]
    }

    @Test
    public void testHash(){
        Map<String, String> map = new HashMap<>();
        map.put("k1", "v1");
        map.put("k2", "v2");
        map.put("k3", "v3");
        System.out.println(jedis.hset("hash", "","")); // 4
        System.out.println(jedis.hkeys("hash")); // [k3, k1, k4, k2]
        System.out.println(jedis.hvals("hash")); // [k3, k1, k4, k2]
        System.out.println(jedis.hgetAll("hash")); // [k3, k1, k4, k2]
    }

    @Test
    public void testString() {
        System.out.println(jedis.set("k1", "v1")); // OK
        System.out.println(jedis.get("k1")); // v1
        System.out.println(jedis.del("k1")); // 1
        System.out.println(jedis.append("k1", "v12")); // 3 key不存在時,append相當於set
        System.out.println(jedis.append("k1", "v123")); // 7
        System.out.println(jedis.get("k1")); // v12v123
        System.out.println(jedis.strlen("k1")); // 7
        System.out.println(jedis.mset("k1", "v1", "k2", "v2", "k3", "v3")); // OK 和逐條添加的不同點在於這是原子性操作
        System.out.println(jedis.mget("k1", "k2", "k3")); // [v1,v2,v3]
        System.out.println(jedis.setnx("k1", "v4")); // 0 先判斷key是否存在,存在則不創建
        System.out.println(jedis.setex("k1", 66, "v4")); // OK 增加過期時間(秒)
        System.out.println(jedis.ttl("k1")); // 返回距離過期的剩余時間

        SetParams setParams = new SetParams(); // 相當於設置一個規范,可應用到其他鍵值對
        setParams.ex(100); // 過期時間100s
        setParams.nx(); // 創建鍵值對之前先判斷是否存在,存在則不創建
        System.out.println(jedis.set("k1", "v1", setParams));
    }

    @Test
    public void testKey() {
        System.out.println(jedis.keys("*")); // 查找所有key,參數為正則表達式,不推薦使用
        System.out.println(jedis.exists("k1")); // 判斷key是否存在
        System.out.println(jedis.expire("k1", 60)); // 設值過期時間
        System.out.println(jedis.incr("count")); // 相當於++
        System.out.println(jedis.decr("count")); // 相當於--
        System.out.println(jedis.incrBy("count", 2)); // 相當於+=2
        System.out.println(jedis.decrBy("count", 2)); // 相當於-=2
    }

    @After
    public void close() {
        jedis.close();
    }

}

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM