在日常的工作學習中需要操作Redis,JavaApi操作Redis是一個必不可少的技術那麼我們直接進入正題
目錄
1.創建maven項目導入相應的jar包
<dependencies>
<dependency>
<groupId>redis.clients</groupId>
<artifactId>jedis</artifactId>
<version>2.9.0</version>
</dependency>
<dependency>
<groupId>junit</groupId>
<artifactId>junit</artifactId>
<version>4.12</version>
<scope>test</scope>
</dependency>
<dependency>
<groupId>org.testng</groupId>
<artifactId>testng</artifactId>
<version>6.14.3</version>
<scope>test</scope>
</dependency>
<dependency>
<groupId>org.testng</groupId>
<artifactId>testng</artifactId>
<version>7.1.0</version>
<scope>compile</scope>
</dependency>
</dependencies>
<build>
<plugins>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-compiler-plugin</artifactId>
<version>3.0</version>
<configuration>
<source>1.8</source>
<target>1.8</target>
<encoding>UTF-8</encoding>
<!-- <verbal>true</verbal>-->
</configuration>
</plugin>
</plugins>
</build>
2.創建初始化方法
// 實例連接池
private JedisPool pool;
/**
* 初始化操作
*/
@BeforeTest
public void init() {
pool = new JedisPool("node01", 6379);
}
3.操作Redis字符串類型
/**
* 對字符串的操作
*/
// @Test
public void str() {
// 創建連接對象
Jedis resource = pool.getResource();
// 添加
resource.set("str01", "張三");
// 查詢
String str01 = resource.get("str01");
System.out.println("查詢str01的結果\t" + str01);
//添加多個
resource.mset("str02", "李四", "str03", "1");
// 查詢多個
List<String> str02 = resource.mget("str02", "str03");
System.out.println("查詢str01 str02的結果\t" + str02);
// 設置過期時間
resource.setex("hello", 10, "hello");
// key 存在是添加 成功返回1 失敗返回 0
System.out.println(resource.setnx("hello", "hello"));
// 查詢部分 startOffset開始的索引 endOffset 結束的索引 hell
System.out.println("查詢hello\t" + resource.getrange("hello", 0, 3));
//查詢長讀 輸入key
System.out.println("查詢hello的長度\t" + resource.strlen("hello"));
// 追加
resource.append("hello", "append");
// 替換 key :操作的的key offset:從索引幾開始替換 value:替換的內容
resource.setrange("hello", 0, "AAA");
System.out.println("查詢hello\t" + resource.get("hello"));
// 累加1
resource.incr("str03");
System.out.println("str03加1的結果\t" + resource.get("str03"));
// 設置累加N
resource.incrBy("str03", 20);
System.out.println("查詢str03加20後的結果\t" + resource.get("str03"));
// 減1
resource.decr("str03");
System.out.println("查詢str03減1的結果\t" + resource.get("str03"));
// 減N
resource.decrBy("str03", 10);
System.out.println("查詢str03減10的結果\t" + resource.get("str03"));
}
4.操作Redis Hash類型
/**
* 對 hash操作
*/
// @Test
public void hash() {
// 獲取連接對象
Jedis resource = pool.getResource();
// 添加數據
resource.hset("hkey01", "name1", "李四");
resource.hset("hkey02", "name2", "張三");
//不存在是添加
resource.hsetnx("hkey02", "name2", "趙劉");
// 一次性設置多個值
Map<String, String> hash = new HashMap<>();
hash.put("name", "zhangsan");
hash.put("age", "18");
hash.put("sex", "1");
resource.hmset("hkey03", hash);
// 查詢hkey02
System.out.println("查詢hkey02 name2\t" + resource.hget("hkey02", "name2"));
// 查詢是否存在 hkey02中的name2 存在返回true
System.out.println("判斷hkey02中的name2是否存在\t" + resource.hexists("hkey02", "name2"));
// 查詢 hkey03 下的所有值
System.out.println("hkey03的所有的值\t" + resource.hgetAll("hkey03"));
// 查詢 hkey03的所有字段
System.out.println("hkey03的字段\t" + resource.hkeys("hkey03"));
// 查詢hkey03的數量
System.out.println("查詢hkey03的數量\t" + resource.hlen("hkey03"));
// 查詢hkey03的多個值 name age
System.out.println("查詢hkey03的多個值\t" + resource.hmget("hkey03", "name", "age"));
// 刪除數據
resource.hdel("hkey03", "sex");
// 累加(1-N) hkey03中的age 10
resource.hincrBy("hkey03", "age", 10);
System.out.println("hkey03中的age結果\t" + resource.hget("hkey03", "age"));
}
5.操作Redis list類型
/**
* 對list 操作
*/
// @Test
public void list() {
// 獲取連接對象
Jedis resource = pool.getResource();
// 可以添加一個或多個
resource.lpush("listkey", "zhangsan", "lisi");
// 插入頭部
resource.lpushx("listkey", "wangwu");
//右邊插入
resource.rpush("listkey", "AA", "BB");
// 插入尾部
resource.rpushx("listkey", "CC");
// 插入某個數據之前
resource.linsert("listkey", BinaryClient.LIST_POSITION.BEFORE, "AA", "aa");
// 插入某個數據之後
resource.linsert("listkey", BinaryClient.LIST_POSITION.AFTER, "CC", "DD");
// 查詢listkeyd的所有數據 -1 默認查詢所有數據
System.out.println("查詢listkey的所有數據\t" + resource.lrange("listkey", 0, -1));
// 通過索引查詢
System.out.println("通過索引查詢\t" + resource.lindex("listkey", 0));
// 查詢listkey的長度
System.out.println("查詢listkey的數據長度\t" + resource.llen("listkey"));
// 數據修減 保留 0 到 3 的索引
resource.ltrim("listkey", 0, 3);
System.out.println("查詢listkey修減後的數據\t" + resource.lrange("listkey", 0, -1));
// 移除listkey的第一個數據
resource.lpop("listkey");
//移除listkey的最後一個數據
resource.rpop("listkey");
System.out.println("查詢listke移除第一個和最後一個的數據\t" + resource.lrange("listkey", 0, -1));
// 移除最後一給數據保存到另一個列表
resource.rpoplpush("listkey", "listkey");
System.out.println("查詢listkey數據\t" + resource.lrange("listkey", 0, -1));
}
6.操作Redis set類型
/**
* 對set 操作
*/
// @Test
public void set() {
// 獲取連接對象
Jedis resource = pool.getResource();
// 向集合添加一個或多個
resource.sadd("skey1", "zhnangsan", "lisi");
resource.sadd("skey2", "wangwu", "lisi");
// 查詢結合的所有數據
System.out.println("查詢skey1的數據:" + resource.smembers("skey1"));
// 查詢數據總量
System.out.println("查詢skey1的數據總量:" + resource.scard("skey1"));
// 查詢差值
System.out.println("查詢skey1和skey2的差值" + resource.sdiff("skey1", "skey2"));
// 查詢差值寫入到新的集合
resource.sdiffstore("skey3", "skey1", "skey2");
// 查詢交集
System.out.println(resource.sinter("skey1", "skey2"));
// 查詢交集寫入到新的集合
resource.sinterstore("skey4", "skey1", "skey2");
// 查詢某一個數據是否在集合中
System.out.println("查詢zhnangsan是否在skey1\t" + resource.sismember("skey1", "zhnangsan"));
// 返回集合隨機N個數據
System.out.println("返回隨機skey1\t" + resource.srandmember("skey1", 1));
// 查詢並集
System.out.println("查詢skey1與skey2的並集\t" + resource.sunion("skey1", "skey2"));
// 查詢並集寫入到一個新的結合
resource.sunionstore("skey5", "skey1", "skey2");
//將數據在一個集合移動到另一個集合
resource.smove("skey1", "skey2", "zhangsan");
// 移除結果中的某個數據
resource.srem("skey2", "skey2", "zhangsan");
}
7.關閉資源
/**
* 關閉資源
*/
@AfterTest
public void close() {
pool.close();
}
在這裏對Redis JavaApi的操作就結束了,喜歡的話點贊,加個關注