IT数码 购物 网址 头条 软件 日历 阅读 图书馆
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
图片批量下载器
↓批量下载图片,美女图库↓
图片自动播放器
↓图片自动播放器↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁
 
   -> 大数据 -> linux4==阿里云ECS centos8部署redis6.2.6伪集群 -> 正文阅读

[大数据]linux4==阿里云ECS centos8部署redis6.2.6伪集群

1、在安装RVM之前先导入公钥,在RVM官网可以查到公钥。然后才可下载RVM

gpg --keyserver hkp://pgp.mit.edu --recv-keys 409B6B1796C275462A1703113804BB82D39DC0E3 7D2BAF1CF37B13E2069D6956105BD0E739499BDB


2、redis的集群管理工具redis-trib.rb依赖ruby环境。所以安装RVM,方便安装高版本的ruby,centos yum库中自带的ruby版本较低。

curl -L get.rvm.io | bash -s stable


3、安装ruby 2.5.8

source /usr/local/rvm/scripts/rvm
rvm list known

?rvm install 2.5.8

4安装redis依赖

gem install redis

5、下载redis到电脑并使用xshell上传到centos的usr/local/redis目录

下载地址

https://download.redis.io/releases/redis-6.2.6.tar.gz

?mkdir?usr/local/redis

?6、新建集群文件夹,并复制安装包

mkdir usr/local/redisCluster

?7、编译安装redis

tar -zxvf redis-6.2.6.tar.gz?

cd redis-6.2.6/

make MALLOC=libc

make install

?8、复制集群管理工具redis-trib.rb到redisCluster下

cp -f ./redis-6.2.6/src/redis-trib.rb ./

?9、在redisCluster目录下新建6个文件夹,名字为8001到8006,将修改过后的redis.conf分别往6个目录中复制一份,并修改如下,端口号要分别指定,我这8001到8006,比如第一个修改如下,其余五个就端口号不同

port 8001

#bind 127.0.0.1 -::1

cluster-enabled yes

cluster-config-file nodes-8001.conf

protected-mode no

daemonize yes

requirepass 123@456

masterauth 123@456

?10、保留快照方便回退。开放对应的6个端口,开放你redis实例端口号+10000的端口,重启linux

11、启动6个redis,查看6个redis实例运行状态

?redis-server ../8001/redis.conf

ps -ef |grep redis

?12、redis 5以上版本直接redis-cli启动。5以下用集群管理工具启动。

./redis-cli -a 123@456 --cluster create 118.31.120.118:8001 118.31.120.118:8002 118.31.120.118:8003 118.31.120.118:8004 118.31.120.118:8005 118.31.120.118:8006 --cluster-replicas 1

./redis-cli -a 123@456 --cluster create 118.31.120.118:8001 118.31.120.118:8002 118.31.120.118:8003 118.31.120.118:8004 118.31.120.118:8005 118.31.120.118:8006 --cluster-replicas 1

?

?集群开启成功,登录任一redis实例,查看集群状态和集群节点信息

redis-cli -p 8001 -a 123@456 -c

cluster info

?===========================

集群如果部署失败,想要重来,直接根据PID KILL掉就行

ps -ef |grep redis
kill -9 pid XXX??

==============================

登录一个实例set get测试下

?伪集群成功。

==================================

本地电脑RDM连接访问查看刚才新增的键值对,应该是在8003和8004中,因为8003是主节点,8004是8003的从节点

====================================================

使用jedis连接集群获取键值对信息,成功

/**
 * 集群环境下Jedis操作
 */
public class Cluster {
    private static JedisCluster jedis;

