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

服務(wù)器之家:專注于服務(wù)器技術(shù)及軟件下載分享
分類導(dǎo)航

PHP教程|ASP.NET教程|Java教程|ASP教程|編程技術(shù)|正則表達(dá)式|C/C++|IOS|C#|Swift|Android|VB|R語(yǔ)言|JavaScript|易語(yǔ)言|vb.net|

服務(wù)器之家 - 編程語(yǔ)言 - Java教程 - Java連接redis及基本操作示例

Java連接redis及基本操作示例

2021-07-27 12:09crisy0513 Java教程

這篇文章主要介紹了Java連接redis及基本操作,結(jié)合實(shí)例形式較為詳細(xì)的分析了java針對(duì)redis數(shù)據(jù)庫(kù)的基本連接、配置及操作相關(guān)實(shí)現(xiàn)技巧,需要的朋友可以參考下

本文實(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ì)有所幫助。

延伸 · 閱讀

精彩推薦
主站蜘蛛池模板: 亚洲国产成人在线视频 | 色亚洲色图 | 金发美女与黑人做爰 | 大伊香蕉在线精品不卡视频 | 亚洲天堂日韩在线 | 亚洲精品午夜在线观看 | 91制片在线观看 | 亚洲 日韩 在线 国产 视频 | www.av网站| 变态np虐高h | 国产国语在线播放视频 | 轻轻操在线视频 | 天天做日日做天天添天天欢公交车 | 亚洲 欧美 中文 日韩 另类 | 黑人异族日本人hd | 免费稚嫩福利 | 日韩毛片在线影视 | 国产精品第3页 | 欧美综合亚洲图片综合区 | 羞羞影院午夜男女爽爽影院网站 | 免费真实播放国产乱子伦 | 国产日韩欧美不卡www | freesex1718处xx| 禁漫H天堂免费A漫 | 日韩欧美国产一区 | 麻豆性视频 | 九九精品免费视频 | 国产真实伦对白在线播放 | 国内精品自产拍在线观看91 | 别停好爽好深好大好舒服视频 | 国产成人理在线观看视频 | 成年人网站免费在线观看 | 奇米影视先锋 | 四虎成人免费视频 | 亚洲一级特黄特黄的大片 | bl超h 高h 污肉快穿np | 91九色porn偷拍在线 | 国产微拍精品一区 | 18亚洲chinese男男1069 | 亚洲春黄在线观看 | 国产欧美一区二区三区久久 |