一区二区三区在线-一区二区三区亚洲视频-一区二区三区亚洲-一区二区三区午夜-一区二区三区四区在线视频-一区二区三区四区在线免费观看

服務器之家:專注于服務器技術及軟件下載分享
分類導航

PHP教程|ASP.NET教程|JAVA教程|ASP教程|編程技術|正則表達式|C/C++|

服務器之家 - 編程語言 - JAVA教程 - Java中使用Jedis操作Redis的實現代碼

Java中使用Jedis操作Redis的實現代碼

2020-10-22 17:28小柳愛吃肉 JAVA教程

本篇文章主要介紹了Java中使用Jedis操作Redis的實現代碼。詳細的介紹了Redis的安裝和在java中的操作,具有一定的參考價值,有興趣的可以了解一下

一.   redis的安裝

1.下載源碼,解壓縮后編譯源碼。

?
1
2
3
[root@cwt123 ~]# tar xzf redis-2.8.3.tar.gz
[root@cwt123 ~]# cd redis-2.8.3
[root@cwt123 ~]# make

2.啟動Redis服務。(src在redis-2.8.3下) 

?
1
2
[root@cwt123 ~]# cd src
[root@cwt123 ~] ./redis-server

3.連接redis客戶端

?
1
[root@cwt123 ~]# ./redis-cli

4.測試,redis的ip即為機器的ip,端口默認為6379

?
1
2
3
4
5
6
7
127.0.0.1:6379> set 'hello' 'test'
 
OK
 
127.0.0.1:6379> get hello
 
"test"

二.   java操作redis

1.直接連接redis,并操作redis

?
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
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
package com.sinovatech.mactivity.web.controller;
 
 
 
import java.util.HashMap;
 
import java.util.Iterator;
 
import java.util.List;
 
import java.util.Map;
 
 
 
import org.junit.Before;
 
import org.junit.Test;
 
 
 
import redis.clients.jedis.Jedis;
 
 
 
public class TestredisOwn {
 
  private Jedis jedis;
 
   
 
  @Before
 
  public void setup() {
 
    //連接redis服務器,192.168.0.100:6379
 
    jedis = new Jedis("10.143.131.63", 6378);
 
    //權限認證
 
    //jedis.auth("admin");
 
  }
 
   
 
  /**
 
   * redis存儲字符串
 
   */
 
  @Test
 
  public void testString() {
 
    //-----添加數據----------
 
    jedis.set("name","xinxin");//向key-->name中放入了value-->xinxin
 
    System.out.println(jedis.get("name"));//執行結果:xinxin
 
     
 
    jedis.append("name", " is my lover"); //拼接
 
    System.out.println(jedis.get("name"));
 
     
 
    jedis.del("name"); //刪除某個鍵
 
    System.out.println(jedis.get("name"));
 
    //設置多個鍵值對
 
    jedis.mset("name","liuling","age","23","qq","476777XXX");
 
    jedis.incr("age"); //進行加1操作
 
    System.out.println(jedis.get("name") + "-" + jedis.get("age") + "-" + jedis.get("qq"));
 
     
 
  }
 
   
 
  /**
 
   * redis操作Map
 
   */
 
  @Test
 
  public void testMap() {
 
    //-----添加數據----------
 
    Map<String, String> map = new HashMap<String, String>();
 
    map.put("name", "xinxin");
 
    map.put("age", "22");
 
    map.put("qq", "123456");
 
    jedis.hmset("user",map);
 
    //取出user中的name,執行結果:[minxr]-->注意結果是一個泛型的List
 
    //第一個參數是存入redis中map對象的key,后面跟的是放入map中的對象的key,后面的key可以跟多個,是可變參數
 
    List<String> rsmap = jedis.hmget("user", "name", "age", "qq");
 
    System.out.println(rsmap);
 
  
 
    //刪除map中的某個鍵值
 
    jedis.hdel("user","age");
 
    System.out.println(jedis.hmget("user", "age")); //因為刪除了,所以返回的是null
 
    System.out.println(jedis.hlen("user")); //返回key為user的鍵中存放的值的個數2
 
    System.out.println(jedis.exists("user"));//是否存在key為user的記錄 返回true
 
    System.out.println(jedis.hkeys("user"));//返回map對象中的所有key
 
    System.out.println(jedis.hvals("user"));//返回map對象中的所有value
 
  
 
    Iterator<String> iter=jedis.hkeys("user").iterator();
 
    while (iter.hasNext()){
 
      String key = iter.next();
 
      System.out.println(key+":"+jedis.hmget("user",key));
 
    }
 
  }
 
   
 
  /**
 
   * jedis操作List
 
   */
 
  @Test
 
  public void testList(){
 
    //lpush將數據從鏈表的頭部插入,如果沒有該key,在插入之前創建與key關聯的空鏈表
 
    jedis.lpush("java framework","spring");
 
    jedis.lpush("java framework","struts");
 
    jedis.lpush("java framework","hibernate");
 
    //rpush將數據從鏈表的尾部插入元素,如果沒有該key,在插入前穿件與該key關聯的空鏈表
 
    jedis.rpush("java frameworkr", "spring");
 
    jedis.rpush("java frameworkr", "struts");
 
    jedis.rpush("java frameworkr", "hibernate");
 
    //lpop,取出鏈表的頭部元素,沒有返回null
 
    jedis.lpop("java framework");
 
    //rpop取出鏈表的尾部元素,key不存在返回null
 
    jedis.rpop("java framework");
 
    //再取出所有數據jedis.lrange是按范圍取出,
 
    // 第一個是key,第二個是起始位置,第三個是結束位置,jedis.llen獲取長度 -1表示取得所有
 
    System.out.println(jedis.lrange("java framework",0,-1));
 
     
 
  }
 
   
 
  /**
 
   * jedis操作Set
 
   */
 
  @Test
 
  public void testSet(){
 
    //添加
 
    jedis.sadd("user","liuling");
 
    jedis.sadd("user","xinxin");
 
    jedis.sadd("user","ling");
 
    jedis.sadd("user","zhangxinxin");
 
    jedis.sadd("user","who");
 
    //移除noname
 
    jedis.srem("user","who");
 
    System.out.println(jedis.smembers("user"));//獲取所有加入的value
 
    System.out.println(jedis.sismember("user", "who"));//判斷 who 是否是user集合的元素
 
    System.out.println(jedis.srandmember("user"));
 
    System.out.println(jedis.scard("user"));//返回集合的元素個數
 
  }
 
  
 
  @Test
 
  public void test() throws InterruptedException {
 
    //jedis 排序
 
    //注意,此處的rpush和lpush是List的操作。是一個雙向鏈表(但從表現來看的)
 
    jedis.del("a");//先清除數據,再加入數據進行測試
 
    jedis.rpush("a", "1");
 
    jedis.lpush("a","6");
 
    jedis.lpush("a","3");
 
    jedis.lpush("a","9");
 
    System.out.println(jedis.lrange("a",0,-1));// [9, 3, 6, 1]
 
    System.out.println(jedis.sort("a")); //[1, 3, 6, 9] //輸入排序后結果
 
    System.out.println(jedis.lrange("a",0,-1));
 
  }
 
  //下面方法調用redis中的連接池
 
  @Test
 
  public void testRedisPool() {
 
    TestRedisUtil.getJedis().set("newname", "中文測試");
 
    System.out.println(TestRedisUtil.getJedis().get("newname"));
 
  }
 
  public static void main(){
 
    Jedis jedis=TestRedisUtil.getJedis();
 
    jedis.set("testrediskey001", "testrediskey001");
 
    String getvalue=jedis.get("testrediskey001");
 
    System.out.println(getvalue);
 
  }
 
}

2.創建redis連接池,并操作使用redis

①Redis連接池的創建

?
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
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
package com.sinovatech.mactivity.web.controller;
 
import redis.clients.jedis.Jedis;
 
import redis.clients.jedis.JedisPool;
 
import redis.clients.jedis.JedisPoolConfig;
 
 
 
public final class TestRedisUtil {
 
   
 
  //Redis服務器IP
 
  private static String ADDR = "10.143.131.63";
 
   
 
  //Redis的端口號
 
