redis基础篇

目录

1.redis介绍

2.redis的常用命令

3.redis的安装

4.redis主从模式

实验步骤

5.哨兵模式

介绍

哨兵模式的作用

实验步骤

6.集群模式

实验原理

实验1

实验2:增加集群数


1.redis介绍

redis是一个开源的、使用C语言编写的、支持网络交互的、可基于内存也可持久化的Key-Value数据库。

redis的官网地址  redis中文官方网站

redis是一种高级的key:value存储系统,其中value支持五种数据类型:

1.字符串(strings)
2.字符串列表(lists)
3.字符串集合(sets)
4.有序字符串集合(sorted sets)
5.哈希(hashes)

关于key

1.key不要太长,尽量不要超过1024字节,这不仅消耗内存,而且会降低查找的效率;
2.key也不要太短,太短的话,key的可读性会降低;
3.在一个项目中,key最好使用统一的命名模式,例如user:10000:passwd。


2.redis的常用命令

常用命令       含义
config get *    查看配置
select 1          选择数据库
flushdb          清空当前数据库
flushall          清空所有数据库
move key 1    移动key
del key           删除
rename oldkey newkey    改名
expire key 10    设置过期时间
persist key    设置持久化
persist key    查询
persist key    判断是否存在


3.redis的安装

源码编译

解压redis-6.2.4压缩包

直接进行make&&make install使用6379端口将if注释掉不然会报错


4.redis主从模式

slaveof 172.25.70.1 6379

min-slaves-to-write <slave 数量>

min-slaves-max-lag <秒数>

Redis 使用异步复制,因此无法确保 slave 是否实际接收到给定的写命令

实验步骤

基本命令开启6379端口将从机配置文件添加主机ip及端口号重启服务即可实现主从注:端口可任意、如6380端口 


5.哨兵模式

介绍

主从模式下,当主服务器宕机后,需要手动把一台从服务器切换为主服务器,这就需要人工干预,费事费力,还会造成一段时间内服务不可用。这种方式并不推荐,实际生产中,我们优先考虑哨兵模式。这种模式下,master宕机,哨兵会自动选举master并将其他的slave指向新的master。

在主从模式下,redis同时提供了哨兵命令redis-sentinel,哨兵是一个独立的进程,作为进程,它会独立运行。其原理是哨兵进程向所有的redis机器发送命令,等待Redis服务器响应,从而监控运行的多个Redis实例。

哨兵可以有多个,一般为了便于决策选举,使用奇数个哨兵。哨兵可以和redis机器部署在一起,也可以部署在其他的机器上。多个哨兵构成一个哨兵集群,哨兵直接也会相互通信,检查哨兵是否正常运行,同时发现master宕机哨兵之间会进行决策选举新的master

哨兵模式的作用

通过发送命令,让Redis服务器返回监控其运行状态,包括主服务器和从服务器;
当哨兵监测到master宕机,会自动将slave切换到master,然后通过发布订阅模式通过其他的从服务器,修改配置文件,让它们切换主机;
然而一个哨兵进程对Redis服务器进行监控,也可能会出现问题,为此,我们可以使用多个哨兵进行监控。各个哨兵之间还会进行监控,这样就形成了多哨兵模式。

实验步骤

server1是master 

slave是server2、3

修改配置文件将master设置为server1将配置好的文件发送给两个slave 查看动态信息 

将server1的redis服务关闭

server2、3检测到开始选举新的master 新的master为server2 当server1重新启动时master不在恢复master身份 


6.集群模式

实验原理

Redis 的哨兵模式基本已经可以实现高可用,读写分离 ,但是在这种模式下每台 Redis 服务器都存储相同的数据,很浪费内存,所以在redis3.0上加入了 Cluster 集群模式,实现了 Redis 的分布式存储,对数据进行分片,也就是说每台 Redis 节点上存储不同的内容;

这里的6台redis两两之间并不是独立的,每个节点都会通过集群总线(cluster bus),与其他的节点进行通信。通讯时使用特殊的端口号,即对外服务端口号加10000。例如如果某个node的端口号是6379,那么它与其它nodes通信的端口号是16379。nodes之间的通信采用特殊的二进制协议。

对客户端来说,整个cluster被看做是一个整体,客户端可以连接任意一个node进行操作,就像操作单一Redis实例一样,当客户端操作的key没有分配到该node上时,Redis会返回转向指令,指向正确的node,这有点儿像浏览器页面的302 redirect跳转。

根据官方推荐,集群部署至少要 3 台以上的master节点,最好使用 3 主 3 从六个节点的模式。测试时,也可以在一台机器上部署这六个实例,通过端口区分出来。

实验1

启动集群、默认为6个 

六个集群平分16383个哈希槽,3个master、3个slave查看集群 M30001对应S30004 集群信息同发 

当关闭任意一个M,对应的S会跳转成M

重新启动,之前的M会变成S

实验2:增加集群数

修改配置文件

将集群个数改为8将新增的加入到集群中新增的M未分配哈希槽 

添加30007对应的S  

取其他集群中的哈希槽 

测试、添加成功 

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值