Redis

Redis

Redis是NoSQL(非关系性数据库的一种)

安装Redis

Redis 的官方下载站是 http://redis.io/download,可以去上面下载最新的安装程序
redis中文网站 http://redis.cn/

  • windows下的安装和使用
    1.下载redis程序软件
    使用redisbin32 或redisbin64
    https://github.com/microsoftarchive/redis/releases
    2.绿色软件,不需要安装,直接使用
    在这里插入图片描述
    3.启动redis服务(带配置文件启动,和不带配置文件启动)
    直接点击redis-cli.exe是不带配置文件启动
    在这里插入图片描述
    4.连接到redis进行操作
    cmd>{%redis%}/redis-cli -h ip地址 -p 端口号
    ip 默认为本地 -p 默认6379

Redis集群&&分布式

集群:多个服务器 都去处理同一个业务
分布式:多个服务器 去处理不同的业务

redis为什么要集群

1.处理高并发
2.防止单点故障
3.处理大量数据

集群具备的特性

集群应该具有如下特性:

  • 可扩展性 : 方便的增加集群中的机器 , 动态扩容缩容
  • 高可用性 :从性能,相应等方面提升效率,不会挂掉,不影响结果
1.6.集群的能力

集群应该具备如下能力:

  • 负载均衡

    把请求根据某种算法相对平衡的路由到集群的应用

  • 错误恢复

    集群下的某个应用挂了需要找到能用的服务继续处理请求

  • 主备切换

    对于应用的集群,某个应用挂掉了,集群中需要有其他的应用顶上以处理请求
    在这里插入图片描述

redis集群方案

(1)主从复制
主从复制,是指将一台Redis服务器的数据,复制到其他的Redis服务器。前者称为主节点(master),后者称为从节点(slave),数据的复制是单向的,只能由主节点到从节点。默认情况下,每台Redis服务器都是主节点;且一个主节点可以有多个从节点(或没有从节点),但一个从节点只能有一个主节点。
在这里插入图片描述
写请求到主Redis,读请求到从Redis ,读/写的路由需要负载均衡器(主Twemproxy/从Twemproxy) ,而主从Redis的负载均衡器需要做主备切换(keeplived)
在这里插入图片描述

​ 优点:处理高并发 完成 主从同步 读写分离 主备切换
主redis具有读写能力,从redis只有读
​ 缺点:比如服务宕机之后,需要手动启动,会造成一些数据的丢失

