七天玩转Redis | 打卡第5天 Jedis上手操作!

1005908 1005908 墨衍会员 · AI 创作全网分发 墨衍智能分发 通过墨衍一键同步至各平台 可同步平台 CSDN微信公众号微博知乎掘金百家号博客园抖音小红书 你的文章也可以这样分发 墨衍会员 ¥399起/年,写一次发全网 我也要 + 加入社区

什么是jedis是Redis官方推荐的java连接开发工具!使用java操作Redis 中间件!如果你要使用java操作redis,那么一定要对Jedis十分的熟悉!

测试

1、导入对应的依赖

<dependencies>
         <!-- 导入jedis包 -->
         <dependency>
             <groupId>redis.clients</groupId>
             <artifactId>jedis</artifactId>
             <version>3.2.0</version>
         </dependency>
 ​
         <!-- fastjson -->
         <dependency>
             <groupId>com.alibaba</groupId>
             <artifactId>fastjson</artifactId>
             <version>1.2.28</version>
         </dependency>
</dependencies>

2、编码测试:

  • 连接数据库

  • 操作命令

  • 断开连接

package com.zxy; ​
 import redis.clients.jedis.Jedis;
 ​
 public class TestPing {
     public static void main(String[] args) {
         //1、new Jedis 对象即可
         /*
         new Jedis("127.0.0.1",6379);
         第一个参数:访问地址
         第二个参数:端口号
          */
         Jedis jedis = new Jedis("127.0.0.1",6379);
         System.out.println(jedis.ping());
     }
 }
输出:

常用的API

对key操作的命令

public static void main(String[] args) {
     //1、new Jedis 对象即可
     /*
     new Jedis("127.0.0.1",6379);
     第一个参数:访问地址
     第二个参数:端口号
      */
     Jedis jedis = new Jedis("127.0.0.1",6379);

     System.out.println(jedis.ping());
 ​
     System.out.println("清空数据:"+jedis.flushDB());
     System.out.println("判断某个键是否存在:"+jedis.exists( "username"));
     System.out.println("新增< 'username' , 'kuangshen'>的键值对:"+jedis.set( "username","xuyang"));
     System.out.println("新增< 'password' , ' password'>的键值对:"+jedis.set( "password" , "password"));
     System.out.print("系统中所有的键如下: ");
     Set<String> keys = jedis.keys( "*");
     System.out.println(keys) ;
     System.out.println("删除键password: "+jedis.del("password" )) ;
     System.out.println("判断键password是否存在: "+jedis.exists("password"));
     System.out.println("查看键username所存储的值的类型: "+jedis.type("username"));
     System.out.println("随机返回key空间的一个: "+jedis.randomKey());
     System.out.println("重命名key: "+jedis.rename( "username" ,"name" ));
     System.out.println("取出改后的name: "+jedis.get( "name" ) ) ;
     System.out.println("按索引查询:"+jedis.select( 0));
     System.out.println("删除当前选择数据库中的所有key: "+jedis.flushDB());
     System.out.println("返回当前数据库中key的数目:"+jedis.dbSize());
     System.out.println("删除所有数据库中的所有key: "+jedis.flushAll());
 }

对String操作的命令

public static void main(String[] args) {
 ​
         Jedis jedis = new Jedis("127.0.0.1",6379);

         System.out.println(jedis.ping());
         System.out.println("======================增加数据=======================");
         System.out.println(jedis.set( "key1" , "value1"));
         System.out.println(jedis.set( "key2" , "value2"));
         System.out.println("删除键key2 : "+jedis.del("key2"));
         System.out.println("获取键key2 : "+jedis.get( "key2" ));
         System.out.println("修改key1 : "+jedis.set( "key1","value1Changed"));
         System.out.println("获取key1的值: "+jedis.get("key1" )) ;
         System.out.println("在key3后面加入值: "+jedis.append("key3" ,"End"));
         System.out.println( "key3的值:"+jedis.get( "key3")) ;
         System.out.println("增加多个键值对:"+jedis.mset("key01" , "value1" , "key02" ,"value02","key03","value03"));
         System.out.println("获取多个键值对:"+jedis.mget("key01" , "key02" , "key03"));
         System.out.println("删除多个键值对:"+jedis.del("key01" , "key02"));
         System.out.println("获取多个键值对:"+jedis.mget("key01" , "key02" , "key03"));
         
         jedis.flushDB();
         System.out.println("==========新增键值对防止覆盖原先值=========");
         System.out.println(jedis.setnx( "key1", "value1"));
         System.out.println(jedis.setnx( "key2", "value2-new"));
         System.out.println(jedis.get( "key1" ));
         System.out.println(jedis.get ( "key2" ));
 ​
         System.out.println("==========新增键值对并设置有效时间============");
         System.out.println(jedis.setex("key3", 2,"value3"));
         System.out.println(jedis.get( "key3" ));
         try{
             TimeUnit.SECONDS.sleep(3 );
         }catch (InterruptedException e) {
             e.printStackTrace();
         }
         System.out.println(jedis.get ( "key3" ) ) ;
         System.out.println("==========获取原值,更新为新值========");
         System.out.println(jedis.getSet( "key2", "key2GetSet"));
         System.out.println(jedis.get ( "key2" ));
         System.out.println("获得key2的值的字串:"+jedis.getrange("key2",2,4));
     }

