日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

jedis set集合 java,使用Jedis操作String、List、Set、Map等常见数据 | zifangsky的个人博客...

發布時間:2024/10/12 编程问答 32 豆豆
生活随笔 收集整理的這篇文章主要介紹了 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的个人博客...的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。