Java远程访问阿里云服务器上的redis

时间:2024-04-01 12:23:42


阿里云(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–>网络和安全上找到自己的安全组配置安全规则。
Java远程访问阿里云服务器上的redis
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>