对List操作的命令

 public static void main(String[] args) {
         Jedis jedis = new Jedis("127.0.0.1",6379);
         jedis.flushDB();
         System.out.println("========添加一个list========" );
         jedis.lpush(" collections", "ArrayList", "Vector", "Stack","HashMap","weakHashMap","LinkedHashMap","");
         jedis.lpush("collections","HashSet");
         jedis.lpush("colllections","TreeSet");
         jedis.lpush("collections","TreeMap");
         //-1代表倒数第一个元素,0代表第一个元素
         System.out.println("collections的内容: "+jedis.lrange("collections",0,-1));
         System.out . println("collections区间0-3的元素:"+jedis.lrange("collections" ,0,3));
         System.out.println( "=============================" );
         //删除列表指定的值,第二个参数为删除的个数(有重复时),后add进去的值先被删,类似于出栈
         System.out .println("删除指定元素个数:"+jedis.lrem("collections",2,"HashMap"));
         System.out.println( " collections的内容: "+jedis.lrange("collections",0,-1));
         //截断元素
         System.out.println("删除下表0-3区间之外的元素:"+jedis.ltrim("collections",0,3));
         System.out.println( " collections的内容: "+jedis.lrange("collections",0,-1));
         System.out .println("collections列表出栈(左端): "+jedis.lpop("collections"));
         System.out.println( "collections的内容: "+jedis.lrange("collections",0,-1));
         System.out .println(" collections添加元素,从列表右端,与lpush相对应:"+jedis.rpush("collections","EnumMap"));
         System.out. println(" collections的内容: "+jedis.lrange("collections",0,-1));
         System.out.println( " collections列表出栈(右端):"+jedis.rpop("collections"));
         System.out.println( " collections的内容: "+jedis.lrange("collections",0,-1));
         System.out.println("修改collections指定下标1的内容: "+jedis.lset("collections",1,"LinkedHashMap"));
         System.out.println(" collections的内容: "+jedis.lrange("collections",0,-1));
         System.out.println("==============================" );
         System.out.println("collections的长度:"+jedis.llen("collections"));
         System.out.println("获取collections下标为2的元素: "+jedis.lindex("collections",2));
         System.out.println( "=============================" );
         jedis.lpush("sortedList","3","6","2","0","7","4");
         System.out .println( " sortedList排序前:"+jedis.lrange("sortedList",0,-1));
         System.out.println(jedis.sort("sortedList"));
         System.out.println("sortedList排序后:"+jedis.lrange("sortedList",0,-1));
     }

对Set操作的命令

public static void main(String[] args) {
         Jedis jedis = new Jedis("127.0.0.1",6379);
         jedis.flushDB();
 ​
         System.out.println(" ===========向集合中添加元素(不重复)===========");
         System.out.println(jedis.sadd("eleSet","e1" , "e2" , " e4" ," e3" , "e0" , " e8" ,"e7" ,"e5"));
         System.out.println(jedis.sadd("eleSet","e6"));
         System.out.println("eleset的所有元素为: "+jedis.smembers("eleSet"));
         System.out.println("删除一个元素e0: "+jedis.srem("eleSet","e0"));
         System.out.println("eleSet的所有元素为: "+jedis.smembers("eleSet"));
         System.out.println("删除两个元素e7和e6: "+jedis. srem("eleSet","e7" , " e6"));
         System.out.println("随机的移除集合中的一个元素:"+jedis.spop("eleSet"));
         System.out.println("eleSet中包含元素的个数:"+jedis.scard("eleSet"));
         System.out.println("e1是否在eleSet中: "+jedis.sismember("eleSet","e1"));
         System.out.println("====================================");
         System.out.println(jedis.sadd("eleSet2","e1" , "e2" , " e4" , "e3" , " eo" , " e8" ));
         //从eleSet1移动元素e1到eleSet3中
         System.out.println("将eleset1中删除e1并存入eleset3中:"+jedis.smove("eleSet1"," eleSet3"," e1"));
         System.out.println("将eleSet1中删除e2并存入eleset3中:"+jedis.smove("eleSet1","eleSet3","e2"));
         System.out.println("eleSet1中的元素:"+jedis.smembers( "eleSet1"));

         System.out.println("==================集合运算===================");
         System.out.println("eleSet1中的元素:"+jedis.smembers("eleSet1"));
         System.out.println("eleSet1和eleSet2的交集: "+jedis.sinter("eleSet1", "eleSet2"));
         System.out.println("eleSet1和eleSet2的并集: "+jedis.sunion("eleSet1" , "eleSet2"));
         System.out.println("eleSet1和eleSet2的差集: "+jedis.sdiff("eleSet1" ,"eleSet2" ));//eleSet1中有eleSet2中没有的元素显示是出来
         jedis.sinterstore("eleSet4","eleSet1","eleSet2");//求交集并将交集保存到eleSet4的集合
         System.out.println("eleSet4中的元素: "+jedis.smembers("eleSet4"));
     }

