🚨🚨先说明,做下面操作,如果是服务器的话,修改端口 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- 我滴实操
- 写 test 跟上边的一样,呐,连接超时
- 关防火墙、改保护模式为 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 |
注:我这里完成了以上两步之后,还是没有连接成功,百度之后发现原来是由于我连接的是服务器,没有添加 6379 端口的安全组。
可参考:Java 使用 Jedis 在本地远程连接腾讯云服务器(CentOS 7)
但是我的是轻量级服务器,看意思就是防火墙设置了:
再来测试一次:成功!
接下来就是测试那些数据了。跟上边的来就行。