您好,登錄后才能下訂單哦!
這篇文章主要講解了“Redis之Jedis如何使用”,文中的講解內容簡單清晰,易于學習與理解,下面請大家跟著小編的思路慢慢深入,一起來研究和學習“Redis之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中的命令名,方法的參數就是命令的參數
方法 | 功能 |
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() | 關閉連接 |
操作步驟:
創建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(); } }
jedis連接資源的創建與銷毀是很消耗程序性能,所以jedis為我們提供了jedis的連接池技術,jedis
連接池在創建時初始化一些連接對象存儲到連接池中,使用jedis連接資源時不需要自己創建jedis對
象,而是從連接池中獲取一個資源進行redis的操作。使用完畢后,不需要銷毀該jedis連接資源,
而是將該資源歸還給連接池,供其他請求使用。
JedisPoolConfig配置類 | 功能說明 |
JedisPoolConfig() | 創建一個配置對象,使用無參構造方法就可以了 |
void setMaxTotal() | 設置連接池最大的連接數 |
void setMaxWaitMillis() | 設置得到連接對象Jedis最長等待時間 |
JedisPool連接池類 | 說明 |
JedisPool(配置對象,服務器名,端口號) | 創建連接池 參數1:上面的配置對象,參數2:服務器名,參數3:6379 |
Jedis getResource() | 從連接池中得到一個Jedis連接對象 |
void close() | 連接池關閉方法,通常不關閉連接池 |
需求:
使用連接池優化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(); } }
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")); } }
需求:
實現連接池工具類,通過工具類得到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如何使用”的內容了,經過本文的學習后,相信大家對Redis之Jedis如何使用這一問題有了更深刻的體會,具體使用情況還需要大家實踐驗證。這里是億速云,小編將為大家推送更多相關知識點的文章,歡迎關注!
免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。