Redis學習之Jedis的基本使用

2022-07-04 14:02:20
本篇文章給大家帶來了關於的相關知識,其中主要整理了Jedis基本使用的相關問題,包括了Jedis基本操作、Jedis連線池的使用等等內容,下面一起來看一下,希望對大家有幫助。

推薦學習:

1.Jedis的介紹

Jedis = Java + Redis

Redis不僅可以使用命令來操作,現在基本上主流的語言都有API支援,比如Java、C#、C++、PHP、Node.js、Go等。在官方網站裡列一些Java的使用者端,有Jedis、Redisson、Jredis、JDBC-Redis等其中官方推薦使用Jedis和Redisson。

使用Jedis操作redis需要匯入jar包如下:

2.Jedis基本操作

2.1Jedis物件常用API

注:每個方法就是redis中的命令名,方法的引數就是命令的引數

方法

功能

new Jedis(host, port)

建立Jedis的連線,引數:主機名,埠號6379

set(key,value)

新增一個字串的鍵和值

get(key)

得到指定鍵的值

del(key)

刪除指定鍵和值

hset(key,field,value)

新增一個hash型別的鍵-欄位-值

hget(key,field)

通過hash鍵-欄位得到它的值

lpush(key,values)

從左邊新增一個list型別的鍵和元素

lpop(key)

從左邊彈出一個元素

rpop(key)

從右邊彈出一個元素

close()

關閉連線

2.2Jedis的基本操作

操作步驟:

建立Jedis物件,指定伺服器地址和埠號

向伺服器寫入

set字串型別的資料,person=張三

lpush新增list型別的資料,cities=珠海,深圳,廣州

從伺服器中讀取上面的資料列印輸出

get得到字串的值

lrange得到list所有的列表元素

關閉Jedis物件,釋放資源

通過使用者端檢視資料庫中是否有資料

控制檯輸出:

資料庫中

程式碼:

package com.itheima.jedis;

import redis.clients.jedis.Jedis;

import java.util.List;

/**
 * 使用Jedis向redis中新增string和list,讀取它們的值
 */
public class Demo1 {

    public static void main(String[] args) {
        //建立Jedis連線物件
        Jedis jedis = new Jedis("localhost", 6379);
        //新增string型別
        jedis.set("person", "張三");
        //新增list型別
        jedis.lpush("cities", "廣州","上海","東莞");
        //讀取string型別
        String person = jedis.get("person");
        //讀取list型別
        List<String> cities = jedis.lrange("cities", 0, -1);
        //輸出到控制器上
        System.out.println("person:" + person);
        System.out.println("cities:" + cities);
        //關閉連線物件
        jedis.close();
    }

}

3.Jedis連線池的使用

3.1Jedis連線池的基本概念

jedis連線資源的建立與銷燬是很消耗程式效能,所以jedis為我們提供了jedis的連線池技術,jedis

連線池在建立時初始化一些連線物件儲存到連線池中,使用jedis連線資源時不需要自己建立jedis對

象,而是從連線池中獲取一個資源進行redis的操作。使用完畢後,不需要銷燬該jedis連線資源,

而是將該資源歸還給連線池,供其他請求使用。

3.2Jedis連線池API

JedisPoolConfig設定類

功能說明

JedisPoolConfig()

建立一個設定物件,使用無參構造方法就可以了

void setMaxTotal()

設定連線池最大的連線數

void setMaxWaitMillis()

設定得到連線物件Jedis最長等待時間

JedisPool連線池類

說明

JedisPool(設定物件,伺服器名,埠號)

建立連線池

引數1:上面的設定物件,引數2:伺服器名,引數3:6379

Jedis getResource()

從連線池中得到一個Jedis連線物件

void close()

連線池關閉方法,通常不關閉連線池

3.3JedisPool的基本使用

需求:

使用連線池優化jedis操作

開發步驟

建立連線池設定物件,設定最大連線數10,設定使用者最大等待時間2000毫秒

通過設定物件做為引數,建立連線池物件

從連線池裡面獲取jedis連線物件,執行redis命令。

執行redis命令sadd寫入set集合型別的資料:students=白骨精,孫悟空,豬八戒

執行redis命令smembers讀取集合中的資料

輸出讀取的資料

關閉連線物件(通常連線池不關閉)

執行效果

執行程式碼

package com.itheima.jedis;

import redis.clients.jedis.Jedis;
import redis.clients.jedis.JedisPool;
import redis.clients.jedis.JedisPoolConfig;

import java.util.Set;

/**
 * 建立Jedis連線池
 */
public class Demo2 {

