jedis set集合 java,使用Jedis操作String、List、Set、Map等常见数据 | zifangsky的个人博客...
Jedis屬于Java連接Redis的一種客戶端。其操作方式跟原生的redis客戶端命令類似。關于redis操作的基本命令可以參考這個文檔:http://www.runoob.com/redis/redis-tutorial.html
注:關于redis單節點以及redis集群的安裝可以參考我之前的這兩篇文章:
(1)Jedis操作字符串:
Java
package cn.zifangsky.test.redis;
import java.util.HashMap;
import java.util.Map;
import org.junit.Before;
import org.junit.Test;
import redis.clients.jedis.Jedis;
/**
* @author zifangsky
*
*/
public class BaseTest {
private Jedis jedis;
@Before
public void init(){
jedis = new Jedis("192.168.1.30", 6379);
jedis.auth("admin");
}
/**
* jedis操作字符串
*/
@Test
public void testString(){
jedis.set("test", "123"); //設置一個值
System.out.println(jedis.get("test")); //獲取值
jedis.append("test", "-456"); //字符串拼接
System.out.println(jedis.get("test"));
jedis.del("test"); //刪除某個鍵
System.out.println(jedis.get("test"));
//一次設置多個值
jedis.mset("username","zifangsky","password","123456","age","0");
System.out.println(jedis.get("username") + "-" + jedis.get("password") + "-" + jedis.get("age"));
}
}
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46packagecn.zifangsky.test.redis;
importjava.util.HashMap;
importjava.util.Map;
importorg.junit.Before;
importorg.junit.Test;
importredis.clients.jedis.Jedis;
/**
* @author zifangsky
*
*/
publicclassBaseTest{
privateJedisjedis;
@Before
publicvoidinit(){
jedis=newJedis("192.168.1.30",6379);
jedis.auth("admin");
}
/**
* jedis操作字符串
*/
@Test
publicvoidtestString(){
jedis.set("test","123");//設置一個值
System.out.println(jedis.get("test"));//獲取值
jedis.append("test","-456");//字符串拼接
System.out.println(jedis.get("test"));
jedis.del("test");//刪除某個鍵
System.out.println(jedis.get("test"));
//一次設置多個值
jedis.mset("username","zifangsky","password","123456","age","0");
System.out.println(jedis.get("username")+"-"+jedis.get("password")+"-"+jedis.get("age"));
}
}
運行這個單元測試之后輸出如下:
123
123-456
null
zifangsky-123456-0
1
2
3
4123
123-456
null
zifangsky-123456-0
(2)Jedis操作List:
Java
/**
* jedis操作List
*/
@Test
public void testList(){
jedis.del("books");
/**
* LPUSH key value1 [value2] 將一個或多個值插入到列表頭部
* LPUSHX key value 將一個或多個值插入到已存在的列表頭部
*/
jedis.lpush("books", "book1");
jedis.lpush("books", "book2");
jedis.lpush("books", "book3");
// 第一個是key,第二個是起始位置,第三個是結束位置,jedis.llen獲取長度 -1表示取得所有
//System.out.println(jedis.lrange("books", 0, -1));
System.out.println(jedis.lrange("books", 0, jedis.llen("books")));
//RPUSH key value1 [value2] 在列表中添加一個或多個值
jedis.del("books");
jedis.rpush("books", "book1");
jedis.rpush("books", "book2");
jedis.rpush("books", "book3");
System.out.println(jedis.lrange("books", 0, -1));
}
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26/**
* jedis操作List
*/
@Test
publicvoidtestList(){
jedis.del("books");
/**
* ????LPUSH key value1 [value2] 將一個或多個值插入到列表頭部
*??LPUSHX key value 將一個或多個值插入到已存在的列表頭部
*/
jedis.lpush("books","book1");
jedis.lpush("books","book2");
jedis.lpush("books","book3");
// 第一個是key,第二個是起始位置,第三個是結束位置,jedis.llen獲取長度 -1表示取得所有
//????????System.out.println(jedis.lrange("books", 0, -1));
System.out.println(jedis.lrange("books",0,jedis.llen("books")));
//RPUSH key value1 [value2] 在列表中添加一個或多個值
jedis.del("books");
jedis.rpush("books","book1");
jedis.rpush("books","book2");
jedis.rpush("books","book3");
System.out.println(jedis.lrange("books",0,-1));
}
運行這個單元測試之后輸出如下:
[book3, book2, book1]
[book1, book2, book3]
1
2[book3,book2,book1]
[book1,book2,book3]
(3)Jedis操作Set:
Java
/**
* jedis操作Set
*/
@Test
public void testSet(){
jedis.del("users");
jedis.sadd("users", "user1");
jedis.sadd("users", "user2");
jedis.sadd("users", "user3");
jedis.sadd("users", "user4");
jedis.srem("users", "user4"); //移除指定元素
System.out.println(jedis.scard("users")); //返回集合中元素個數
System.out.println(jedis.srandmember("users")); //返回一個隨機元素
System.out.println(jedis.smembers("users")); //返回所有元素
System.out.println(jedis.sismember("users", "user4")); //判斷user4是否是集合中的一個元素
}
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20/**
* jedis操作Set
*/
@Test
publicvoidtestSet(){
jedis.del("users");
jedis.sadd("users","user1");
jedis.sadd("users","user2");
jedis.sadd("users","user3");
jedis.sadd("users","user4");
jedis.srem("users","user4");//移除指定元素
System.out.println(jedis.scard("users"));//返回集合中元素個數
System.out.println(jedis.srandmember("users"));//返回一個隨機元素
System.out.println(jedis.smembers("users"));//返回所有元素
System.out.println(jedis.sismember("users","user4"));//判斷user4是否是集合中的一個元素
}
運行這個單元測試之后輸出如下:
3
user2
[user1, user3, user2]
false
1
2
3
43
user2
[user1,user3,user2]
false
(4)Jedis操作Map:
Java
/**
* jedis操作Map
*/
@Test
public void testMap(){
Map students = new HashMap<>();
students.put("stuA", "a1");
students.put("stuB", "b2");
students.put("stuC", "c3");
students.put("stuD", "4d");
jedis.hmset("students", students); //存儲
jedis.hdel("students", "stuD"); //刪除某個值
System.out.println(jedis.hlen("students")); //獲取Map集合大小
System.out.println(jedis.exists("stuD")); //時候存在某個鍵的記錄
System.out.println(jedis.hkeys("students")); //返回Map集合的所有key
System.out.println(jedis.hvals("students")); //返回Map集合的所有value
}
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20/**
* jedis操作Map
*/
@Test
publicvoidtestMap(){
Mapstudents=newHashMap<>();
students.put("stuA","a1");
students.put("stuB","b2");
students.put("stuC","c3");
students.put("stuD","4d");
jedis.hmset("students",students);//存儲
jedis.hdel("students","stuD");//刪除某個值
System.out.println(jedis.hlen("students"));//獲取Map集合大小
System.out.println(jedis.exists("stuD"));//時候存在某個鍵的記錄
System.out.println(jedis.hkeys("students"));//返回Map集合的所有key
System.out.println(jedis.hvals("students"));//返回Map集合的所有value
}
運行這個單元測試之后輸出如下:
3
false
[stuB, stuC, stuA]
[a1, c3, b2]
1
2
3
43
false
[stuB,stuC,stuA]
[a1,c3,b2]
(5)Jedis連接池的基本使用:
i)創建一個獲取連接的公共類:
Java
package cn.zifangsky.test.redis;
import redis.clients.jedis.Jedis;
import redis.clients.jedis.JedisPool;
import redis.clients.jedis.JedisPoolConfig;
public class RedisUtil {
/**
* Redis所在服務器IP
*/
private static String ADDR = "192.168.1.30";
/**
* Redis的端口號
*/
private static int PORT = 6379;
/**
* 認證密碼
*/
private static String AUTH = "admin";
/**
* 設置一個pool可分配多少個jedis實例,默認值是8
* 如果賦值為-1,則表示不限制;如果pool已經分配了maxActive個jedis實例,則此時pool的狀態為exhausted(耗盡)
*/
private static int MAX_ACTIVE = 1024;
/**
* 設置一個pool最多有多少個狀態為idle(空閑的)的jedis實例,默認值也是8
*/
private static int MAX_IDLE = 20;
/**
* 設置等待可用連接的最大時間,單位毫秒,默認值為-1,表示永不超時。
* 如果超過等待時間,則直接拋出JedisConnectionException
*/
private static int MAX_WAIT = 1000 * 100;
/**
* 連接超時時間,單位毫秒
*/
private static int TIMEOUT = 1000 * 10;
/**
* 在borrow一個jedis實例時,是否提前進行validate操作;如果為true,則得到的jedis實例均是可用的
*/
private static boolean TEST_ON_BORROW = true;
private static JedisPool jedisPool = null;
/**
* 初始化Redis連接池
*/
static{
JedisPoolConfig config = new JedisPoolConfig();
config.setMaxTotal(MAX_ACTIVE);
config.setMaxIdle(MAX_IDLE);
config.setMaxWaitMillis(MAX_WAIT);
config.setTestOnBorrow(TEST_ON_BORROW);
jedisPool = new JedisPool(config, ADDR, PORT, TIMEOUT, AUTH);
}
public synchronized static Jedis getJedis(){
if(jedisPool != null){
Jedis jedis = jedisPool.getResource();
return jedis;
}else{
return null;
}
}
}
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76packagecn.zifangsky.test.redis;
importredis.clients.jedis.Jedis;
importredis.clients.jedis.JedisPool;
importredis.clients.jedis.JedisPoolConfig;
publicclassRedisUtil{
/**
* Redis所在服務器IP
*/
privatestaticStringADDR="192.168.1.30";
/**
* Redis的端口號
*/
privatestaticintPORT=6379;
/**
* 認證密碼
*/
privatestaticStringAUTH="admin";
/**
* 設置一個pool可分配多少個jedis實例,默認值是8
* 如果賦值為-1,則表示不限制;如果pool已經分配了maxActive個jedis實例,則此時pool的狀態為exhausted(耗盡)
*/
privatestaticintMAX_ACTIVE=1024;
/**
* 設置一個pool最多有多少個狀態為idle(空閑的)的jedis實例,默認值也是8
*/
privatestaticintMAX_IDLE=20;
/**
* 設置等待可用連接的最大時間,單位毫秒,默認值為-1,表示永不超時。
* 如果超過等待時間,則直接拋出JedisConnectionException
*/
privatestaticintMAX_WAIT=1000*100;
/**
* 連接超時時間,單位毫秒
*/
privatestaticintTIMEOUT=1000*10;
/**
* 在borrow一個jedis實例時,是否提前進行validate操作;如果為true,則得到的jedis實例均是可用的
*/
privatestaticbooleanTEST_ON_BORROW=true;
privatestaticJedisPooljedisPool=null;
/**
* 初始化Redis連接池
*/
static{
JedisPoolConfigconfig=newJedisPoolConfig();
config.setMaxTotal(MAX_ACTIVE);
config.setMaxIdle(MAX_IDLE);
config.setMaxWaitMillis(MAX_WAIT);
config.setTestOnBorrow(TEST_ON_BORROW);
jedisPool=newJedisPool(config,ADDR,PORT,TIMEOUT,AUTH);
}
publicsynchronizedstaticJedisgetJedis(){
if(jedisPool!=null){
Jedisjedis=jedisPool.getResource();
returnjedis;
}else{
returnnull;
}
}
}
ii)測試:
Java
/**
* 測試連接池的基本使用
*/
@Test
public void testRedisPool(){
Jedis jedis = RedisUtil.getJedis();
jedis.set("testRedisPool","測試Redis連接池");
System.out.println(jedis.get("testRedisPool"));
}
1
2
3
4
5
6
7
8
9/**
* 測試連接池的基本使用
*/
@Test
publicvoidtestRedisPool(){
Jedisjedis=RedisUtil.getJedis();
jedis.set("testRedisPool","測試Redis連接池");
System.out.println(jedis.get("testRedisPool"));
}
運行這個單元測試之后輸出如下:
測試Redis連接池
1測試Redis連接池
參考:
總結
以上是生活随笔為你收集整理的jedis set集合 java,使用Jedis操作String、List、Set、Map等常见数据 | zifangsky的个人博客...的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: php 替换字符串 图片,PHP替换字符
- 下一篇: 10000以内回文数java,求10到1