原
阿里云(ECS中)Redis远程访问
https://blog.csdn.net/aa1209551258/article/details/81542082
折腾了那么久结果是自己之前安装的时候太个性化了,配置文件改的是安装目录的,需要改etc下面的,我的配置文件的名字是6379.conf。。。
需要配置的
protectmode no
requirepass yourpassword
注释掉bind 127.0.0.1
不知道这个是不是必要的,之前除了问题就把防火墙给关了,然后设置了iptables
systemctl start firewalld
systemctl status firewalld
systemctl stop firewalld
把集群的节点端口和总线端口打开
/sbin/iptables -I INPUT -p tcp --dport 7001:7006 -j ACCEPT
[[email protected] ~]# /sbin/iptables -I INPUT -p tcp --dport 17001:17006 -j ACCEPT
查看端口的开放状态
[[email protected] ~]# iptables -L -n |grep 7001
批量杀死redis进程
ps -ef |grep redis|grep -v grep|awk ‘{print "kill -9 "$2}’ | sh
linux批量杀死进程
https://www.cnblogs.com/abclife/p/7380397.html
创建集群的时候ip要是自己的服务器公网ip否则没法远程访问,如果之前创建过集群要先吧之前的集群删除,在删之前需要先把之前的集群启动,在任意一个节点上flushall,清空之前的缓存(否则重新搭建集群的时候会出错之前的node is not empty),任意一个即可,因为集群模式下各节点之间是相互连通的,关闭集群之后,再把之前的文件全部删完重新启动redis实例,用redis-cli --cluster搭建集群)
在阿里云控制台ECS–>网络和安全上找到自己的安全组配置安全规则。
7001/7006是集群的节点端口
17001/17006是相应的节点对应的集群总线端口,
redis-cli --cluster create 公网ip:7001 公网ip:7002 公网ip:7003 公网ip:7004 公网ip:7005 公网ip:7006 --cluster-replicas 1
Java远程访问云服务器redis单节点测试
package com.wjh;
import redis.clients.jedis.Jedis;
/**
* Author: 17976
* Date: 2019/1/30 9:38
* Description:
*/
public class JedisTest {
private static final String redisURL=" ";
public static void main(String[] args) {
Jedis jedis= new Jedis( redisURL,6379);//URL是我阿里云的IP
// jedis.auth("***");
System.out.println(jedis.ping());
System.out.println(jedis.get("mm"));
System.out.println(jedis.set("steve","tao"));
}
}
Java远程访问redis集群
集群不需要设置密码就行,之前按着6379的方式设置了密码结果超级麻烦,每次都要认证,自动重定向也出问题,也需要认证。
redis.conf文件这样就好
port 7001
cluster-enabled yes
cluster-config-file nodes.conf
cluster-node-timeout 5000
appendonly yes
daemonize yes
protected-mode no
package com.wjh;
import redis.clients.jedis.HostAndPort;
import redis.clients.jedis.JedisCluster;
import redis.clients.jedis.JedisPoolConfig;
import java.util.HashSet;
import java.util.Set;
/**
* Author: 17976
* Date: 2019/1/29 20:57
* Description: redis集群测试
*/
public class JedisClusterTest {
private static final String redisURL="";
public static void main(String[] args){
HashSet<HostAndPort> jedisClusterNodes = new HashSet<HostAndPort>();
//Jedis Cluster will attempt to discover cluster nodes automatically
//只需要配置集群中的一个结点,连接成功后,自动获取点集群中其他结点信息
jedisClusterNodes.add(new HostAndPort(redisURL, 7001));
jedisClusterNodes.add(new HostAndPort(redisURL, 7002));
JedisCluster jc = new JedisCluster(jedisClusterNodes);
jc.set("foo", "bar");
String value = jc.get("foo");
System.out.println(value);
}
}
maven依赖
<dependencies>
<dependency>
<groupId>redis.clients</groupId>
<artifactId>jedis</artifactId>
<version>3.0.1</version>
</dependency>
<dependency>
<groupId>org.slf4j</groupId>
<artifactId>slf4j-nop</artifactId>
<version>1.7.25</version>
</dependency>
<dependency>
<groupId>org.slf4j</groupId>
<artifactId>slf4j-api</artifactId>
<version>1.7.25</version>
</dependency>
</dependencies>
阿里云上查询刚才设置的数据
127.0.0.1:7001> get foo
-> Redirected to slot [12182] located at 116.62.140.147:7003
"bar"
公网ip:7003>