Redis學習之Jedis的基本使用

本篇文章給大家帶來了關于redis的相關知識,其中主要整理了jedis基本使用的相關問題,包括了jedis基本操作、jedis連接池的使用等等內容,下面一起來看一下,希望對大家有幫助。

Redis學習之Jedis的基本使用

推薦學習:redis

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包如下:

Redis學習之Jedis的基本使用

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對象,釋放資源

通過客戶端查看數據庫中是否有數據

控制臺輸出:

Redis學習之Jedis的基本使用

數據庫中

?Redis學習之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連接池的基本概念

Redis學習之Jedis的基本使用

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讀取集合中的數據

輸出讀取的數據

關閉連接對象(通常連接池不關閉)

運行效果

Redis學習之Jedis的基本使用

執行代碼

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數據庫進行操作

執行效果:

Redis學習之Jedis的基本使用

實現步驟:

在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

? 版權聲明
THE END
喜歡就支持一下吧
點贊12 分享