快速入门Redis系列(3)——Redis的JavaAPI操作(附带练习)
作为快速入门Redis系列的第三篇博客,本篇为大家带来的是Redis的JavaAPI操作。
码字不易,先赞后看!
Redis的JavaAPI操作
看完了上一篇博客,相信大家对于Redis的数据类型有了初步的了解。事实上,Redis不仅可以通过命令行进行操作,同时Redis也可以通过JavaAPI进行操作。我们可以通过使用javaAPI来对Redis数据库当中的各种数据类型进行操作。
<1> 创建maven工程并导入jar包
<dependencies>
<dependency>
<groupId>redis.clients</groupId>
<artifactId>jedis</artifactId>
<version>2.9.0</version>
</dependency>
<dependency>
<groupId>junit</groupId>
<artifactId>junit</artifactId>
<version>4.12</version>
<scope>test</scope>
</dependency>
<dependency>
<groupId>org.testng</groupId>
<artifactId>testng</artifactId>
<version>6.14.3</version>
<scope>test</scope>
</dependency>
</dependencies>
<build>
<plugins>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-compiler-plugin</artifactId>
<version>3.0</version>
<configuration>
<source>1.8</source>
<target>1.8</target>
<encoding>UTF-8</encoding>
<!-- <verbal>true</verbal>-->
</configuration>
</plugin>
</plugins>
</build>
- 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
<2> 连接以及关闭redis客户端
private JedisPool jedisPool;
private JedisPoolConfig config;
/**
* 连接Redis连接池
*/
@BeforeTest
public void redisConnectionPool(){
// 初始化配置文件
config = new JedisPoolConfig();
// 控制一个pool最多有多少个状态为idle(空闲的)的jedis实例,默认值是8
config.setMaxIdle(10);
// 等待可用连接的最大时间,单位毫秒,默认值为-1,表示永不超时。如果超过等待时间,则直接抛出JedisConnectionException;
config.setMaxWaitMillis(3000);
// 连接实例的最大连接数
config.setMaxTotal(50);
config.setMinIdle(5);
// 设置连接点所处的节点,以及端口号
jedisPool = new JedisPool(config, "node01", 6379);
}
/**
* 关闭连接池
*/
@AfterTest
public void closePool(){
jedisPool.close();
}
- 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
<3> Redis的JavaAPI操作
① 操作string类型数据
/**
* 添加string类型数据
*/
@Test
public void addStr(){
Jedis resource = jedisPool.getResource();
//添加
resource.set("jediskey", "jedisvalue");
//查询
String jediskey = resource.get("jediskey");
System.out.println(jediskey);
//修改
resource.set("jediskey","jedisvalueUpdate");
//删除
resource.del("jediskey");
//实现整型数据的增长操作
resource.incr("jincr");
resource.incrBy("jincr",3);
//查询增长后的结果
String jincr = resource.get("jincr");
System.out.println(jincr);
//关闭资源
resource.close();
}
- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
- 9
- 10
- 11
- 12
- 13
- 14
- 15
- 16
- 17
- 18
- 19
- 20
- 21
- 22
- 23
- 24
② 操作hash列表类型数据
/**
* 操作hash类型数据
*/
@Test
public void hashOperate(){
Jedis resource = jedisPool.getResource();
//添加数据
resource.hset("jhsetkey","jmapkey","jmapvalue");
resource.hset("jhsetkey","jmapkey2","jmapvalue2");
//获取所有数据
Map<String, String> jhsetkey = resource.hgetAll("jhsetkey");
for (String s : jhsetkey.keySet()) {
System.out.println(s);
}
//修改数据
resource.hset("jhsetkey","jmapkey2","jmapvalueupdate2");
Map<String, String> jhsetkey2 = resource.hgetAll("jhsetkey");
for (String s : jhsetkey2.keySet()) {
System.out.println("修改数据打印"+s);
}
//删除数据
resource.del("jhsetkey");
//获取所有的键所对应值里的键值
Set<String> jhsetkey1 = resource.keys("jhsetkey");
for (String result : jhsetkey1) {
System.out.println(result);
}
//关闭资源
resource.close();
}
- 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
③ 操作list类型数据
/**
* 操作list类型的数据
*/
@Test
public void listOperate(){
Jedis resource = jedisPool.getResource();
//从左边插入元素
resource.lpush("listkey","listvalue1","listvalue1","listvalue2");
//从右边移除元素
resource.rpop("listkey");
//获取所有值
List<String> listkey = resource.lrange("listkey", 0, -1);
for (String s : listkey) {
System.out.println(s);
}
//关闭资源
resource.close();
}
- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
- 9
- 10
- 11
- 12
- 13
- 14
- 15
- 16
- 17
- 18
- 19
④ 操作set类型的数据
/**
* set类型数据操作
*/
@Test
public void setOperate(){
Jedis resource = jedisPool.getResource();
//添加数据
resource.sadd("setkey", "setvalue1", "setvalue1", "setvalue2", "setvalue3");
//查询数据
Set<String> setkey = resource.smembers("setkey");
for (String s : setkey) {
System.out.println(s);
}
//移除掉一个数据
resource.srem("setkey","setvalue3");
// 关闭资源
resource.close();
}
- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
- 9
- 10
- 11
- 12
- 13
- 14
- 15
- 16
- 17
- 18
<4>附赠练习
上面的示例只展示了Redis的JavaAPI一些常用的情况。为了巩固大家的基础,提升大家的能力,下面博主准备了两道题供大家练习,并在文末附上了答案,仅供参考~
练习一:
使用List实现以下功能:
1、创建两个list 名字分别为ltest1 ltest2.
2、Ltest1 从左到右为1 2 3 4 5 6 7 8 9,ltest2 从左到右为 f e d c b a
3、在Ltest1的3 左边插入3333
4、在6右边插入6666
5、通过索引查询Ltest2 索引为3的数据
6、将ltest2的e 修改为EEE
7、只保留ltest2的EEE d c b
8、移除ltest1右边一个数据并插入ltest2的左边
练习二:
使用Set实现以下功能:
1、添加set 集合 setdemo1(aa,bb,cc,dd,ee,ff) , setdemo2(11,22,33,dd,ee,ff)
2、将两个集合的交集写入setdemo3
3、将两个集合的并集写入到setdemo4
4、将setdemo2集合与setdemo1集合的差集写入setdemo5
5、将setdemo2内的11 移动到setdemo1内
6、删除setdemo1内的bb
参考答案见下方
/**
* @Auther: Alice菌
* @Date: 2020/3/13 20:31
* @Description: 流年笑掷 未来可期。以梦为马,不负韶华!
*/
public class Demo03 {
private JedisPool jedisPool;
private JedisPoolConfig config;
/**
* 连接Redis连接池
*/
@BeforeTest
public void redisConnectionPool(){
// 初始化配置文件
config = new JedisPoolConfig();
// 控制一个pool最多有多少个状态为idle(空闲的)的jedis实例,默认值是8
config.setMaxIdle(10);
// 等待可用连接的最大时间,单位毫秒,默认值为-1,表示永不超时。如果超过等待时间,则直接抛出JedisConnectionException;
config.setMaxWaitMillis(3000);
// 连接实例的最大连接数
config.setMaxTotal(50);
config.setMinIdle(5);
jedisPool = new JedisPool(config, "node01", 6379);
}
/**
* 关闭资源
*/
@AfterTest
public void closePool(){
jedisPool.close();
}
/**
* 测试题1
*/
@Test
public void test01(){
Jedis resource = jedisPool.getResource();
// 1.创建两个list 名字分别为ltest1,ltest2
// 2.Ltest1 从左到右为 1 2 3 4 5 6 7 8 9
resource.lpush("ltest1","987654321");
// Ltest2 从左到右为 f e d c b a
resource.lpush("ltest2","abcdef");
// 34.在Ltest的3 左边插入3333,在 6 右边插入 6666
resource.linsert("ltest1", BinaryClient.LIST_POSITION.BEFORE,"3","3333");
resource.linsert("ltest1", BinaryClient.LIST_POSITION.AFTER,"6","6666");
// 5.通过索引查询ltest2 索引为3 的数据
String data1 = resource.lindex("ltest2", 3);
System.out.println("ltest2表中索引为3的数据为:"+data1);
// 6.将ltest2的e 修改为 EEE
resource.lset("ltest2",1,"EEE");
// 7.只保留ltest2的EEE d c b
resource.ltrim("ltest2",1,4);
// 8.移除ltest1右边一个数据并插入ltest2的左边
resource.rpoplpush("ltest1","ltest2");
resource.close();
}
/**
* 测试题2
*/
@Test
public void test2(){
Jedis resource = jedisPool.getResource();
// 1. 添加set 集合 setdemo1(aa,bb,cc,dd,ee,ff) setdemo2(11,22,33,dd,ee,ff)
resource.sadd("setdemo1","aa","bb","cc","dd","ee","ff");
resource.sadd("setdemo2","11","22","33","dd","ee","ff");
// 2. 将两个集合的交集写入到setdemo3
resource.sinter("setdemo3","setdemo1","setdemo2");
// 3. 将两个集合的并集写入到setdemo4
resource.sunion("setdemo4","setdemo1","setdemo2");
// 4. 将setdemo2集合与setdemo1集合的差集写入到setdemo5
resource.sdiffstore("setdemo5","setdemo2","setdemo1");
// 5. 将setdemo2内的11 移动到setdemo1内
resource.smove("setdemo2","setdemo1","11");
// 6. 删除setdemo1内的bb
resource.srem("setdemo1","bb");
resource.close();
}
}
- 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
好了,本次的分享内容就到这里,受益或感兴趣的朋友记得点赞加关注,下一篇博客将为大家介绍Redis的持久化方案
!敬请期待|ू・ω・` )
文章来源: alice.blog.csdn.net,作者:大数据梦想家,版权归原作者所有,如需转载,请联系作者。
原文链接:alice.blog.csdn.net/article/details/104854435
- 点赞
- 收藏
- 关注作者
评论(0)