开启掘金成长之旅!这是我参与「掘金日新计划 · 12 月更文挑战」的第17天,点击查看活动详情
开始在 Java 中使用 Redis 前, 我们需要确保已经安装了 redis 服务及 Java redis 驱动,且你的机器上能正常使用 Java
mysql可以连接java进行crud操作,那么同样作为数据库的redis是不是也可以通过Java操作呢?答案是肯定的。
实例
import redis.clients.jedis.Jedis;
public class RedisJava {
public static void main(String[] args) {
//连接本地的 Redis 服务
Jedis jedis = new Jedis("localhost");
// 如果 Redis 服务设置了密码,需要下面这行,没有就不需要
// jedis.auth("123456");
System.out.println("连接成功");
//查看服务是否运行
System.out.println("服务正在运行: "+jedis.ping()); } }
编译以上 Java 程序,确保驱动包的路径是正确的。
下面我们一起来看看怎么通过Java操作吧。
1.创建maven文件,目录如下
2.编写pim.xml
Redis 官方推荐使用 Jedis 操作 Redis。 Jedis Client 是 Redis 中一个面向 Java 的客户端,引入的 jar 包的库文件实现了对 Redis 各类 API 进行封装调用。
在 pom.xml 导入 Jedis Client 的依赖,同时将已有 Junit 测试依赖的版本修改为 4.13.2 ,代码如下所示 👇:
<!-- 导入 jedis 依赖 -->
<dependency>
<groupId>redis.clients</groupId>
<artifactId>jedis</artifactId>
<version>3.6.3</version>
</dependency>
为了在测试时,控制台不会出现错误日志信息,可以在 pom.xml 文件中添加日志相关的依赖:
3.在 test/java/org/yamya 下新建一个 test 目录,在该目录下新建一个 RedisTest 类,并添加相应的生成 Jedis 对象的方法
connection() 方法是通过连 Redis 服务器(IP 和端口),生成 Jedis 对象。 close() 方法是用来释放 Jedis 对象的。
在 RedisTest 测试类添加方法用来测试,是否成功连接了 Redis 服务器,代码如下所示 👇:
@Test
public void testConn(){
System.out.println(jedis.ping());
}
到这里,连接成功,接下来进行相关操作
string 类型 API
通过前面的学习我们知道 Redis 有五种数据类型,这五种数据类型对应的 Redis 中的操作各不相同,除此之外,对于键(key)操作也有一些命令。那么 Jedis 对象是否也提供了这些命令对应的 API 呢?
答案:必须的。Jedis 对象也提供了丰富的 API 来操作不同的数据类型以及键(key)。
示例:
在 RedisTest 测试类添加两个方法,分别用来新增一个 string 类型数据项和新增多个 string 类型数据项,代码如下所示 👇:
一次新增一个键值对:
返回值:ok
一次新增多个键值对:
@Test
public void testInsertMany(){
// 新增多个键值对
String result = jedis.mset("age","18","sex","man","address","zhejianghangzhou");
System.out.println(result);
}
新增成功则返回 ok
对应的获取value:
一次获取一个 key 对应的 value :
输出结果:zhuangwuji
一次获取多个 key 对应的 value:
@Test
public void testGetManyKeyValue(){
// 一次获取多个指定 key 的 value
List<String> values = jedis.mget("name","age","sex","address");
for (String v : values) {
System.out.println(v);
}
}
查询结果,如下图所示:
list 类型 API
在 RedisTest 测试类添加一个方法,用来新增 list 类型的数据项,代码如下所示 :
long result = jedis.lpush("list1","zhangsan","yangguo","xiaolongnv","zhangwuji","赵敏");
用来获取 list 中的数据项,代码如下所示 👇:
List<String> values = jedis.lrange("list1",0,-1);
for (String v : values) {
System.out.println(v);
}
用来删除 list 中的数据项
long l = jedis.lrem("list1",1,"赵敏");
}
用来修改 list 中的数据项
set 类型 API
用来新增 set 类型的数据项: long result = jedis.sadd("set1","zhangsan","yangguo","xiaolongnv","zhangwuji","赵6");
获取 set 类型的数据项
Set<String> values = jedis.smembers("set1");
for (String v : values) {
System.out.println(v);
}
用来删除 set 中的数据项:long l = jedis.srem("set1","zhangwuji");
zset 类型 API
用来新增 zset 类型的数据项
用来获取 zset 类型的数据项
用来删除 set 中的数据项
hash 类型 API
添加:String result = jedis.hmset("hash1", param);
获取值:Map<String,String> hash = jedis.hgetAll("hash1");
删除:long l = jedis.hdel("hash1", "phone","email");
常用键:
type() 返回的结果可能有:set、hash、list、string、zset、none。
总结:
前面可以发现,关键就是jedis.xx()方法。对应这些基本方法,和直接数据库里面crud关键字一样的,可以进行迁移。