🚨🚨先说明,做下面操作,如果是服务器的话,修改端口 6379 为公开、不设置 redis 密码这些操作都是很危险的!!!一定要设置密码,可以改端口号,只要不是 6379 都行,然后也不要公开,就设置自己本机的 ip 即可,我下面没有做更改。

血的教训,我就被攻击了,可参考: 挖矿?入侵?木马?都是 redis 没设密码搞的鬼

# 1 - Jedis 所需要的 jar 包

<dependency>
<groupId>redis.clients</groupId>
<artifactId>jedis</artifactId>
<version>3.2.0</version>
</dependency>

# 2 - 连接 Redis 注意事项

禁用 Linux 的防火墙:Linux (CentOS7) 里执行命令

查看状态: systemctl status firewalld
关闭: systemctl stop firewalld

redis.conf 中注释掉 bind 127.0.0.1 , 然后 protected-mode no

# 3 - Jedis 连接测试

package com.dabing.jedis;
import org.junit.Test;
import redis.clients.jedis.Jedis;
public class Demo01 {
    /**
     * 测试连接 Redis 服务
     * 能连接上的前提:
     * 1. 关闭 linux 的防火墙
     * 2. 修改 Redis 的配置文件
     *      2.1 将 bind 127.0.0.1 注释掉
     *      2.2 将保护模式关闭,即 protected-mode 的值设置为 no
     */
    @Test
    public void connectionTest(){
        Jedis jedis = new Jedis("192.168.22.3",6379); // 这个主机我瞎写的,写自己的
        String pong = jedis.ping();
        System.out.println("连接成功:"+pong);
        jedis.close();
    }
}

# 4 - 测试相关数据类型

# 7.4.1. Jedis-API: Key

jedis.set("k1", "v1");
jedis.set("k2", "v2");
jedis.set("k3", "v3");
Set<String> keys = jedis.keys("*");
System.out.println(keys.size());
for (String key : keys) {
	System.out.println(key);
}
System.out.println(jedis.exists("k1"));
System.out.println(jedis.ttl("k1"));                
System.out.println(jedis.get("k1"));

# 7.4.2. Jedis-API: String

jedis.mset("str1","v1","str2","v2","str3","v3");
System.out.println(jedis.mget("str1","str2","str3"));

# 7.4.3. Jedis-API: List

List<String> list = jedis.lrange("mylist",0,-1);
for (String element : list) {
	System.out.println(element);
}

# 7.4.4. Jedis-API: set

jedis.sadd("orders", "order01");
jedis.sadd("orders", "order02");
jedis.sadd("orders", "order03");
jedis.sadd("orders", "order04");
Set<String> smembers = jedis.smembers("orders");
for (String order : smembers) {
	System.out.println(order);
}
jedis.srem("orders", "order02");

# 7.4.5. Jedis-API: hash

jedis.hset("hash1","userName","lisi");
System.out.println(jedis.hget("hash1","userName"));
Map<String,String> map = new HashMap<String,String>();
map.put("telphone","13810169999");
map.put("address","atguigu");
map.put("email","abc@163.com");
jedis.hmset("hash2",map);
List<String> result = jedis.hmget("hash2", "telphone","email");
for (String element : result) {
	System.out.println(element);
}

7.4.6. Jedis-API: zset

jedis.zadd("zset01", 100d, "z3");
jedis.zadd("zset01", 90d, "l4");
jedis.zadd("zset01", 80d, "w5");
jedis.zadd("zset01", 70d, "z6");
Set<String> zrange = jedis.zrange("zset01", 0, -1);
for (String e : zrange) {
	System.out.println(e);
}

# 5- 我滴实操

  1. 写 test 跟上边的一样,呐,连接超时

image-20220821201445710

  1. 关防火墙、改保护模式为 no、注释掉 bind 127.0.0.1
1、firewalld的基本使用
启动: systemctl start firewalld
关闭: systemctl stop firewalld
查看状态: systemctl status firewalld
开机禁用 : systemctl disable firewalld
开机启用 : systemctl enable firewalld
2. vi redis.conf 
3. 启动redis-server

image-20220821191948636

image-20220821192558716

注:我这里完成了以上两步之后,还是没有连接成功,百度之后发现原来是由于我连接的是服务器,没有添加 6379 端口的安全组。

可参考:Java 使用 Jedis 在本地远程连接腾讯云服务器(CentOS 7)

但是我的是轻量级服务器,看意思就是防火墙设置了:

image-20220821195819961

再来测试一次:成功!

image-20220821202013924

接下来就是测试那些数据了。跟上边的来就行。