Redis(十二)——Jedis的概述和使用
1、Jedis概述
Jedis 是Redis官方推荐的Java连接开发工具。
Jedis 是一个非常小且智能的Redis java客户端,并且易于使用。
Jedis 与redis 2.8.x、3.x.x及以上版本完全兼容。
如何下载 Jedis
1、下载最新版本使用
下载地址:http://github.com/redis/jedis/releases/
2、导入依赖使用:
<dependency>
<groupId>redis.clients</groupId>
<artifactId>jedis</artifactId>
<version>3.6.3</version>
</dependency>
2、使用Jedis
连接 Redis 服务
1、新建一个maven项目,导入依赖:
<!-- https://mvnrepository.com/artifact/redis.clients/jedis -->
<dependency>
<groupId>redis.clients</groupId>
<artifactId>jedis</artifactId>
<version>3.6.3</version>
</dependency>
<!-- https://mvnrepository.com/artifact/com.alibaba/fastjson -->
<dependency>
<groupId>com.alibaba</groupId>
<artifactId>fastjson</artifactId>
<version>1.2.78</version>
</dependency>
2、启动本地 Redis 服务,启动完成!

3、连接本地 Redis 服务
public class JedisTest01 {
public static void main(String[] args) {
Jedis jedis = new Jedis("127.0.0.1",6379);//连接本地redis服务
System.out.println(jedis.ping()); //PONG
}
}
连接成功!
补充:连接远程 Redis 的步骤:
一. 配置redis.conf
1. 设置访问redis的密码:requirepass 要设置密码
2. 注释bind 127.0.0.1
3. 重启redis-server服务,进入redis后要先验证密码,用这个命令:auth 密码 ,然后ping一下看有没有配置成功
二 . idea访问时添加auth密码
Jedis jedis = new Jedis(服务器的外网ip,6379);
jedis.auth(redis的密码);
System.out.println(jedis.ping());
输出PONG的话就成功了
测试 Redis 实例
Redis Keys 实例:
public class JedisTest01 {
public static void main(String[] args) {
Jedis jedis = new Jedis("localhost",6379);//连接本地redis服务
System.out.println("清空当前数据库数据:"+jedis.flushDB());
System.out.println("判断某个键是否存在:"+jedis.exists("username"));
System.out.println("设置键值对:"+jedis.set("name","wanli"));
System.out.println("设置键值对:"+jedis.set("pwd","123456"));
System.out.println("设置键值对:"+jedis.set("age","男"));
System.out.println("查看所有key:"+jedis.keys("*"));
System.out.println("删除key:"+jedis.keys("pwd"));
System.out.println("查看key的类型:"+jedis.type("name"));
System.out.println("随机返回一个key:"+jedis.randomKey());
System.out.println("重命名key:"+jedis.rename("name","username"));
System.out.println("按下标查询key:"+jedis.select(0));
System.out.println("返回当前数据库key的数目:"+jedis.dbSize());
System.out.println("清空所有数据库的数据:"+jedis.flushAll());
}
}
运行结果:

Redis String(字符串) 实例:
public class JedisTest02 {
public static void main(String[] args) {
Jedis jedis = new Jedis("localhost",6379);//连接本地redis服务
System.out.println("==========增加数据===========");
System.out.println(jedis.set("k1","v1"));
System.out.println(jedis.set("k2","v2"));
System.out.println(jedis.set("k3","v3"));
System.out.println("在k2后面追加值:"+jedis.append("key2","LAST"));
System.out.println("k2的值:"+jedis.get("key2"));
System.out.println("增加多个k-v:"+jedis.mset("k4","v4","k5","v5"));
System.out.println("获取多个k-v:"+jedis.mset("k4","k5"));
System.out.println("删除多个k-v:"+jedis.del("k4","k5"));
System.out.println(jedis.flushDB());
System.out.println("==========新增键值对防止覆盖原先值===========");
System.out.println(jedis.setnx("k1","v1"));
System.out.println(jedis.setnx("k2","v2"));
System.out.println(jedis.setnx("k2","value2"));
System.out.println(jedis.get("k1"));
System.out.println(jedis.get("k2"));
System.out.println("==========新增键值对并设置过期时间===========");
System.out.println(jedis.setex("k3",5,"v3"));
System.out.println(jedis.get("k3"));
try {
TimeUnit.SECONDS.sleep(6);
} catch (InterruptedException e) {
e.printStackTrace();
}
System.out.println(jedis.get("k3"));
System.out.println("==========获取原来值,设置为新值===========");
System.out.println(jedis.getSet("k2","getsetv2"));
System.out.println(jedis.get("k2"));
System.out.println("获取指定范围的字符串:"+jedis.getrange("k2",2,5));
}
}
运行结果:

Redis List(列表) 实例:
public class JedisTest03 {
public static void main(String[] args) {
Jedis jedis = new Jedis("localhost",6379);//连接本地redis服务
System.out.println("连接成功");
//存储数据到列表中
jedis.lpush("site-list", "Runoob");
jedis.lpush("site-list", "Google");
jedis.lpush("site-list", "Taobao");
// 获取存储的数据并输出
List<String> list = jedis.lrange("site-list", 0 ,2);
for(int i=0; i<list.size(); i++) {
System.out.println("列表项为: "+list.get(i));
}
}
}
运行结果:

Jedis 操作事务
1、事务正常执行
public class JedisTest04 {
public static void main(String[] args) {
Jedis jedis = new Jedis("localhost",6379);//连接本地redis服务
JSONObject object = new JSONObject();
object.put("name","shenming");
object.put("password","123456");
Transaction multi = jedis.multi();//开启事务
String string = object.toJSONString(); //将java对象转换为json格式
try {
multi.set("user1",string); //命令入队
multi.set("user2",string);
multi.exec(); //执行事务
} catch (Exception e) {
multi.discard(); //如果有异常就放弃事务
e.printStackTrace();
} finally {
System.out.println(jedis.get("user1"));
System.out.println(jedis.get("user2"));
jedis.close(); //断开连接
}
}
}
2、事务运行时异常
在命令入队时加上 int i = 10 / 0
int i = 10 / 0 ;

如上图,因为存在运行时异常,事务执行失败。
本文介绍了Java连接Redis的工具Jedis,包括下载、导入Maven依赖及基本使用方法。通过示例展示了如何连接Redis服务,执行基本的键值对操作,如设置、获取、删除数据,以及使用事务。还提供了连接远程Redis的配置方法。
301

被折叠的 条评论
为什么被折叠?



