使用Java操作Redis需要jedis-2.1.0.jar,下載地址:jedis-2.1.0.jar
如果需要使用Redis連接池的話,還需commons-pool-1.5.4.jar,下載地址:commons-pool-1.5.4.jar
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
|
package com.test; 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 TestRedis { private Jedis jedis; @Before public void setup() { //連接redis服務器,192.168.0.100:6379 jedis = new Jedis( "192.168.0.100" , 6379 ); //權限認證 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(){ //開始前,先移除所有的內容 jedis.del( "java framework" ); System.out.println(jedis.lrange( "java framework" , 0 ,- 1 )); //先向key java framework中存放三條數據 jedis.lpush( "java framework" , "spring" ); jedis.lpush( "java framework" , "struts" ); jedis.lpush( "java framework" , "hibernate" ); //再取出所有數據jedis.lrange是按范圍取出, // 第一個是key,第二個是起始位置,第三個是結束位置,jedis.llen獲取長度 -1表示取得所有 System.out.println(jedis.lrange( "java framework" , 0 ,- 1 )); jedis.del( "java framework" ); jedis.rpush( "java framework" , "spring" ); jedis.rpush( "java framework" , "struts" ); jedis.rpush( "java framework" , "hibernate" ); 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 )); } @Test public void testRedisPool() { RedisUtil.getJedis().set( "newname" , "中文測試" ); System.out.println(RedisUtil.getJedis().get( "newname" )); } } |
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
|
package com.test; import redis.clients.jedis.Jedis; import redis.clients.jedis.JedisPool; import redis.clients.jedis.JedisPoolConfig; public final class RedisUtil { //Redis服務器IP private static String ADDR = "192.168.0.100" ; //Redis的端口號 private static int PORT = 6379 ; //訪問密碼 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.setMaxActive(MAX_ACTIVE); config.setMaxIdle(MAX_IDLE); config.setMaxWait(MAX_WAIT); config.setTestOnBorrow(TEST_ON_BORROW); jedisPool = new JedisPool(config, ADDR, PORT, TIMEOUT, AUTH); } 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); } } } |
以上就是本文的全部內容,希望對大家的學習有所幫助,也希望大家多多支持服務器之家。
原文鏈接:http://www.cnblogs.com/liuling/p/2014-4-19-04.html