本文實例講述了java連接redis及基本操作。分享給大家供大家參考,具體如下:
點擊此處:本站下載安裝。
解壓安裝
啟動redis:使用cd命令切換目錄到 d:\redis運行redis-server.exe redis.windows.conf
默認端口為6379
訪問:切換到redis目錄下運行 redis-cli.exe -h 127.0.0.1 -p 6379
。
pom.xml:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
|
<project xmlns= "http://maven.apache.org/pom/4.0.0" xmlns:xsi= "http://www.w3.org/2001/xmlschema-instance" xsi:schemalocation= "http://maven.apache.org/pom/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd" > <modelversion> 4.0 . 0 </modelversion> <groupid>testredis</groupid> <artifactid>testredis</artifactid> <version> 0.0 . 1 -snapshot</version> <build/> <dependencies> <!-- redis nosql 操作依賴 --> <dependency> <groupid>redis.clients</groupid> <artifactid>jedis</artifactid> <version> 2.1 . 0 </version> </dependency> </dependencies> </project> |
測試代碼:
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
|
package com.crisy.redis; import java.util.arraylist; import java.util.iterator; import java.util.list; import java.util.set; import redis.clients.jedis.jedis; import redis.clients.jedis.jedispool; import redis.clients.jedis.jedispoolconfig; import redis.clients.jedis.jedisshardinfo; import redis.clients.jedis.shardedjedis; import redis.clients.jedis.shardedjedispool; public class redisclient { /** * 一般項目基本都使用非切片池; * 切片池主要用于分布式項目,可以設置主從redis庫 */ private jedis jedis; //非切片客戶端連接 private jedispool jedispool; //非切片連接池 private shardedjedis shardedjedis; //切片客戶端連接 private shardedjedispool shardedjedispool; //切片連接池 public redisclient(){ initialpool(); //初始化非切片連接池 initialshardedpool(); //初始化切片連接池 shardedjedis = shardedjedispool.getresource(); jedis = jedispool.getresource(); } private void initialpool() { jedispoolconfig config = new jedispoolconfig(); config.setmaxactive( 20 ); config.setmaxidle( 5 ); config.setmaxwait( 100001 ); config.settestonborrow( false ); jedispool = new jedispool(config, "127.0.0.1" , 6379 ); } private void initialshardedpool() { jedispoolconfig config = new jedispoolconfig(); config.setmaxactive( 20 ); config.setmaxidle( 5 ); config.setmaxwait( 100001 ); config.settestonborrow( false ); //slave連接 list<jedisshardinfo> shardinfos = new arraylist<jedisshardinfo>(); shardinfos.add( new jedisshardinfo( "127.0.0.1" , 6379 , "master" )); //構造池 shardedjedispool = new shardedjedispool(config, shardinfos); } public void show(){ system.out.println( "----對value操作的命令----" ); valueoperate(); system.out.println( "----對string操作的命令----" ); stringoperator(); system.out.println( "----對list操作的命令----" ); listoperator(); system.out.println( "----對set操作的命令----" ); setoperator(); system.out.println( "----對hash操作的命令----" ); hashoperate(); } /** * 對value操作的命令 * @throws interruptedexception */ private void valueoperate(){ system.out.println( "清空當前選擇庫中所有key:" +jedis.flushdb()); system.out.println( "清空所有庫中所有key:" +jedis.flushall()); system.out.println( "判斷mykey鍵是否存在:" +shardedjedis.exists( "mykey" )); system.out.println( "新增mykey:" +shardedjedis.set( "mykey" , "myvalue" )); system.out.println( "判斷mykey鍵是否存在:" +shardedjedis.exists( "mykey" )); system.out.println( "查看mykey所儲存的值的類型:" +jedis.type( "mykey" )); system.out.println( "重命名mykey-mykey_1:" +jedis.rename( "mykey" , "mykey_1" )); system.out.println( "判斷mykey鍵是否存在:" +shardedjedis.exists( "mykey" )); system.out.println( "判斷mykey_1鍵是否存在:" +shardedjedis.exists( "mykey_1" )); system.out.println( "新增mykey_2:" +shardedjedis.set( "mykey_2" , "myvalue_2" )); system.out.println( "查看索引為0的key:" +jedis.select( 0 )); system.out.println( "當前數據庫中key的數目:" +jedis.dbsize()); system.out.println( "系統中所有鍵如下:" ); //返回滿足給定pattern的所有key set<string> keys = jedis.keys( "*" ); iterator<string> it=keys.iterator() ; while (it.hasnext()){ string key = it.next(); system.out.println(key); } //刪除時,如果不存在忽略此命令 system.out.println( "系統中刪除mykey_3: " +jedis.del( "mykey_3" )); system.out.println( "系統中刪除mykey_2: " +jedis.del( "mykey_2" )); system.out.println( "判斷mykey_2是否存在:" +shardedjedis.exists( "mykey_2" )); system.out.println( "設置 mykey_1的過期時間為5秒:" +jedis.expire( "mykey_1" , 5 )); try { thread.sleep( 2000 ); } catch (interruptedexception e) { // todo auto-generated catch block e.printstacktrace(); } //沒有設置過期時間或者不存在的都返回-1 system.out.println( "獲得mykey_1的剩余活動時間:" +jedis.ttl( "mykey_1" )); system.out.println( "取消設置mykey_1的活動時間:" +jedis.persist( "mykey_1" )); system.out.println( "查看mykey_1的剩余活動時間:" +jedis.ttl( "mykey_1" )); } /** * 對string操作的命令 */ private void stringoperator(){ system.out.println( "清空當前選擇庫中所有key:" +jedis.flushdb()); system.out.println( "給數據庫中名稱為key01的string賦予值value:" +jedis.set( "key01" , "value01" )); system.out.println( "給數據庫中名稱為key02的string賦予值value:" +jedis.set( "key02" , "value02" )); system.out.println( "給數據庫中名稱為key03的string賦予值value:" +jedis.set( "key03" , "value03" )); system.out.println( "返回數據庫中名稱為key01的string的value:" +jedis.get( "key01" )); system.out.println( "返回庫中多個string的value:" +jedis.mget( "key01" , "key02" , "key03" )); system.out.println( "添加string,名稱為key,值為value:" +jedis.setnx( "key04" , "value04" )); system.out.println( "向庫中添加string,設定過期時間time:" +jedis.setex( "key05" , 5 , "value05" )); system.out.println( "批量設置多個string的值:" +jedis.mset( "key06_1" , "value06_1" , "key06_2" , "value06_2" )); system.out.println( "給數據庫中名稱為key07的string賦予值value:" +jedis.set( "key07" , "1" )); system.out.println( "名稱為key07的string增1操作:" +jedis.incr( "key07" )); //err value is not an integer or out of range //system.out.println("名稱為key01的string增1操作:"+jedis.incr("key01")); system.out.println( "名稱為key07的string增加integer:" +jedis.incrby( "key07" , 5 )); system.out.println( "名稱為key07的string減1操作:" +jedis.decr( "key07" )); system.out.println( "名稱為key07的string減少integer:" +jedis.decrby( "key07" , 3 )); system.out.println( "名稱為key的string的值附加value:" +jedis.append( "key01" , "hello world" )); system.out.println( "返回名稱為key的string的value的子串:" +jedis.substr( "key01" , 0 , 5 )); } /** * 對list操作的命令 */ private void listoperator(){ system.out.println( "清空當前選擇庫中所有key:" +jedis.flushdb()); //準備兩個list shardedjedis.lpush( "mylist" , "java" ); shardedjedis.lpush( "mylist" , "c" ); shardedjedis.lpush( "mylist" , "c++" ); shardedjedis.lpush( "mylist" , "java" ); system.out.println( "在名稱為mylist的list尾添加一個值為value的元素:" +jedis.rpush( "mylist" , "phython" )); system.out.println( "在名稱為mylist的list頭添加一個值為value的 元素:" +jedis.rpush( "mylist" , "php" )); system.out.println( "返回名稱為mylist的list的長度:" +jedis.llen( "mylist" )); system.out.println( "返回名稱為mylist中start至end之間的元素:" +jedis.lrange( "mylist" , 0 , 3 )); system.out.println( "截取名稱為mylist的list:" +jedis.ltrim( "mylist" , 0 , 3 )); system.out.println( "返回名稱為mylist的list中index位置的元素:" +jedis.lindex( "mylist" , 0 )); system.out.println( "給名稱為mylist的list中index位置的元素賦值:" +jedis.lset( "mylist" , 0 , "hahahahah我改啦" )); system.out.println( "刪除count個mylist的key中值為value的元素:" +jedis.lrem( "mylist" , 1 , "java" )); system.out.println( "返回并刪除名稱為mylist的list中的首元素:" +jedis.lpop( "mylist" )); system.out.println( "返回并刪除名稱為mylist的list中的尾元素:" +jedis.rpop( "mylist" )); } /** * 對set操作的命令 */ private void setoperator(){ system.out.println( "清空當前選擇庫中所有key:" +jedis.flushdb()); //準備兩個set jedis.sadd( "myset" , "hahaha" ); jedis.sadd( "myset" , "hahaha" ); jedis.sadd( "myset" , "lalala" ); jedis.sadd( "myset" , "kakaka" ); jedis.sadd( "myset2" , "hahaha" ); jedis.sadd( "myset2" , "lalala" ); jedis.sadd( "myset2" , "kakaka" ); system.out.println( "向名稱為myset的set中添加元素member:" +jedis.sadd( "myset" , "wawawa" )); system.out.println( "返回名稱為myset的set的所有元素:" +jedis.smembers( "myset" )); system.out.println( "刪除名稱為myset的set中的元素member:" +jedis.srem( "myset" , "wawawa" )); system.out.println( "返回名稱為myset的set的所有元素:" +jedis.smembers( "myset" )); system.out.println( "隨機返回并刪除名稱為myset的set中一個元素:" +jedis.spop( "myset" )); system.out.println( "移到集合元素:" +jedis.smove( "myset" , "myset2" , "hahaha" )); system.out.println( "返回名稱為myset的set的所有元素:" +jedis.smembers( "myset" )); system.out.println( "返回名稱為myset2的set的所有元素:" +jedis.smembers( "myset2" )); system.out.println( "返回名稱為mykey的set的基數:" +jedis.scard( "myset" )); system.out.println( "member是否是名稱為mykey的set的元素:" +jedis.sismember( "myset" , "hahaha" )); system.out.println( "求交集:" +jedis.sinter( "myset" , "myset2" )); system.out.println( "求交集并將交集保存到dstkey的集合:" +jedis.sinterstore( "dstkey" , "myset2" , "myset" )); system.out.println( "返回名稱為dstkey的set的所有元素:" +jedis.smembers( "dstkey" )); system.out.println( "求并集:" +jedis.sunion( "myset" , "myset2" )); system.out.println( "求并集并將并集保存到dstkey的集合:" +jedis.sinterstore( "dstkey" , "myset2" , "myset" )); system.out.println( "返回名稱為dstkey的set的所有元素:" +jedis.smembers( "dstkey" )); system.out.println( "求差集:" +jedis.sdiff( "myset2" , "myset" )); system.out.println( "求差集并將差集保存到dstkey的集合:" +jedis.sdiffstore( "dstkey" , "myset2" , "myset" )); system.out.println( "返回名稱為dstkey的set的所有元素:" +jedis.smembers( "dstkey" )); system.out.println( "隨機返回名稱為dstkey的set的一個元素:" +jedis.srandmember( "dstkey" )); } /** * hash */ private void hashoperate(){ system.out.println(jedis.flushdb()); system.out.println( "向名稱為key的hash中添加元素field1:" +shardedjedis.hset( "key" , "field1" , "value1" )); system.out.println( "向名稱為key的hash中添加元素field2:" +shardedjedis.hset( "key" , "field2" , "value2" )); system.out.println( "向名稱為key的hash中添加元素field3:" +shardedjedis.hset( "key" , "field3" , "value3" )); system.out.println( "返回名稱為key的hash中field1對應的value:" +shardedjedis.hget( "key" , "field1" )); system.out.println( "返回名稱為key的hash中field1對應的value:" +shardedjedis.hmget( "key" , "field1" , "field2" , "field3" )); system.out.println( "刪除名稱為key的hash中鍵為field1的域:" +shardedjedis.hdel( "key" , "field1" )); system.out.println( "返回名稱為key的hash中所有鍵對應的value:" +shardedjedis.hvals( "key" )); system.out.println( "返回名稱為key的hash中元素個數:" +shardedjedis.hlen( "key" )); system.out.println( "返回名稱為key的hash中所有鍵:" +shardedjedis.hkeys( "key" )); system.out.println( "返回名稱為key的hash中所有的鍵(field)及其對應的value:" +shardedjedis.hgetall( "key" )); system.out.println( "名稱為key的hash中是否存在鍵為field1的域:" +shardedjedis.hexists( "key" , "field1" )); } } |
希望本文所述對大家java程序設計有所幫助。