对Hash操作的命令

public static void main(String[] args) {
 ​
         Jedis jedis = new Jedis("127.0.0.1", 6379);
         jedis.flushDB();
 ​
         Map<String, String> map = new HashMap<>();
         map.put("key1", "value1");
         map.put("key2", "value2");
         //添加名称为hash (key) 的hash元素
         jedis.hmset("hash", map);
         //向名称为hash的hash中添加key为key5,value 为value5元素
         jedis.hset("hash", "key5", "value5");
         //返回hash的全部元素
         System.out.println("散列hash的所有键值对为: " + jedis.hgetAll("hash"));
         //返回hash键值对的全部键
         System.out.println("散列hash的所有键为: " + jedis.hkeys("hash"));
         //返回hash键值对的全部值
         System.out.println("散列hash的所有值为: " + jedis.hvals("hash"));
         System.out.println("将key6保存的值加上一个整数,如果key6不存在则添加key6: " + jedis.hincrBy("hash","key6",6));
         System.out.println("散列hash的所有键值对为: " + jedis.hgetAll("hash"));
         System.out.println("将key6保存的值加上一个整数,如果key6不存在则添加key6: " + jedis.hincrBy("hash","key6",9));
         System.out.println("删除一个或者多个键值对: " + jedis.hdel("hash","key2"));
         System.out.println("散列hash中键值对的个数: " + jedis.hlen("hash"));
         System.out.println("判断hash中是否存在key2: " + jedis.hexists("hash","key2"));
         System.out.println("获取hash中的值: " + jedis.hmget("hash","key2"));
     }

对Zset操作的命令

所有的api命令,就是我们对应的上面学习的指令,一个都没有变化!

明天继续加油!!!

...全文

相关推荐

基于MATLAB的复合弹性模量分析,采用混合法则,结合纤维体积分数变化和图形结果。.zip

1.版本:matlab2014a/2019b/2024b 2.附赠案例数据可直接运行。 3.代码特点:参数化编程、参数可方便更改、代码编程思路清晰、注释明细。 4.适用对象:计算机,电子信息工程、数学等专业的大学生课程设计、期末大作业和毕业设计。

海神之光

基于MATLAB的自适应纯追踪曲线跟踪机器人仿真,采用多路径、自适应速度控制和图形界面可视化。.zip

1.版本:matlab2014a/2019b/2024b 2.附赠案例数据可直接运行。 3.代码特点:参数化编程、参数可方便更改、代码编程思路清晰、注释明细。 4.适用对象:计算机,电子信息工程、数学等专业的大学生课程设计、期末大作业和毕业设计。

海神之光

【数据库优化】通信行业B/O域查询性能提升:基于分区裁剪与覆盖索引的秒级溯源系统实现

内容概要:本文围绕通信行业中海量话单与信令数据的查询性能问题,系统阐述了从全表扫描到秒级响应的数据库优化路径。文章以运营商 cdr_detail 表为案例,揭示了因使用函数操作索引列(如DATE(call_start_time))和深分页(LIMIT offset, size)导致的全表扫描问题,并提出完整的优化方案:通过时间范围RANGE分区实现分区裁剪、构建msisdn与时间的联合覆盖索引、消除索引列函数运算、采用游标分页替代OFFSET等方式,使查询性能从P95 8.3秒降至290毫秒。同时介绍了执行计划分析(EXPLAIN)在调优中的关键作用,并展望了HTAP架构、向量化执行与AI自治优化器等未来方向。; 适合人群:具备一定数据库基础知识,从事通信行业数据开发、DBA或后端研发的技术人员,尤其是面对大规模时序数据查询性能瓶颈的工程师;; 使用场景及目标:①解决营业厅用户详单查询、网间结算对账、VoNR信令分析等高并发、低延迟查询场景下的性能问题;②掌握如何通过分区策略、索引设计和SQL改写实现从全表扫描到精准索引访问的优化落地; 阅读建议:建议结合实际生产环境中的大表查询案例,对照本文的反例与正例进行执行计划对比分析,并在测试环境中实践分区表创建、覆盖索引构建及游标分页改写,深入理解每项优化技巧的实际效果。

智能化咨询

石墨提纯全球市场结构与产业发展趋势分析报告(QYResearch最新研究).docx

石墨提纯全球市场结构与产业发展趋势分析报告(QYResearch最新研究)

行业报告QY

政府科技管理者如何提升科技成果转化政策的精准匹配与执行效率?.docx

政府科技管理者如何提升科技成果转化政策的精准匹配与执行效率?

BIZKEEN
评论
收藏 已收藏
分享
返回顶部