    public static void main(String[] args) {
        //1)	建立連線池設定物件,設定最大連線數10,設定使用者最大等待時間2000毫秒
        JedisPoolConfig config = new JedisPoolConfig();
        config.setMaxTotal(10);
        config.setMaxWaitMillis(2000);
        //2)	通過設定物件做為引數,建立連線池物件
        JedisPool pool = new JedisPool(config, "localhost", 6379);
        //3)	從連線池裡面獲取jedis連線物件,執行redis命令。
        Jedis jedis = pool.getResource();
        //4)	執行redis命令sadd寫入set集合型別的資料:students=白骨精,孫悟空,豬八戒
        jedis.sadd("students", "白骨精", "孫悟空", "豬八戒");
        //5)	執行redis命令smembers讀取集合中的資料
        Set<String> students = jedis.smembers("students");
        //6)	輸出讀取的資料
        System.out.println(students);
        //7)	關閉連線物件(通常連線池不關閉)
        jedis.close();
        pool.close();
    }
}

4.案例:編寫jedis連線池工具類

4.1相應API的學習

java.util.ResourceBundle類是專門用於:讀取類路徑下Properties組態檔的類

java.util.ResourceBundle類

功能

static ResourceBundle getBundle("設定基名")

通過自己的靜態方法建立ResourceBundle物件

引數:放在src下.properties檔案。引數中不用寫擴充套件名,只要有主名就可以了

String getString("鍵名")

通過鍵得到值

案例:得到druid.properties中的url屬性

package com.itheima.jedis;

import java.util.ResourceBundle;

/**
 * 讀取屬性檔案
 */
public class Demo3 {

    public static void main(String[] args) {
        //得到資源繫結物件
        ResourceBundle bundle = ResourceBundle.getBundle("druid");
        System.out.println(bundle.getString("url"));
    }

}

4.2連線池工具類的實現

需求:

實現連線池工具類,通過工具類得到Jedis連線物件,設定引數寫在屬性檔案中

呼叫工具類,對Redis資料庫進行操作

執行效果:

實現步驟:

在src目錄下建立連線池的工具類: jedis.properties

建立靜態成員變數JedisPool物件

在靜態程式碼塊中,讀取src下的組態檔,得到ResourceBundle物件

得到上面的四個引數,其中host是字串型別,其它引數要轉成整數型別

範例化設定物件,範例化連線池物件

編寫靜態方法getJedis()返回Jedis物件

建立hash物件:鍵employee,新增欄位名:name,值:NewBoy;欄位名: salary,值:3000

使用hgetall讀取hash物件輸出

關閉jedis物件

jedis.properties組態檔

# 主機名
host=localhost
# 埠號
port=6379
# 最大連線數
maxTotal=20
# 最長等待時間
maxWaitMillis=3000

JedisUtils.java

package com.itheima.utils;

import redis.clients.jedis.Jedis;
import redis.clients.jedis.JedisPool;
import redis.clients.jedis.JedisPoolConfig;

import java.util.ResourceBundle;

/**
 * 連線池工具類
 */
public class JedisUtils {

    //建立一個連線物件
    private static JedisPool pool;

    static {
        //建立連線池的設定物件
        JedisPoolConfig config = new JedisPoolConfig();
        //設定最大連線數和最長等待時間
        ResourceBundle bundle = ResourceBundle.getBundle("jedis");
        //得到組態檔中的屬性值
        String host = bundle.getString("host");
        int port = Integer.parseInt(bundle.getString("port"));
        int maxTotal = Integer.parseInt(bundle.getString("maxTotal"));
        int maxWaitMillis = Integer.parseInt(bundle.getString("maxWaitMillis"));
        //設定設定物件的引數
        config.setMaxTotal(maxTotal);
        config.setMaxWaitMillis(maxWaitMillis);
        //建立連線池物件
        pool = new JedisPool(config, host, port);
    }

    /**
     * 得到redis連線物件
     * @return
     */
    public static Jedis getJedis() {
        return pool.getResource();
    }

}

使用工具類:

package com.itheima.jedis;

import com.itheima.utils.JedisUtils;
import redis.clients.jedis.Jedis;

import java.util.Map;

/**
 * 使用工具類
 */
public class Demo4 {

    public static void main(String[] args) {
        //從工具類中得到Jedis物件
        Jedis jedis = JedisUtils.getJedis();
        //建立hash物件:鍵employee,新增欄位名:name,值:NewBoy;欄位名: salary,值:3000
        jedis.hset("employee", "name","NewBoy");
        jedis.hset("employee", "salary","3000");
        //使用hgetall讀取hash物件輸出
        Map<String, String> employee = jedis.hgetAll("employee");
        System.out.println(employee);
        //關閉jedis物件
        jedis.close();
    }

}

推薦學習:

以上就是Redis學習之Jedis的基本使用的詳細內容,更多請關注TW511.COM其它相關文章!