快速入门Redis系列(3)——Redis的JavaAPI操作(附带练习)
作为快速入门Redis系列的第三篇博客,本篇为大家带来的是Redis的JavaAPI操作。
码字不易,先赞后看!
文章目录
- Redis的JavaAPI操作
- <1> 创建maven工程并导入jar包
- <2> 连接以及关闭redis客户端
- <3> Redis的JavaAPI操作
- ① 操作string类型数据
- ② 操作hash列表类型数据
- ③ 操作list类型数据
- ④ 操作set类型的数据
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>
<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<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(); }
③ 操作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(); }
④ 操作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(); }
<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菌 原创文章 276获赞 2834访问量 55万+ 关注 私信
- 快速入门Kafka系列(6)——Kafka的JavaAPI操作
- hbase快速入门-- java api 操作
- Java中使用Jedis操作Redis—Redis快速入门
- _00012 Redis 安装以及快速入门之二(JavaAPI,一致性哈希)
- 大数据入门教程系列之Hive的Java API 操作
- hbase快速入门-- java api 操作
- Mongodb快速入门之使用Java操作Mongodb
- java操作redis。jedis使用api
- Redis快速入门:安装、配置和操作
- java多线程系列-----1.多线程快速入门,线程安全,多线程之间通讯,并发包,并发队列,线程池原理,锁的深度化
- Mongodb快速入门之使用Java操作Mongodb
- Java api 入门教程 之 JAVA的文件操作
- hadoop系列之五JavaAPI操作HDFS文本系统
- 快速入门Redis系列(6)——Redis当中的Sentinel架构
- Java 8 – Stream API 快速入门
- .Net程序员玩转Android系列之一~Java快速入门
- MongoDB快速入门学习笔记8 MongoDB的java驱动操作
- Spark RDD/Core 编程 API入门系列之动手实战和调试Spark文件操作、动手实战操作搜狗日志文件、搜狗日志文件深入实战(二)
- Apache Zookeeper 快速入门及API基础CRUD操作
- ElasticSearch的Java Api基本操作入门指南