Redis学习笔记(四)Java使用Jedis操作Redis

本文最后更新于:December 3, 2021 pm

Redis 是当前互联网世界最为流行的 NoSQL(Not Only SQL)数据库。Redis 是一个开源的使用 ANSI C 语言编写、遵守 BSD 协议、支持网络、可基于内存、分布式、可选持久性的键值对(Key-Value)存储数据库,并提供多种语言的 API。Redis 具备一定持久层的功能,也可以作为一种缓存工具。对于 NoSQL 数据库而言,作为持久层,它存储的数据是半结构化的,这就意味着计算机在读入内存中有更少的规则,读入速度更快。Redis 通常被称为数据结构服务器,因为值(value)可以是字符串(String)、哈希(Hash)、列表(list)、集合(sets)和有序集合(sorted sets)等类型。

目录

配置Jedis

如果不用maven,则需要下载jar包。
官网下载地址 (因为是在国外,所以有时候需要科学上网才能访问。)
国内下载地址

创建一个maven项目,导入:

1
2
3
4
5
6
7
<dependencies>
<dependency>
<groupId>redis.clients</groupId>
<artifactId>jedis</artifactId>
<version>3.6.3</version>
</dependency>
</dependencies>

1.验证

连接前,需要先将本地的redis开启。

1
2
3
4
5
6
7
8
public class JedisTest {
public static void main(String[] args) {
Jedis jedis = new Jedis("localhost",6379);
System.out.println(jedis.ping());
}
}
//输出
PONG //连接成功

1.1 注意事项

  1. 默认情况bind=127.0.0.1 只能接受本机的访问请求。不写的情况下,无限制接受任何IP地址的访问。如果你是用的服务器进行连接,则需要到服务器上的配置文件redis.conf中将此行注释即可。

  2. 如果开启了 protected-mode,那么在没有设定bind ip 且没有设密码的情况下,Redis只允许接受本机的相应,也不能远程连接。需要将其默认值 yes 改为 no。

修改保存配置后,需要停止服务,重启

  1. 如果是在虚拟机中,则需要将虚拟机的防火墙关闭。
    1
    2
    systemctl status firewalld //查看防火墙状态
    systemctl stop firewalld //关闭防火墙

2.Jedis操作

2.1 入门示例

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
    @Test
public void demo1(){
Jedis jedis = new Jedis("localhost",6379);
jedis.set("loong","234");
jedis.set("dingdingche","23");
jedis.set("DragonOne","23");
System.out.println(jedis.exists("loong"));
System.out.println(jedis.ttl("loong"));
System.out.println(jedis.get("DragonOne"));
Set<String> keys = jedis.keys("*");
System.out.println("大小:"+keys.size());
for (String it : keys) {
System.out.println(it);
}
}
//输出
true
-1
23
大小:3
dingdingche
DragonOne
loong

同时设置多个key-value。

1
2
3
jedis.mset("k1","v1","k2","v2");
List<String> mget = jedis.mget("k1", "k2");
System.out.println(mget);

2.2 List

1
2
3
4
5
6
7
8
9
10
11
@Test
public void demo1() {
Jedis jedis = new Jedis("127.0.0.1", 6379);
jedis.lpush("site-list", "long");
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));
}
}