    static {
        // 添加集群的服务节点Set集合
        Set<HostAndPort> hostAndPortsSet = new HashSet<HostAndPort>();
        // 添加节点
        hostAndPortsSet.add(new HostAndPort("118.31.120.118", 8001));
        hostAndPortsSet.add(new HostAndPort("118.31.120.118", 8002));
        hostAndPortsSet.add(new HostAndPort("118.31.120.118", 8003));
        hostAndPortsSet.add(new HostAndPort("118.31.120.118", 8004));
        hostAndPortsSet.add(new HostAndPort("118.31.120.118", 8005));
        hostAndPortsSet.add(new HostAndPort("118.31.120.118", 8006));


        // Jedis连接池配置
        JedisPoolConfig jedisPoolConfig = new JedisPoolConfig();
        // 最大空闲连接数, 默认8个
        jedisPoolConfig.setMaxIdle(100);
        // 最大连接数, 默认8个
        jedisPoolConfig.setMaxTotal(500);
        //最小空闲连接数, 默认0
        jedisPoolConfig.setMinIdle(0);
        // 获取连接时的最大等待毫秒数(如果设置为阻塞时BlockWhenExhausted),如果超时就抛异常, 小于零:阻塞不确定的时间,  默认-1
        jedisPoolConfig.setMaxWaitMillis(2000); // 设置2秒
        //对拿到的connection进行validateObject校验
        jedisPoolConfig.setTestOnBorrow(true);
        //public JedisCluster(Set<HostAndPort> jedisClusterNode, int connectionTimeout, int soTimeout,
        //                      int maxAttempts, String password, final GenericObjectPoolConfig poolConfig)
        jedis = new JedisCluster(hostAndPortsSet, 2000, 2000, 5, "123@456", jedisPoolConfig);
    }

    /**
     * 测试key:value数据
     * 集群中flushDB、keys废弃
     */
    @Test
    public void testKey() throws InterruptedException {
//        System.out.println("清空数据:" + jedis.flushAll());
        System.out.println("判断某个键是否存在:" + jedis.exists("runoobkey"));
        String runoobkey = jedis.get("runoobkey");
        System.out.println("获取某个键的值:" + runoobkey);
        System.out.println("新增<'username','xiaohai'>的键值对:" + jedis.set("username", "xiaohai"));
        System.out.println("新增<'runoobkey','666'>的键值对:" + jedis.set("runoobkey", "666"));
//        System.out.println("新增<'password','123'>的键值对:" + jedis.set("password", "123"));
        System.out.println("是否存在:" + jedis.exists("username"));
        System.out.println("查看键username所存储的值的类型:" + jedis.type("username"));
//        System.out.println("新增<'password','password'>的键值对:" + jedis.set("password", "123456"));
//        Set<String> keys = jedis.hkeys("*");
//         System.out.println("系统中所有的键如下:"+keys);
//        System.out.println("删除键password:" + jedis.del("password"));
//        System.out.println("判断键password是否存在:" + jedis.exists("password"));
//        System.out.println("设置键username的过期时间为10s:" + jedis.expire("username", 10));
//        TimeUnit.SECONDS.sleep(2); // 线程睡眠2秒System.out.println("查看键username的剩余生存时间:"+jedis.ttl("username"));
//        System.out.println("查看键username的剩余生存时间:" + jedis.ttl("username"));
//        System.out.println("移除键username的生存时间:" + jedis.persist("username"));
//        System.out.println("查看键username的剩余生存时间:" + jedis.ttl("username"));

    }

?

?=========

set集群中有过的键值对,可以成功,如删掉username再set就可以,修改已有的也可以。但是set新的username2就显示获取不到连接

redis.clients.jedis.exceptions.JedisConnectionException: Could not get a resource from the pool

。。。?

在服务器上直接set get是能够成功的,所以应该是java代码的问题

?

  大数据 最新文章
实现Kafka至少消费一次
亚马逊云科技:还在苦于ETL?Zero ETL的时代
初探MapReduce
【SpringBoot框架篇】32.基于注解+redis实现
Elasticsearch:如何减少 Elasticsearch 集
Go redis操作
Redis面试题
专题五 Redis高并发场景
基于GBase8s和Calcite的多数据源查询
Redis——底层数据结构原理
上一篇文章      下一篇文章      查看所有文章
加:2021-11-29 16:23:14  更:2021-11-29 16:23:22 
 
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁

360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年11日历 -2024/11/24 8:00:15-

图片自动播放器
↓图片自动播放器↓
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
图片批量下载器
↓批量下载图片,美女图库↓
  网站联系: qq:121756557 email:121756557@qq.com  IT数码