文章目录
- 1. redis搭建主从服务
- windows 配置主从
- Redis Slaveof 命令
- 主从同步过程示意图
- redis主从的优点
- 1. 读写分离
- 2. 防止主服务挂掉,数据丢失
- 2. 搭建集群
- redis集群介绍
- 搭建内容
- 分别修改 .conf 配置
- 查看reids进程
- 启动
- redis集群查询
- 增加删除节点
- 读写
- Python与redis集群交互
- windows 手动搭建redis集群
- 1. 安装ruby
- 2. 集群配置
- 下载安装集群脚本 redis-trib.rb 安装到redis目录下
- 启动
- 搭建成功页面
- 3. 测试
- 4. 遇到的bug
1. redis搭建主从服务
windows 配置主从
Redis 主从配置(Windows版) 配置主从服务器
Redis Slaveof 命令
Redis Slaveof 命令可以将当前服务器转变为指定服务器的从属服务器(slave server)。
如果当前服务器已经是某个主服务器(master server)的从属服务器,那么执行 slaveof host port 将使当前服务器停止对旧主服务器的同步,丢弃旧数据集,转而开始对新主服务器进行同步。
另外,对一个从属服务器执行命令 slaveof no one 将使得这个从属服务器关闭复制功能,并从从属服务器转变回主服务器,原来同步所得的数据集不会被丢弃。
利用『 slaveof no one 不会丢弃同步所得数据集 』这个特性,可以在主服务器失败的时候,将从属服务器用作新的主服务器,从而实现无间断运行。
在从库6380上输入命令,来开启数据同步(格式:slaveof host port)
slaveof 127.0.0.1 6379 //同步主库 6379
在从库上输入命令,关闭数据同步
slaveof no one //取消同步
查看配置
redis-cli –h 127.0.0.1 info replication
主从同步过程示意图
slave服务器和master服务器间是如何建立起主从同步机制的。
redis主从的优点
1. 读写分离
2. 防止主服务挂掉,数据丢失
2. 搭建集群
windows搭建集群
redis集群介绍
Redis cluster(redis集群)是在版本3.0后才支持的架构,和其他集群一样,都是为了解决单台服务器不够用的情况,也防止了主服务器宕机无备用服务器,多个节点网络互联数据共享,所有节点都是一主一从(也可以一主多从),其中不提供服务,只做为备份,emmm我就不多说废话了,直接进入主题。
没有多的服务器就只能单机搭建集群了
搭建内容
首先构建集群的节点目录,注意:集群正常运作至少需要三个主节点,不过在刚开始试用集群功能时, 强烈建议使用六个节点: 其中三个为主节点, 而其余三个则是各个主节点的从节点。主节点崩溃,从节点的Redis就会提升为主节点,代替原来的主节点工作,崩溃的主Redis回复工作后,会成为从节点
分别修改 .conf 配置
出现上面的提示证明所以实例都启动成功了。但是这一步成功只能说明我们redis的配置是没问题的,然是我们还没有把这所有redis实例设置成一个集群
查看reids进程
ps aux | grep redis
启动
到redis3.0安装目录下找到src文件夹,然后执行redis-trib.rb命令
redis-trib.rb create --replicas 1 192.168.1.229:7001 192.168.1.229:7002 192.168.1.229:7003 192.168.1.229:7004 192.168.1.229:7005 192.168.1.229:7006
这个命令就代表把这些个redis实例创建为一个集群 上面命令中的1代表主节点和从节点的比值是多少,如果12个主节点,6个从节点那么我们的比值就是2,那么我们是3主3从,所以这个比值是1,而且前三个一定是主节点,redis就是这样规定的。
执行这个命令后,会出现个提示问你是否确定创建集群。我们直接输入yes,我们的集群环境就搭建好了。
redis集群查询
在redis集群中查询、插入数据,会自动发生跳转
-c为集群模式连接,不加则为单机
/usr/local/redis/bin/redis-cli -c -h 192.168.1.229 -p 7001 c代表集群模式 h代表地址 p代表端口号
我们进入客户端之后,查看下集群信息cluster nodes
给
这样就说明我们的集群已经搭建好了
我们发现上面的信息中说7001,7002,7003分别为master 而且都有对应的hash槽。
此时我们在集群的任何一个客户端中进行set,然后在其他的客户端中都可以get到。
增加删除节点
读写
Python与redis集群交互
安装redis-py-cluster模块
pip install redis-py-cluster
from rediscluster import RedisCluster
if __name__ == '__main__':
try:
# 构建所有的节点,Redis会使⽤CRC16算法,将键和值写到某个节点上
startup_nodes = [
{'host': '127.0.0.1', 'port': '7000'},
{'host': '127.0.0.1', 'port': '7002'},
{'host': '127.0.0.1', 'port': '7001'},
]
# 构建StrictRedisCluster对象
src=RedisCluster(startup_nodes=startup_nodes,decode_responses=True)
# 设置键为name、值为itheima的数据
result=src.set('name','Jrri')
print(result)
# 获取键为name
name = src.get('name')
print(name)
except Exception as e:
print(e)
windows 手动搭建redis集群
了解Redis搭建主从服务,集群配置详情请戳:传送门
1. 安装ruby
Ruby下载安装
Ruby百度云链接:密码:kx06
安装好后会弹出一个黑色窗体,随后需要对Ruby进行配置,执行
gem install redis
2. 集群配置
单机搭建集群:
Windows下搭建Redis集群
下载安装集群脚本 redis-trib.rb 安装到redis目录下
启动
ruby redis-trib.rb create --replicas 1 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 127.0.0.1:6385
搭建成功页面
3. 测试
进入任意一个集群节点,cmd执行redis-cli.exe -c -p 7005,-c表示集群模式,-h表示ip地址,-p表示端口
4. 遇到的bug
C:/Ruby22-x64/lib/ruby/2.2.0/rubygems/core_ext/kernel_require.rb:54:in `require': cannot load such file -- redis (LoadError)
from C:/Ruby22-x64/lib/ruby/2.2.0/rubygems/core_ext/kernel_require.rb:54:in `require'
from C:/Redis/redis-trib.rb:25:in `<main>'
Ruby的redis接口没有安装,需要安装Redis接口,输入命令 " gem install redis " 进行安装,如下图:
Could not find a valid gem 'redis' (>= 0), here is why: