redis 主从配置和集群配置
主从配置 | 集群配置
redis主从
主从配置原因:
1.到达读写分离,读的操作和写操作比例10 : 1读数据频繁,写数据次数少,这样可以配置1个master数据库用来写数据,配置多个slave从数据库来满足读取操作
2.降低服务器压力,读取数据访问的速度加快
3.主的数据库会将修改内容同步到从的数据库-数据备份

配置步骤:
配置主:
1.修改etc/redis/redis.conf文件:
bind 主数据库ip地址
port 主数据库端口号
2.重启redis服务
sudo service redis stop
redis-server redis.conf
配置从:
1.复制etc/redis/redis.conf文件
sudo cp redis.conf slaveof.conf
2.修改etc/redis/redis.conf文件
2.0 sudo vim slaveof.conf
2.1 bind 从数据库ip

2.2 port 从数据库端口

2.3 修改slaveof 主数据库ip地址 主数据库端口号

3.重启redis服务
3.1 最好先干掉之前的redis服务
px aux | grep redis
sudo kill -9 pid

3.2 分别启动主/从服务
sudo redis-server redis.conf
sudo redis-server slaveof.conf
4.查看主从关系
redis-cli -h ip地址 -p 端口 info Replication

测试数据
1. master主服务
1.1 进入master客户端: redis-cli -h -p 6379
1.2 master上写入测试数据
set name james
2. slaveof从服务
2.1 进入slaveof客户端: redis-cli -h -p 6378
2.2 读取数据
get name

redis简单的主从配置就这样
redis集群
集群配置原因
- 集群是一组相互独立的、通过高速网络互联的计算机,它们构成了一个组,并以单一系统的模式加以管理。一个客户与集群相互作用时,集群像是一个独立的服务器。集群配置是用于提高可用性和可缩放性。

当请求到来首先由负载均衡服务器处理,把请求转发到另外的一台服务器上。

配置步骤
1.在redis-config(集群目录)目录下创建配置文件7000.conf,7001.conf,7002.conf,7003.conf,7004.conf,7005.conf
注: 集群最少需要6个服务器
1.1 在配置文件中进行如下配置:
port 端口
bind ip地址
daemonize yes
pidfile 7000.pid # 对应服务器进程的pid
cluster-enabled yes # 开启集群
cluster-config-file 7000_node.conf # node节点文件
cluster-node-timeout 15000
appendonly yes
2. 使用相应的配置文件启动redis服务
redis-server 7000.conf
redis-server 7001.conf
redis-server 7002.conf
redis-server 7003.conf
redis-server 7004.conf
redis-server 7005.conf
ps aux | grep redis

3. 创建集群
- redis的安装包中包含了redis-trib.rb,用于创建集群
将命令复制,这样可以在任何目录下调用此命令
sudo cp /usr/share/doc/redis-tools/examples/redis-trib.rb /usr/local/bin/安装ruby环境,因为redis-trib.rb是用ruby开发的
- sudo apt-get install ruby
-

创建之前先确认一下gem源地址 : 国外的地址因为某种原因...
-- 先查看使用的 gem 源是什么地址
gem source -l -- 如果是https://rubygems.org/ 就需要更换
-- 更换指令为
gem sources --add https://gems.ruby-china.org/ --remove https://rubygems.com/ # 之前国内的.org域名已经失效
-- 通过 gem 安装 redis 的相关依赖
sudo gem install redis
-- 然后重新执⾏指令

提示success 创建完成
数据测试
**集群创建成功后,所有的服务器都是master 没有主从之分

**从上图可以看到前三个7000,7001,7002 都有一个slots卡槽地址 范围(16384) , 数据必须要在有卡槽的地方进行一个写入和读取, 而没有卡槽的服务器则需要借助有卡槽的服务器来进行数据的写入和读取
1. 加入集群 注意连接服务器 -c:表示加入集群
redis-cli -h 127.0.0.1 -c -p 7002
2. 写入数据
set name durant

由于7005并没有卡槽,所以它借用了卡槽地址为5798的服务器 , 并且重定向到了7001服务器
3. 读取数据并且修改数据
get name
set age 18

**这说明了集群中任意服务器均可以进行读写数据的操作,数据完全共享
数据存储在哪个卡槽地址中,读取要去卡槽地址对应的端口(ip)去读取
**关于卡槽值如何计算并分配写入数据
CRC16算法
具体算法:CRC16(key) % 16384
Redis集群没有并使用传统的一致性哈希来分配数据,而是采用另外一种叫做哈希 槽 (hash slot)的公式来分配的。
redis cluster 默认分配了 16384 个slot,当我们 set一个key 时,会用CRC16算法来取模得到所属的slot,然后将这个key 分到哈 希槽区间的节点上,
具体算法就是:CRC16(key) % 16384。所以我们在测试的 时候看到set 和 get 的时候,直接跳转到了7000端口的节点

至此,一个简单的redis集群就基本配置完毕了
redis 主从配置和集群配置的更多相关文章
- Redis高可用之集群配置(六)
0.Redis目录结构 1)Redis介绍及部署在CentOS7上(一) 2)Redis指令与数据结构(二) 3)Redis客户端连接以及持久化数据(三) 4)Redis高可用之主从复制实践(四) 5 ...
- Redis 3.0 Cluster集群配置
Redis 3.0 Cluster集群配置 安装环境依赖 安装gcc:yum install gcc 安装zlib:yum install zib 安装ruby:yum install ruby 安装 ...
- kubernetes部署redis主从高可用集群
1.redis主从高可用集群结构 2.k8s部署有状态的服务选择 对于K8S集群有状态的服务,我们可以选择deployment和statefulset statefulset service& ...
- Redis简单梳理及集群配置
**REmote DIctionary Server(Redis) 是一个由Salvatore Sanfilippo写的key-value存储系统. Redis是一个开源的使用ANSI C语言编写.遵 ...
- redis + 主从 + 持久化 + 分片 + 集群 + spring集成
Redis是一个基于内存的数据库,其不仅读写速度快,每秒可以执行大约110000的写操作,81000的读取操作,而且其支持存储字符串,哈希结构,链表,集合丰富的数据类型.所以得到很多开发者的青睐.加之 ...
- redis主从切换的集群管理
集群配置最少需要三台机器,那么我就三台虚拟机,三台虚拟机分别安装同样的redis的环境ip分别:192.168.9.17 (redis sentinel 集群监控)192.168.9.18 (redi ...
- Redis主从哨兵和集群搭建
主从配置 哨兵配置 集群配置 1.主从: 国王和丞相,国王权力大(读写),丞相权利小(读) 2.哨兵: 国王和王子,国王死了(主服务挂掉),王子继位(从服务变主服务) 3.集群: 国王和国王,一个国王 ...
- Redis集合 安装 哨兵集群 配置
redis相关 redis基础 redis发布订阅 redis持久化RDB与AOF redis不重启,切换RDB备份到AOF备份 redis安全配置 redis主从同步 redis哨兵集群 redis ...
- redis相关笔记(二.集群配置及使用)
redis笔记一 redis笔记二 redis笔记三 1.配置:在原redis-sentinel文件夹中添加{8337,8338,8339,8340}文件夹,且复制原8333中的配置 在上述8333配 ...
随机推荐
- PHP中使用sleep函数实现定时任务实例分享
在某些程序中,有一些特殊的功能需要用到定时执行,如果熟悉Linux的朋友肯定会说这不是容易吗,直接来个计划任务crontab不久实现了吗?这的确是可以实现,但必须是提前知道具体的执行时间,然后才能写到 ...
- 阅读<Video Test Pattern Generator v7.0>笔记
阅读<Video Test Pattern Generator v7.0>笔记 1.数据宽度的问题 TotalDataWidth的计算公式: 疑问:为什么TotalDataWidth后面需 ...
- 代码编辑器之sublime text
http://www.iplaysoft.com/sublimetext.html 1.特点: 中文乱码问题:另外,很多朋友反映表示打开中文会有乱码,其实是因为ST2本身只支持UTF-8编码,而我们常 ...
- 服务容错保护断路器Hystrix之八:Hystrix资源隔离策略
在一个基于微服务的应用程序中,您通常需要调用多个微服务完成一个特定任务.不使用舱壁模式,这些调用默认是使用相同的线程来执行调用的,这些线程Java容器为处理所有请求预留的.在高服务器请求的情况下,一个 ...
- docker容器内外相互拷贝数据
从宿主机上拷贝文件到容器内 注意:一下红色字体为宿主机文件 docker cp 文件 容器名:目录 # docker cp httpd-2.4.34.tar.gz node4:/opt/ 从宿主机上拷 ...
- [UE4]射击起点、终点的计算方法
一.射击起点,这个简单,一般是以角色的相机位置为作为射击起点,而不是枪口的位置作为起点 二.射击终点,角色朝向 * 射击距离 + 射击起点 角色朝向:单位向量 角色朝向 * 射击距离:向量长度 向量长 ...
- sas 经验小结(1)
1.重要的事情说三遍:在SAS中,对数据集操作要在OPTIONS中使用Compress=yes 能有效的降低文件的大小. 在SAS运行LOG中,可以看如下提示: NOTE: 压缩的数据集 T.PHON ...
- 这些git命令判断提交到哪个分支哪个项目上
git branch -r fuweikun@pengfei:~/e1_cp/AMSS$ git branch* 8939-E1-2104026-dev git config -l fuweikun@ ...
- TFTP(Trivial File Transfer Protocol,简单文件传输协议)
网络特性 通常使用UDP 69端口(据说可改成TCP) 与FTP区别 轻量级,适用于传输小文件,当然功能也少些,比如没有列出目录功能,不进行认证
- 对mysql事务提交、回滚的错误理解
一.起因 begin或者START TRANSACTION开始一个事务 rollback事务回滚 commit 事务确认 人们对事务的解释如下:事务由作为一个单独单元的一个或多个SQL语句组成,如果其 ...