  private static int PORT = 6378;
 
   
 
  //訪問密碼
 
  private static String AUTH = "admin";
 
   
 
  //可用連接實例的最大數目,默認值為8;
 
  //如果賦值為-1,則表示不限制;如果pool已經分配了maxActive個jedis實例,則此時pool的狀態為exhausted(耗盡)。
 
  private static int MAX_ACTIVE = 1024;
 
   
 
  //控制一個pool最多有多少個狀態為idle(空閑的)的jedis實例,默認值也是8。
 
  private static int MAX_IDLE = 200;
 
   
 
  //等待可用連接的最大時間,單位毫秒,默認值為-1,表示永不超時。如果超過等待時間,則直接拋出JedisConnectionException;
 
  private static int MAX_WAIT = 10000;
 
   
 
  private static int TIMEOUT = 10000;
 
   
 
  //在borrow一個jedis實例時,是否提前進行validate操作;如果為true,則得到的jedis實例均是可用的;
 
  private static boolean TEST_ON_BORROW = true;
 
   
 
  private static JedisPool jedisPool = null;
 
   
 
  /**
 
   * 初始化Redis連接池
 
   */
 
  static {
 
    try {
 
      JedisPoolConfig config = new JedisPoolConfig();
 
      config.setMaxIdle(MAX_ACTIVE);
 
      config.setMaxIdle(MAX_IDLE);
 
      config.setMaxWaitMillis(MAX_WAIT);
 
      config.setTestOnBorrow(TEST_ON_BORROW);
 
      jedisPool = new JedisPool(config, ADDR, PORT);
 
    } catch (Exception e) {
 
      e.printStackTrace();
 
    }
 
  }
 
   
 
  /**
 
   * 獲取Jedis實例
 
   * @return
 
   */
 
  public synchronized static Jedis getJedis() {
 
    try {
 
      if (jedisPool != null) {
 
        Jedis resource = jedisPool.getResource();
 
        return resource;
 
      } else {
 
        return null;
 
      }
 
    } catch (Exception e) {
 
      e.printStackTrace();
 
      return null;
 
    }
 
  }
 
   
 
  /**
 
   * 釋放jedis資源
 
   * @param jedis
 
   */
 
  public static void returnResource(final Jedis jedis) {
 
    if (jedis != null) {
 
      jedisPool.returnResource(jedis);
 
    }
 
  }
 
}

②使用創建好的redis連接池操作redis

?
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
package com.sinovatech.mactivity.web.controller;
 
import redis.clients.jedis.Jedis;
 
public class TestRedisOwnNew {
 
  public static void main(String[] args) {
 
    // TODO Auto-generated method stub
 
  Jedis jedis=TestRedisUtil.getJedis();
 
    jedis.set("testrediskey001", "testrediskey001");
 
    String getvalue=jedis.get("testrediskey001");
 
    System.out.println(getvalue);
 
    jedis.del("testrediskey001");
 
     
 
  }
 
 
 
}

三.Redis常用方法

1.redis存儲字符串:

?
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
//① -----添加數據---------- 調用set方法
 
    jedis.set("name","xinxin");//向key-->name中放入了value-->xinxin
 
    System.out.println(jedis.get("name"));//執行結果:xinxin
 
    jedis.append("name", " is my lover"); //拼接
 
    System.out.println(jedis.get("name"));
 
//②刪除數據,調用del方法
 
    jedis.del("name"); //刪除某個鍵
 
    System.out.println(jedis.get("name"));
 
//③設置多個鍵值對,調用mset方法參數格式為(key,value,key,value)
 
    jedis.mset("name","liuling","age","23","qq","476777XXX");
 
//④incr方法,對某個key的value值進行加1操作,如果沒有該key會自動創建,并加1
 
    jedis.incr("age"); //進行加1操作
 
    System.out.println(jedis.get("name") + "-" + jedis.get("age") + "-" + jedis.get("qq"));

2. redis操作Map