(2)哨兵模式
当主服务器中断服务后,可以将一个从服务器升级为主服务器`,以便继续提供服务,但是这个过程需要人工手动来操作。 为此,Redis 2.8中提供了哨兵工具来实现自动化的系统监控和故障恢复功能。
在这里插入图片描述
主观下线:当某个哨兵通过ping主redis发现没有回应,那么这个哨兵主观认为 主redis挂掉;
客观下线:半数以上的哨通过ping主redis发现没有回应,那么这个是客观下线;
故障转移:当客观下线,会自动选择一个从Redis提升为主。
​ 优点:处理高并发 完成 主从同步 读写分离 主备切换 自动切换

​ 缺点:服务里面存储的数据都是一样,占用内存比较大 ,扩容比较麻烦

(3)redis-cluster(推荐)
在这里插入图片描述1.为什么要使用Redis-Cluster
redis的哨兵模式基本已经可以实现高可用,读写分离 ,但是在这种模式下每台redis服务器都存储相同的数据,很浪费内存,所以在redis3.0上加入了cluster模式,实现的redis的分布式存储,也就是说每台redis节点上存储不同的内容
2.什么是Redis-Cluster
Redis-Cluster采用无中心结构,集群中的每个节点都是平等的关系,都是对等的,每个节点都保存各自的数据和整个集群的状态。每个节点都和其他所有节点连接,而且这些连接保持活跃,这样就保证了我们只需要连接集群中的任意一个节点,就可以获取到其他节点的数据
3.数据分散存储
Redis 集群没有并使用传统的一致性哈希来分配数据,而是采用另外一种叫做哈希槽 (hash slot)的方式来分配的。redis cluster 默认分配了 16384 个slot,当我们set一个key 时,会用CRC16算法来取模得到所属的slot,然后将这个key 分到哈希槽区间的节点上,具体算法就是:CRC16(key) % 16384
4.容错机制-投票
为了防止主节点数据丢失,可以为每个主节点可以准备特点数目的备节点,主节点挂掉从节点可以升级为主节点(哨兵模式) 。
容错机制指的是,如果半数以上master节点与故障节点通信超过(cluster-node-timeout),认为该节点故障,自动触发故障转移操作. 故障节点对应的从节点自动升级为主节点 , 如果某个主挂掉,而没有从节点可以使用,那么整个Redis集群进入宕机状态

​ 优点:处理高并发 完成 主从同步 读写分离 主备切换 自动切换,分布式存储

​ 缺点:麻烦一点 扩容还是比较麻烦

Redis-cluster集群环境搭建

下载Redis-x64-3.2.100

1.需要 6 台 redis 服务器。搭建伪集群。
2.需要 6 个 redis 实例。
3.需要运行在不同的端口 6379-6384
在这里插入图片描述
在这里插入图片描述

redis.windows.conf中配置

1.修改redis.windows.conf,端口号分别对应:6379、6380、6381、6382、6383、6384。
2.开启cluster-enabled :cluster-enabled yes
3.指定集群配置文件: cluster-config-file nodes-6379.conf,cluster-config-file nodes-6379.conf 是为该节点的配置信息,这里使用 nodes-端口.conf命名方法。服务启动后会在目录生成该文件。
4.指定超时:cluster-node-timeout 15000
5.开启持久:appendonly yes

Ruby语言运行环境

需要使用ruby脚本来实现集群搭建
安装Ruby----rubyinstaller-2.6.3-1-x64.exe
安装Ruby驱动
1.下载rubygems-2.7.7
2.在rubygems-2.7.7根目录下cmd执行ruby setup.rb
3.到Redis目录执行(6379的Redis目录)使用cmd执行gem install redis

执行集群构建脚本

1.点击start.bat启动6个Redis

2.拷贝redis-trib.rb到Redis目录(6379的Redis目录)

3.在6379根目录执行构建脚本:

redis-trib.rb create --replicas 1 127.0.0.1:6379 127.0.0.1:6380 127.0.0.1:6381 127.0.0.1:6382 127.0.0.1:6383 127.0.0.1:6384

4.在出现 Can I set the above configuration? (type ‘yes’ to accept): 请确定并输入 yes
在这里插入图片描述
5.测试集群命令

启动客户端:redis-cli –c –h 127.0.0.1 –p 6379 , 可以跟任何节点的端口
查看整个集群:cluster info
查看当前 Redis:info replication
查看槽位:cluster nodes

java集群代码测试

1.导包
在这里插入图片描述2.测试

 @Test
    public void test()throws Exception{
        Set<HostAndPort> nodes = new HashSet<>();
        nodes.add(new HostAndPort("127.0.0.1", 6379));
        nodes.add(new HostAndPort("127.0.0.1", 6380));
        nodes.add(new HostAndPort("127.0.0.1", 6381));
        nodes.add(new HostAndPort("127.0.0.1", 6382));
        nodes.add(new HostAndPort("127.0.0.1", 6383));
        nodes.add(new HostAndPort("127.0.0.1", 6384));
        //获取对象
        JedisCluster cluster = new JedisCluster(nodes);
        try {
            //给name设置值
            cluster.set("name", "王二狗");
            String res = cluster.get("name");
            System.out.println(res);
//            cluster.quit();
        } catch (Exception e) {
            e.printStackTrace();
            //cluster.quit();
        }
    }
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值