七天玩转Redis | 打卡第5天 Jedis上手操作!
什么是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最新研究)
政府科技管理者如何提升科技成果转化政策的精准匹配与执行效率?.docx
政府科技管理者如何提升科技成果转化政策的精准匹配与执行效率?


