Java客戶端 Jedis
Jedis 是一款Java操作redis數據庫的工具;其使用非常簡單
- 使用步驟
- 下載jedis的jar包
1.commons-pool2-2.3.jar
2.jedis-2.7.0.jar - 使用
使用時只需要將上述兩個jar包導入工程中的WEB-INF下的lib目錄中,即可
jedis工程目錄結構如圖所示
- 下載jedis的jar包
Jedis的基本使用如下所示:
// Jedis快速入門
@Test
public void test1(){
// 1.獲取連接
// Jedis jedis = new Jedis("localhost",6379);
// 若空參,則默認連接的是本機的6379端口redis服務器
Jedis jedis = new Jedis();
// 2.操作
jedis.set("username","zhangsan ");
// 3.關閉連接
jedis.close();
}
可以發現,jedis的使用與直接操作redis的命令十分相似。接下來便針對redis的五種結構類型進行操作練習
首先回顧redis的五種類型參數及其操作命令
1. 字符串型 string
set
get
2. 哈希類型 hash
hset
hget / hgetall
3. 列表類型 list
lpush / rpush
lpop / rpop
lrange
4. 集合類型 set
sadd
smembers
5. 有序集合類型 sortedset
zadd
zrange
然後對每種類型進行Java語言的測試操作
// 測試字符串類型的redis
@Test
public void test2(){
// 1.獲取連接
Jedis jedis = new Jedis();
// 2.操作
jedis.set("password","123");
String password = jedis.get("password");
System.out.println(password);
// 可以使用setex()方法存儲有時效的數據
// 可以將activeCode,nihao_hehe存入redis服務器,20後會自動被刪除
jedis.setex("activeCode",20,"nihao_hehe");
// 3.關閉連接
jedis.close();
}
// 測試哈希類型的redis
@Test
public void test3(){
// 1.獲取連接
Jedis jedis = new Jedis();
// 2.操作
jedis.hset("myset","name","wangwu");
jedis.hset("myset","age","23");
jedis.hset("myset","gender","man");
String name = jedis.hget("myset", "name");
System.out.println(name);
Map<String, String> myset = jedis.hgetAll("myset");
// 打印集合keyset方式
Set<String> keyset = myset.keySet();
for (String key:keyset){
String value = myset.get(key);
System.out.println(value);
}
// 3.關閉連接
jedis.close();
}
// 測試列表類型的redis
@Test
public void test4(){
// 1.獲取連接
Jedis jedis = new Jedis();
// 2.操作
jedis.lpush("list","a");
jedis.lpush("list","f");
jedis.rpush("list","e");
jedis.rpush("list","e","b","c");
List<String> list = jedis.lrange("list", 0, -1);
System.out.println(list);
// 3.關閉連接
jedis.close();
}
// 測試集合類型的redis
@Test
public void test5(){
// 1.獲取連接
Jedis jedis = new Jedis();
// 2.操作
jedis.sadd("set","username","zhangsan");
jedis.sadd("set","password","123");
jedis.sadd("set","java","php","c#");
Set<String> set = jedis.smembers("set");
System.out.println(set);
// 3.關閉連接
jedis.close();
}
// 測試有序集合類型的redis
@Test
public void test6(){
// 1.獲取連接
Jedis jedis = new Jedis();
// 2.操作
jedis.zadd("sorted",9,"張三");
jedis.zadd("sorted",3,"李四");
jedis.zadd("sorted",10,"王五");
Set<String> sorted = jedis.zrange("sorted", 0, -1);
System.out.println(sorted);
// 3.關閉連接
jedis.close();
}
Jedis連接池 JedisPool
Jedis對象中自帶有Jedis連接池,叫做JedisPool;我們可以從連接池中獲取客戶端的連接,這樣就可以對連接進行更好的複用和管理
- 如何使用?
- 創建JedisPool連接池對象
- 調用方法getResource()方法獲取Jedis連接
- 使用Jedis連接,使用方法與上述一樣
- 關閉Jedis連接(歸還到連接池中)
一般在使用時,還需要創建一個連接池對象,使用該對象的方法進行一些配置,然後再作爲參數傳遞給JedisPool
// Jedis連接池的使用 JedisPool
@Test
public void test7(){
// 0.創建配置對象
JedisPoolConfig config = new JedisPoolConfig();
config.setMaxTotal(50);
config.setMaxIdle(10);
// 1.創建連接池對象
JedisPool jedisPool = new JedisPool(config,"localhost",6379);
// 2.獲取連接
Jedis jedis = jedisPool.getResource();
// 3.使用Jedis
jedis.set("wewe","wenwen");
String wewe = jedis.get("wewe");
System.out.println(wewe);
// 4.關閉(歸還到連接池中)
jedis.close();
}
由於含有配置,上述編寫方式耦合度較高,一般會將Jedis的配置單獨保存,所以一般還需要另外抽取一個JedisPoolUtils工具類,該工具類用來提供創建Jedis連接對象,且創建的該對象已經進行過配置
首先需要一個jedis配置文件jedis.properties;將其拷貝到工程的src下。
然後可以編寫工具類加載該配置文件,並進行配置
工具類的編寫代碼如下
package com.utils;
import redis.clients.jedis.Jedis;
import redis.clients.jedis.JedisPool;
import redis.clients.jedis.JedisPoolConfig;
import java.io.IOException;
import java.io.InputStream;
import java.util.Properties;
/**
* JedisPool的工具類
* 加載配置文件,進行參數配置
* 提供獲取連接的方法
*/
public class JedisPoolUtils {
private static JedisPool jedisPool;
/**
* 加載配置文件,進行參數配置
*/
static{
// 讀取配置文件
InputStream is = JedisPoolUtils.class.getClassLoader().getResourceAsStream("jedis.properties");
// 通過Properties對象加載
Properties pro = new Properties();
try {
pro.load(is);
} catch (IOException e) {
e.printStackTrace();
}
// 獲取配置文件中的數據,將其配置到JedisPoolConfig中
JedisPoolConfig config = new JedisPoolConfig();
config.setMaxTotal(Integer.parseInt(pro.getProperty("maxTotal")));
config.setMaxIdle(Integer.parseInt(pro.getProperty("maxIdle")));
//初始化JedisPool
jedisPool = new JedisPool(config,pro.getProperty("host"),Integer.parseInt(pro.getProperty("port")));
}
/**
* 獲取Jedis連接的方法
*/
public static Jedis getJedis(){
return jedisPool.getResource();
}
}
編寫好工具類之後,便可以十分簡單的使用Jedis了
// JedisPoolUtils的使用
@Test
public void test8(){
// 使用JedisPoolUtils創建連接對象
Jedis jedis = JedisPoolUtils.getJedis();
// 使用Jedis
jedis.set("hello","nihao");
// 歸還連接
jedis.close();
}