五、Jedis
使用Java操作Redis
什么是Jedis
Jedis 是 Redis 官方推荐的 java 连接开发工具!使用Java操作Redis中间件!如果要使用 java 操作 redis,需要对redis有一定基础
- 导入对应的依赖
<!--导入jedis包-->
<!-- https://mvnrepository.com/artifact/redis.clients/jedis -->
<dependency>
<groupId>redis.clients</groupId>
<artifactId>jedis</artifactId>
<version>4.2.1</version>
</dependency>
<!--fastjson-->
<!-- https://mvnrepository.com/artifact/com.alibaba/fastjson -->
<dependency>
<groupId>com.alibaba</groupId>
<artifactId>fastjson</artifactId>
<version>1.2.80</version>
</dependency>
- 编码测试
- 连接数据库
- 操作命令
- 断开连接
测试连接
package com.vinjcent;
import redis.clients.jedis.Jedis;
public class TestPing {
public static void main(String[] args) {
//1、new Jedis 对象即可
Jedis jedis = new Jedis("127.0.0.1",6379);
// jedis 所有的方法就是之前所学的所有指令
System.out.println(jedis.ping());
}
}
5.1 常用的API
String、List、Set、Hash、Zset
简单的string测试用例
package com.vinjcent;
import redis.clients.jedis.Jedis;
import java.util.Set;
public class TestKey {
public static void main(String[] args) {
// 连接redis的ip和端口
Jedis jedis = new Jedis("127.0.0.1",6379);
System.out.println("清空数据: "+ jedis.flushDB());
System.out.println("判断某个键是否存在: "+jedis.exists("username"));
System.out.println("新增<`username`,`vinjcent`>的键值对: "+jedis.set("username","vinjcent"));
System.out.println("新增<`password`,`7758258`>的键值对: "+jedis.set("password","7758258"));
System.out.println("系统中所有的键如下: ");
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());
}
}
5.2 事务
事务测试用例
package com.vinjcent;
import com.alibaba.fastjson.JSONObject;
import redis.clients.jedis.Jedis;
import redis.clients.jedis.Transaction;
public class TransactionTest {
public static void main(String[] args) {
Jedis jedis = new Jedis("127.0.0.1",6379);
jedis.flushDB();
JSONObject jsonObject = new JSONObject();
jsonObject.put("hello","world");
jsonObject.put("name","vinjcent");
//开启事务
Transaction multi = jedis.multi();
String result = jsonObject.toJSONString();
try {
multi.set("user1",result);
multi.set("user2",result);
multi.set("user3",result);
int i = 1/0; //代码抛出异常,执行失败
multi.exec();
} catch (Exception e) {
//失败则放弃事务
multi.discard();
e.printStackTrace();
}finally {
System.out.println(jedis.get("user1"));
System.out.println(jedis.get("user2"));
System.out.println(jedis.get("user3"));
//关闭连接
jedis.close();
}
}
}