Redis

一.redis概述

1.1 什么是NoSql?

“不仅仅是sql”,泛指 非关系型数据库
Redis就是NoSql的一种

1.2 Redis是什么?

  1. Redis 是一个高性能的 开源的、C语言写的Nosql(非关系型数据库),数据保存可以存储在内存中或者磁盘中。
  2. 以key-value的形式存储数据,redis严格上不是一种数据库,应该是一种数据结构化存储方法的集合(list set map string,sortset)。

优势:

  • 数据存储在内存中,存取速度快,并发能力强
  • 支持存储value类型多,包括string(字符串)、list(链表)、set(集合)、 zset(sorted set --有序集合)和hash(哈希类型)
  • Redis支持集群(主从同步)
  • 支持持久化操作
  • 支持多语言客户端

使用场景:

  • 缓存
    数据放到内存中,读取数据快,减轻了数据库的压力,而Redis就是存放在内存中。
  • 计数器应用
    网站做浏览次数或统计人数的时候,如果出现高并发的情况,那么关系型数据库就会出现问题,而用Redis就可以相对的避免这种情况。
  • 实施防攻击系统
    比如系统受到攻击时,可以查询该ip,当达到10次的时候,自动锁定
  • 消息订阅
    类似于微信公众号之类的

二.Redis的安装

Redis是绿色软件,下载好直接使用就行

在这里插入图片描述

2.1 启动redis服务

带配置文件启动
命令:redis-server.exe redis.windows.conf

连接:redis-cli -h ip地址 -p 端口号(ip 默认为本地 -p 默认6379)

3.Redis集群

3.1集群的概念

集群就是多个服务器做的事情都是一样,每个服务器都是一个完整的应用,他们做的业务,包含的模块都是一样的。这些服务器相当于是复制出来的一样。

3.2为什么要用集群?

  1. 防止单点故障,比如其中一个挂了,可以选择其他的
  2. 扩展性高
  3. 高可用性,提高效率,不容易挂

4.分布式

4.1分布式概念

分布式就是多个服务器做不通的事情。相当于把一个完整的项目拆分开来,每个服务器只负责一部分功能,所有的服务器合起来才是一个完整的应用。
比如:做菜,3个人,一个负责买菜,一个负责切菜,一个负责炒菜。

4.2为什么要用分布式?

单体应用要做集群,就要对整个应用做集群,但是如果我只想对其中某个模块做集群,那么用分布式就可以只对这个模块做集群。

五.Redis的三种集群模式

5.1主从复制(读写分离)

一个主redis可以有多个从redis,但是一个从redis只能有一个主redis。
从redis的数据是从主redis中复制来的
主redis可以主要做写操作(也可以读),从redis主要做读取操作

特点:分担读的压力

缺点:

  • 不能解决数据量大的问题
  • 主redis挂了,没办法自动将从redis提升成主redis

5.2哨兵模式

在主从模式的基础上增加了哨兵,监控主redis的健康状态,自动的进行从到主的提升

特点:能自动将从redis提升成主redis

5.3redis-cluster集群

多主多从,多主实现分布式存储,每个redis存储不同的内容
多主之间的关系是对等的,有连接,可以相互通信。

存储方式:分布式储存数据,槽位运算,算法:CRC16(key) % 16384

六.搭建redis集群

6.1安装6台redis

在Window搭建6个伪集群
每个Redis创建启动脚本start.bat,内容如下

title redis-3679
redis-server.exe redis.windows.conf

6.2redis配置

1.建一个6379的文件夹,redis放进来
2.复制5份,将文件夹的名字一次改成6380,6381,6382,6383,6384。
修改redis.windows.conf,端口号分别为6380,6381,6382,6383,6384
在这里插入图片描述
3.开启cluster-enabled :cluster-enabled yes
4.指定集群配置文件: cluster-config-file nodes-6379.conf
5.指定超时:cluster-node-timeout 15000
6.开启持久:appendonly yes

6.3安装Ruby

傻瓜式安装
在这里插入图片描述

6.4安装Ruby驱动

1.解压,进入根目录,cmd
命令:

ruby setup.rb

2.切入到Redis目录执行(6379的Redis目录) cmd
命令:

gem install redis

6.5执行集群构建脚本

1.启动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 。

6.6.测试集群命令

启动客户端(cmd命令启动):

redis-cli –c –h 127.0.0.1 –p  6379

可以跟任何节点的端口

查看整个集群:cluster info

查看当前Redis:info replication

查看槽位:cluster nodes

6.7集群代码测试

@Test
public void testCluster() throws IOException, InterruptedException {
    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 {
        String res = cluster.get("name");
        System.out.println(res);
    	//cluster.quit();
    } catch (Exception e) {
    	e.printStackTrace();
    	//cluster.quit();
    }
}
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值