?
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
//①-----添加數據---------- 調 hmset方法,放入一個map
 
    Map<String, String> map = new HashMap<String, String>();
 
    map.put("name", "xinxin");
 
    map.put("age", "22");
 
    map.put("qq", "123456");
 
    jedis.hmset("user",map);
 
    //取出user中的name,執行結果:[minxr]-->注意結果是一個泛型的List
 
    //第一個參數是存入redis中map對象的key,后面跟的是放入map中的對象的key,后面的key可以跟多個,是可變參數
 
//②取數據,調用hmget方法,參數是之前放入的map的key,返回的是一個list
 
    List<String> rsmap = jedis.hmget("user", "name", "age", "qq");
 
    System.out.println(rsmap);
 
 
 
 //③ 刪除map中的某個鍵值 ,調用hdel方法,可是刪除多個鍵
 
    jedis.hdel("user","age");
 
    System.out.println(jedis.hmget("user", "age")); //因為刪除了,所以返回的是null
 
    System.out.println(jedis.hlen("user")); //返回key為user的鍵中存放的值的個數2
 
    System.out.println(jedis.exists("user"));//是否存在key為user的記錄 返回true
 
    System.out.println(jedis.hkeys("user"));//返回map對象中的所有key
 
    System.out.println(jedis.hvals("user"));//返回map對象中的所有value
 
 
 
    Iterator<String> iter=jedis.hkeys("user").iterator();
 
    while (iter.hasNext()){
 
      String key = iter.next();
 
      System.out.println(key+":"+jedis.hmget("user",key));
 
    }

3.jedis操作List

?
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
//①lpush將數據從鏈表的頭部插入,如果沒有該key,在插入之前創建與key關聯的空鏈表
 
    jedis.lpush("java framework","spring");
 
    jedis.lpush("java framework","struts");
 
    jedis.lpush("java framework","hibernate");
 
//②rpush將數據從鏈表的尾部插入元素,如果沒有該key,在插入前穿件與該key關聯的空鏈表
 
    jedis.rpush("java frameworkr", "spring");
 
    jedis.rpush("java frameworkr", "struts");
 
    jedis.rpush("java frameworkr", "hibernate");
 
//③lpop,取出鏈表的頭部元素,沒有返回null
 
    jedis.lpop("java framework");
 
//④ rpop取出鏈表的尾部元素,key不存在返回null
 
    jedis.rpop("java framework");
 
//⑤ 再取出所有數據jedis.lrange是按范圍取出, 第一個是key,第二個是起始位置,第三個是結束位置,jedis.llen獲取長度 -1表示取得所有
 
    System.out.println(jedis.lrange("java framework",0,-1));

以上就是本文的全部內容,希望對大家的學習有所幫助,也希望大家多多支持服務器之家。

原文鏈接:http://www.cnblogs.com/cl1255674805/p/6885980.html

延伸 · 閱讀

精彩推薦
主站蜘蛛池模板: bl双性小说 | 欧美在线一级视频 | 天天爽天天干天天操 | 72张让男人一看就硬的图片 | 玩乳h文奶水和尚 | 国产精品免费久久久久影院 | 日本老师动漫 | 极品丝袜老师h系列全文阅读 | 四虎永久免费地址ww417 | 久久亚洲午夜牛牛影视 | 天堂激情网 | 性柔术xxxhd 性派对videos18party | 18未年禁止免费观看 | 亚洲成人看片 | 免费高清资源黄网站在线观看 | 精品一区二区视频 | 国产精品久久免费 | 亚洲精品国产在线观看 | 99久久香蕉国产线看观香 | 香蕉久久一区二区不卡无毒影院 | 91制片厂制作传媒破解版免费 | 国产未成女年一区二区 | 国产精品免费综合一区视频 | yellow视频免费观看播放 | 出轨娇妻的呻吟1—9 | 欧美性一区二区三区 | 国产精品成人在线播放 | 成人国产在线观看 | 亚洲欧美日本在线观看 | 精品国产人成亚洲区 | sss在线播放 | 色婷婷久久综合中文久久一本 | 厕所rxxx| 天天干夜夜噜 | 99在线观看视频免费 | 日本免费一区二区三区 | 亚洲激情偷拍 | 催奶师小说 | 国产中文在线 | 欧美肥乳| 久久一er精这里有精品 |