作为快速入门Redis系列的第三篇博客,本篇为大家带来的是Redis的JavaAPI操作。

码字不易,先赞后看!

Redis的JavaAPI操作

看完了上一篇博客,相信大家对于Redis的数据类型有了初步的了解。事实上,Redis不仅可以通过命令行进行操作,同时Redis也可以通过JavaAPI进行操作。我们可以通过使用javaAPI来对Redis数据库当中的各种数据类型进行操作。

<1> 创建maven工程并导入jar包

redis.clients

jedis

2.9.0

junit

junit

4.12

test

org.testng

testng

6.14.3

test

org.apache.maven.plugins

maven-compiler-plugin

3.0

1.8

1.8

UTF-8

<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();

}

<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();

}

② 操作hash列表类型数据

/**

* 操作hash类型数据

*/

@Test

public void hashOperate(){

Jedis resource = jedisPool.getResource();

//添加数据

resource.hset("jhsetkey","jmapkey","jmapvalue");

resource.hset("jhsetkey","jmapkey2","jmapvalue2");

//获取所有数据

Map jhsetkey = resource.hgetAll("jhsetkey");

for (String s : jhsetkey.keySet()) {

System.out.println(s);

}

//修改数据

resource.hset("jhsetkey","jmapkey2","jmapvalueupdate2");

Map jhsetkey2 = resource.hgetAll("jhsetkey");

for (String s : jhsetkey2.keySet()) {

System.out.println("修改数据打印"+s);

}

//删除数据

resource.del("jhsetkey");

//获取所有的键所对应值里的键值

Set jhsetkey1 = resource.keys("jhsetkey");

for (String result : jhsetkey1) {

System.out.println(result);

}

//关闭资源

resource.close();

}

③ 操作list类型数据

/**

* 操作list类型的数据

*/

@Test

public void listOperate(){

Jedis resource = jedisPool.getResource();

//从左边插入元素

resource.lpush("listkey","listvalue1","listvalue1","listvalue2");

//从右边移除元素

resource.rpop("listkey");

//获取所有值

List listkey = resource.lrange("listkey", 0, -1);

for (String s : listkey) {

System.out.println(s);

}

//关闭资源

resource.close();

}

④ 操作set类型的数据

/**

* set类型数据操作

*/

@Test

public void setOperate(){

Jedis resource = jedisPool.getResource();

//添加数据

resource.sadd("setkey", "setvalue1", "setvalue1", "setvalue2", "setvalue3");

//查询数据

Set setkey = resource.smembers("setkey");

for (String s : setkey) {

System.out.println(s);

}

//移除掉一个数据

resource.srem("setkey","setvalue3");

// 关闭资源

resource.close();

}

<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();

}

}

