服务器之家:专注于服务器技术及软件下载分享
分类导航

PHP教程|ASP.NET教程|Java教程|ASP教程|编程技术|正则表达式|C/C++|IOS|C#|Swift|Android|JavaScript|易语言|

服务器之家 - 编程语言 - Java教程 - Java连接redis及基本操作示例

Java连接redis及基本操作示例

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

这篇文章主要介绍了Java连接redis及基本操作,结合实例形式较为详细的分析了java针对redis数据库的基本连接、配置及操作相关实现技巧,需要的朋友可以参考下

本文实例讲述了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程序设计有所帮助。

延伸 · 阅读

精彩推荐