本文實(shí)例講述了java連接redis及基本操作。分享給大家供大家參考,具體如下:
點(diǎn)擊此處:本站下載安裝。
解壓安裝
啟動(dòng)redis:使用cd命令切換目錄到 d:\redis運(yùn)行redis-server.exe redis.windows.conf
默認(rèn)端口為6379
訪問(wèn):切換到redis目錄下運(yùn)行 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> |
測(cè)試代碼:
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 { /** * 一般項(xiàng)目基本都使用非切片池; * 切片池主要用于分布式項(xiàng)目,可以設(shè)置主從redis庫(kù) */ 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" )); //構(gòu)造池 shardedjedispool = new shardedjedispool(config, shardinfos); } public void show(){ system.out.println( "----對(duì)value操作的命令----" ); valueoperate(); system.out.println( "----對(duì)string操作的命令----" ); stringoperator(); system.out.println( "----對(duì)list操作的命令----" ); listoperator(); system.out.println( "----對(duì)set操作的命令----" ); setoperator(); system.out.println( "----對(duì)hash操作的命令----" ); hashoperate(); } /** * 對(duì)value操作的命令 * @throws interruptedexception */ private void valueoperate(){ system.out.println( "清空當(dāng)前選擇庫(kù)中所有key:" +jedis.flushdb()); system.out.println( "清空所有庫(kù)中所有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所儲(chǔ)存的值的類型:" +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( "當(dāng)前數(shù)據(jù)庫(kù)中key的數(shù)目:" +jedis.dbsize()); system.out.println( "系統(tǒng)中所有鍵如下:" ); //返回滿足給定pattern的所有key set<string> keys = jedis.keys( "*" ); iterator<string> it=keys.iterator() ; while (it.hasnext()){ string key = it.next(); system.out.println(key); } //刪除時(shí),如果不存在忽略此命令 system.out.println( "系統(tǒng)中刪除mykey_3: " +jedis.del( "mykey_3" )); system.out.println( "系統(tǒng)中刪除mykey_2: " +jedis.del( "mykey_2" )); system.out.println( "判斷mykey_2是否存在:" +shardedjedis.exists( "mykey_2" )); system.out.println( "設(shè)置 mykey_1的過(guò)期時(shí)間為5秒:" +jedis.expire( "mykey_1" , 5 )); try { thread.sleep( 2000 ); } catch (interruptedexception e) { // todo auto-generated catch block e.printstacktrace(); } //沒(méi)有設(shè)置過(guò)期時(shí)間或者不存在的都返回-1 system.out.println( "獲得mykey_1的剩余活動(dòng)時(shí)間:" +jedis.ttl( "mykey_1" )); system.out.println( "取消設(shè)置mykey_1的活動(dòng)時(shí)間:" +jedis.persist( "mykey_1" )); system.out.println( "查看mykey_1的剩余活動(dòng)時(shí)間:" +jedis.ttl( "mykey_1" )); } /** * 對(duì)string操作的命令 */ private void stringoperator(){ system.out.println( "清空當(dāng)前選擇庫(kù)中所有key:" +jedis.flushdb()); system.out.println( "給數(shù)據(jù)庫(kù)中名稱為key01的string賦予值value:" +jedis.set( "key01" , "value01" )); system.out.println( "給數(shù)據(jù)庫(kù)中名稱為key02的string賦予值value:" +jedis.set( "key02" , "value02" )); system.out.println( "給數(shù)據(jù)庫(kù)中名稱為key03的string賦予值value:" +jedis.set( "key03" , "value03" )); system.out.println( "返回?cái)?shù)據(jù)庫(kù)中名稱為key01的string的value:" +jedis.get( "key01" )); system.out.println( "返回庫(kù)中多個(gè)string的value:" +jedis.mget( "key01" , "key02" , "key03" )); system.out.println( "添加string,名稱為key,值為value:" +jedis.setnx( "key04" , "value04" )); system.out.println( "向庫(kù)中添加string,設(shè)定過(guò)期時(shí)間time:" +jedis.setex( "key05" , 5 , "value05" )); system.out.println( "批量設(shè)置多個(gè)string的值:" +jedis.mset( "key06_1" , "value06_1" , "key06_2" , "value06_2" )); system.out.println( "給數(shù)據(jù)庫(kù)中名稱為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 )); } /** * 對(duì)list操作的命令 */ private void listoperator(){ system.out.println( "清空當(dāng)前選擇庫(kù)中所有key:" +jedis.flushdb()); //準(zhǔn)備兩個(gè)list shardedjedis.lpush( "mylist" , "java" ); shardedjedis.lpush( "mylist" , "c" ); shardedjedis.lpush( "mylist" , "c++" ); shardedjedis.lpush( "mylist" , "java" ); system.out.println( "在名稱為mylist的list尾添加一個(gè)值為value的元素:" +jedis.rpush( "mylist" , "phython" )); system.out.println( "在名稱為mylist的list頭添加一個(gè)值為value的 元素:" +jedis.rpush( "mylist" , "php" )); system.out.println( "返回名稱為mylist的list的長(zhǎng)度:" +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個(gè)mylist的key中值為value的元素:" +jedis.lrem( "mylist" , 1 , "java" )); system.out.println( "返回并刪除名稱為mylist的list中的首元素:" +jedis.lpop( "mylist" )); system.out.println( "返回并刪除名稱為mylist的list中的尾元素:" +jedis.rpop( "mylist" )); } /** * 對(duì)set操作的命令 */ private void setoperator(){ system.out.println( "清空當(dāng)前選擇庫(kù)中所有key:" +jedis.flushdb()); //準(zhǔn)備兩個(gè)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( "隨機(jī)返回并刪除名稱為myset的set中一個(gè)元素:" +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的基數(shù):" +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( "隨機(jī)返回名稱為dstkey的set的一個(gè)元素:" +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對(duì)應(yīng)的value:" +shardedjedis.hget( "key" , "field1" )); system.out.println( "返回名稱為key的hash中field1對(duì)應(yīng)的value:" +shardedjedis.hmget( "key" , "field1" , "field2" , "field3" )); system.out.println( "刪除名稱為key的hash中鍵為field1的域:" +shardedjedis.hdel( "key" , "field1" )); system.out.println( "返回名稱為key的hash中所有鍵對(duì)應(yīng)的value:" +shardedjedis.hvals( "key" )); system.out.println( "返回名稱為key的hash中元素個(gè)數(shù):" +shardedjedis.hlen( "key" )); system.out.println( "返回名稱為key的hash中所有鍵:" +shardedjedis.hkeys( "key" )); system.out.println( "返回名稱為key的hash中所有的鍵(field)及其對(duì)應(yīng)的value:" +shardedjedis.hgetall( "key" )); system.out.println( "名稱為key的hash中是否存在鍵為field1的域:" +shardedjedis.hexists( "key" , "field1" )); } } |
希望本文所述對(duì)大家java程序設(shè)計(jì)有所幫助。