1. 什么是 Jedis
Jedis是Redis官方推荐的Java连接开发工具。
2. 使用
-
导入依赖
<!-- redis 的包 --> <!-- https://mvnrepository.com/artifact/redis.clients/jedis --> <dependency> <groupId>redis.clients</groupId> <artifactId>jedis</artifactId> <version>3.2.0</version> </dependency> <!-- fastjson --> <!-- https://mvnrepository.com/artifact/com.alibaba/fastjson --> <dependency> <groupId>com.alibaba</groupId> <artifactId>fastjson</artifactId> <version>1.2.73</version> </dependency>
-
测试链接
使用的三步骤 :连接数据库 → 操作命令 → 断开连接
/** * 测试连接 */ public class TestPing { public static void main(String[] args) { // 1. 获取 Jedis 对象,连接数据库 // 主机号就是 Linux 的主机号 Jedis jedis = new Jedis("192.168.142.120",6379); // jedis 所有命令,就是在 linux 中使用的所有的命令 // 2. 测试链接,操作命令 System.out.println(jedis.ping()); } }
点进 Jedis 类
-
测试结果
连接成功 -
简单操作一下前面学的命令
/** * 简单测试一下 String 的命令 */ public class TestKey { public static void main(String[] args) { Jedis jedis = new Jedis("192.168.142.120",6379); System.out.println("清空数据库 —— " + jedis.flushAll()); System.out.println("判断某个键是否存在 —— "+jedis.exists("name")); System.out.println("新增<name:name> ——"+jedis.set("name","name")); System.out.println("新增<password:password> ——"+jedis.set("password","password")); System.out.println("所有的键 ——" +jedis.keys("*")); System.out.println("删除 password 的键值对 ——"+jedis.del("password")); System.out.println("获取 name 的值 ——"+jedis.get("name")); System.out.println("清空数据库 —— " + jedis.flushAll()); } }
执行结果
3. Jedis 操作事务
-
事务正常执行,没有异常
/** * 操作事务 */ public class TestTX { public static void main(String[] args) { Jedis jedis = new Jedis("192.168.142.120",6379); // 伪造数据 JSONObject jsonObject = new JSONObject(); jsonObject.put("name","hehe"); jsonObject.put("sex","male"); // 先清空数据库 jedis.flushDB(); // 开启事务 Transaction multi = jedis.multi(); // 进行事务操作 // 因为 redis 的事务没有原子性,所以这里使用 try-catch 来保证原子性 try { multi.set("user1", jsonObject.toJSONString()); multi.set("user2", jsonObject.toJSONString()); multi.set("user3", jsonObject.toJSONString()); multi.exec(); } catch (Exception e) { //一旦上面的代码抛出异常,就放弃事务 multi.discard(); e.printStackTrace(); } finally { // 输出数据 System.out.println(jedis.get("user1")); // 关闭连接 jedis.close(); } } }
执行结果
-
事务执行发生异常
模拟一个运行时异常
单纯在 Redis 的事务中,在发生运行时异常时,是保证不了原子性的,也就是只有发生异常的命令报错,事务中其他命令依旧可以正常执行。
但是在这里加入了 try-catch 后一旦有异常,就放弃整个事务,就保证了事务的原子性