Redis学习笔记-Jedis
什么是Jedis
是Redis官方推荐的Java连接开发工具,使用Java操作Redis的中间件
-
导入对应的依赖
<!--导入jedis的包--> <dependencies> <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.62</version> </dependency> </dependencies>
-
编码测试
-
连接数据库
public static void main(String[] args) { // 1.new Jedis对象即可 Jedis jedis = new Jedis("127.0.0.1",6379); // jedis 所有的命令就是我们之前学习的所有指令 System.out.println(jedis.ping()); }
-
操作命令
public class TestKey { public static void main(String[] args) { Jedis jedis = new Jedis("127.0.0.1",6379); System.out.println("清空数据:" + jedis.flushDB()); System.out.println("判断是否存在某个键:" + jedis.exists("username")); System.out.println("新增键值对用户:" + jedis.set("username","alb")); System.out.println("新增键值对密码:" + jedis.set("password","123456")); System.out.println("查看所有的键"); Set<String> keys = jedis.keys("*"); System.out.println(keys); System.out.println("查看键下的值(密码):" + jedis.get("password")); System.out.println("重命名键(username):" + jedis.rename("username","newname")); System.out.println("按索引查询:" + jedis.select(0)); System.out.println("返回当前数据库中key的数目:" + jedis.dbSize()); } }
public class TestString { public static void main(String[] args) { Jedis jedis = new Jedis("127.0.0.1",6379); jedis.flushDB(); System.out.println("添加数据:" + jedis.set("k1","v1")); System.out.println("添加数据:" + jedis.set("k2","v2")); System.out.println("添加数据:" + jedis.set("k3","v3")); System.out.println("添加数据:" + jedis.set("k4","v4")); System.out.println("删除键k2:" + jedis.del("k2")); System.out.println("获取键k2的值:" + jedis.get("k2")); System.out.println("修改键k1的值:" + jedis.set("k1","v1Changed")); System.out.println("获取键k1的值:" + jedis.get("k1")); System.out.println("在k3后面加入值:" + jedis.append("k3","append")); System.out.println("获取k3的值:" + jedis.get("k3")); System.out.println("增加多个键值对:" + jedis.mset("k5","v5","k6","v6","k7","v7")); System.out.println("获取多个键值对:" + jedis.mget("k1","k3","k4","k5")); System.out.println("删除多个键值对:" + jedis.del("k1","k3","k4")); System.out.println("---------------若无则新增键值对----------------"); System.out.println(jedis.flushDB()); System.out.println(jedis.setnx("k1","v1")); System.out.println(jedis.setnx("k2","v2")); System.out.println(jedis.setnx("k2","v2-new")); System.out.println("k1:" + jedis.get("k1")); System.out.println("k2:" + jedis.get("k2")); System.out.println("-----------新增键值对并设置有效时间---------"); System.out.println(jedis.setex("k7",5,"v7")); System.out.println(jedis.get("k7")); try { TimeUnit.SECONDS.sleep(6); } catch (InterruptedException e) { e.printStackTrace(); } System.out.println(jedis.get("k7")); System.out.println("-----------获取原值,更新值----------------"); System.out.println(jedis.getSet("k2","v2getset")); System.out.println(jedis.get("k2")); System.out.println("获得k2的值的子串:" + jedis.getrange("k2",2,4)); } }
-
断开连接
-
Jedis中所有的api就是对应Redis的命令,没有变化
事务
public class TestTX {
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","alb");
// 开启事务
Transaction multi = jedis.multi();
String res = jsonObject.toJSONString();
try {
multi.set("user1",res);
multi.set("user2",res);
multi.exec(); // 如果成功则执行事务
} catch (Exception e) {
multi.discard(); // 如果失败则放弃事务
e.printStackTrace();
} finally {
System.out.println(jedis.get("user1"));
System.out.println(jedis.get("user2"));
jedis.close(); // 关闭连接
}
}
}