好了,本次的分享内容就到这里,受益或感兴趣的朋友记得点赞加关注,下一篇博客将为大家介绍Redis的持久化方案!敬请期待|ू・ω・` )

本文同步分享在 博客“Alice菌”(CSDN)。

如有侵权,请联系 support@oschina.cn 删除。

本文参与“OSC源创计划”,欢迎正在阅读的你也加入,一起分享。

java redis快速入门_快速入门Redis系列(3)——Redis的JavaAPI操作(附带练习)相关推荐

  1. redis 经纬度_【SpringBoot DB 系列】Redis 高级特性之 GEO

    [SpringBoot DB 系列]Redis 高级特性之 GEO GEO 用于存储地理信息,最直观的就是我们日常使用的地图 app 中,如果我想查询我所在地的周边餐饮,就可以利用 geo 中的以(x ...

  2. java redis使用卡死_记一次找因 redis 使用不当导致应用卡死 bug 的过程

    原标题:记一次找因 redis 使用不当导致应用卡死 bug 的过程 作者:小木 my.oschina.net/xiaomu0082/blog/2990388 首先说下问题现象:内网sandbox环境 ...

  3. springboot redis 刷新时间_「SpringBoot实战」SpringCache + Redis实现数据缓存

    关注我的微信公众号:后端技术漫谈 不定期推送关于后端开发.爬虫.算法题.数据结构方面的原创技术文章,以及生活中的逸闻趣事. 我目前是一名后端开发工程师.主要关注后端开发,数据安全,网络爬虫,物联网,边 ...

  4. mac下查看redis安装路径_干货!win10环境下Redis安装、启动教程

    " 本文详细介绍win10环境下Redis的安装.启动方法." 01 - 下载 Redis项目不正式支持Windows.但是,Microsoft开放技术小组开发和维护一个Windo ...

  5. java azure blob 查询_快速入门:适用于 Java 的 Azure Blob 存储客户端库 v8 | Microsoft Docs...

    您现在访问的是微软AZURE全球版技术文档网站,若需要访问由世纪互联运营的MICROSOFT AZURE中国区技术文档网站,请访问 https://docs.azure.cn. 快速入门:使用 Jav ...

  6. java fft 频谱算法_快速傅里叶变换(FFT)算法原理及代码解析

    FFT与DFT关系: 快速傅里叶变换(Fast Fourier Transform)是离散傅里叶(DFT)变换的一种快速算法,简称FFT,通过FFT可以将一个信号从时域变换到频域:FFT(快速傅里叶变 ...

  7. java堆 数据结构 堆_快速堆数据结构

    java堆 数据结构 堆 In this tutorial, we'll be discussing and implementing Heap data structures in Swift. 在 ...

  8. java 排班日历_快速简化排班(智能排班)-日历排班

    在前面的文章中,我们详细探讨了传统模式下的排班问题,流程很简单,但有些企业班别较多(比如有20个班别),而且每个班别都需要设定一个周末和假日班(这就变成了60个甚至更多班别,比如有些班别周六和周日的判 ...

  9. java抢红包并发设计_高并发开发之-使用redis抢红包设计

    假设一个需求,在某个预告活动中准备了10w个红包,100w人在某个时间点去开抢,每人只能抢1次,如何保证性能和准确性,下面我给出我的一个设计方案,抛砖引玉分析瓶颈查询用户是否已参与过活动 获取一个可抢 ...

最新文章

  1. 爬虫python需要什么软件-学python爬虫能做什么
  2. WPF基础入门 - 1
  3. tkmybatis 子查询_dnssearch 子域名枚举工具
  4. Maven中使用tomcat:run出现错误org.eclipse.jdt.internal.compiler.classfmt.ClassFormatException
  5. 【Linux】一步一步学Linux——mktemp命令(263)
  6. g4e基础篇#6 了解Git历史记录
  7. 前端开发知识点解答-VUE-面试
  8. 的标题形状工具在哪里_一分钟教你做一款让人眼前一亮的标题!你想学吗?「Word技巧」...
  9. ssl证书的生成与签名
  10. 14款CSS3图片层叠切换动画
  11. django注册登录
  12. 【股票】成交量VOL隐含的交易秘密
  13. 微信内置浏览器中如何实现点击电话号码自动到拨号页面?
  14. 关于FileZilla连接FTP站点上传下载文件
  15. 树莓派源码安装glib
  16. MySQL中date、datetime、timestamp、time、year的区别
  17. 存储基础:DAS/NAS/SAN存储类型及应用
  18. 大学计算机实验报告答案 南京理工大学,南京理工大学微机实验报告.doc
  19. 计算机数值模拟软件有哪些,数值模拟软件介绍及使用.ppt
  20. 真人演示冒泡排序算法

热门文章

  1. google-云计算梦想
  2. 微信小程序 格式化金额 .wxs文件
  3. 【笔记】Unity优化 基础知识
  4. 磁盘扩展和缩减知识汇总
  5. 大快城市智慧停车管理系统架构体系介绍
  6. 迅雷首席架构师刘智聪:微信小程序的架构与系统设计的几点观感
  7. 第18课:生活中的外观模式——学妹别慌,学长帮你
  8. 边缘计算社区已加入群聊,思否 AIGC Hackathon 扩列
  9. Android之NFC读写操作
  10. 4、《Jmeter基础篇》 从此善用逻辑控制器(2)