redis服务搭建有几种方式
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了redis服务搭建有几种方式相关的知识,希望对你有一定的参考价值。
redis主从复制集群
实现方式:选择一台redis服务器作为master节点(负责写操作),另外一台或多台服务器作为slave节点(负责读操作),slave节点上的数据完全由master节点同步过来。
作用:降低单节点redis服务器的读写负载,将读写分离到不同的服务器
提供数据的可用性
配置方式:
Master节点不用作任何变动
Slave节点上的配置文件redis.conf需要修改如下配置
#slaveof <masterip> <masterport>
改为
salveof 127.0.0.1 6379
最好让服务器配成只读属性
salve-read-only yes123456
要想实现高可用即故障转移: 需要使用 keepalive
redis数据分片(Sharding)集群
实现方式:由若干台互不相干的redis服务器组成一个集群,互相独立,由集群的前置节点或者客户端实现将数据分散插入到集群中的各服务器上
作用:扩大数据存储的容量,降低单台服务器负载
步骤
首先准备两个服务器
其中两个服务器的服务名称和端口号要不相同,两个生产的dump.rdb文件要在不同的路径下面,而且第二个服务器不能打开主从服务器的配置,配置如下,要注释掉该配置
开启两个服务器,在后台运行
后台运行可以修改如下配置,将daemonize改为yes即可
开启两个客户端
然后编写分片集群的代码
public static void main(String[] args) //poolConfig是连接池的配置参数
GenericObjectPoolConfig poolConfig = new GenericObjectPoolConfig(); //shards是分片集群中所有分片服务器信息列表,JedisShardInfo是分片服务器信息
ArrayList<JedisShardInfo> shards = new ArrayList<>(); //将集群中的两台shard服务器信息封装到两个JedisShardInfo对象中
JedisShardInfo shard1 = new JedisShardInfo("192.168.90.131",6379);
JedisShardInfo shard2 = new JedisShardInfo("192.168.90.131",6380); //将分片服务器信息对象添加到分片服务器信息列表shards中
shards.add(shard1);
shards.add(shard2); //创建一个带数据分片功能的jedis连接池
ShardedJedisPool shardedJedisPool = new ShardedJedisPool(poolConfig, shards); //从连接池中获取一个带数据分片功能的jedis连接
ShardedJedis jedis = shardedJedisPool.getResource(); for (int i=0;i<1000;i++)
jedis.set("string-key-"+i,"1000"+i);
jedis.close();
shardedJedisPool.close();
123456789101112131415161718192021222324252627282930
进行运行,查看结果
可以进行检测,6379端口的客户端是否存在6380端口的key
从图中可以看出,返回0,说明不存在
单节点实例还是比较简单的,平时做个测试,写个小程序如果需要用到缓存的话,启动一个
Redis 还是很轻松的,做为一个 key/value 数据库也是可以胜任的
我的官方群点击此处
二、主从模式(master/slaver)
redis 主从模式配置
主从模式:
redis 的主从模式,使用异步复制,slave 节点异步从 master 节点复制数据,master
节点提供读写服务,slave 节点只提供读服务(这个是默认配置,可以通过修改配置文件
slave-read-only 控制)。master 节点可以有多个从节点。配置一个 slave 节点只需要在
redis.conf 文件中指定 slaveof master-ip master-port 即可。
从节点开启主从复制,有 3 种方式:
配置文件
在从服务器的配置文件中加入:slaveof
启动命令
redis-server 启动命令后加入:slaveof
客户端命令
Redis 服务器启动后直接通过客户端执行命令:slaveof,则该 Redis
实例成为从节点。
上述 3 种方式是等效的,下面以客户端命令的方式为例,看一下当执行了 slaveof 后,Redis
主节点和从节点的变化。
本示例:一个 master 节点有两个 slave 节点
配置:
1,cd /usr/local/redis/redis-4.0.2
切换到当前 redis 安装路径
2, mkdir config
新建一个文件夹,存放 redis 的配置文件
3,在 config 下,新建三个配置文件,如下:
cd config
vi master-6739.conf
bind 0.0.0.0
port 6379
logfile "6379.log"
dbfilename "dump-6379.rdb"
daemonize yes
rdbcompression yes
vi slave-6380.confbind 0.0.0.0
port 6380
logfile "6380.log"
dbfilename "dump-6380.rdb"
daemonize yes
rdbcompression yes
slaveof 192.168.81.135 6379
vi slave-6381.conf
bind 0.0.0.0
port 6381
logfile "6381.log"
dbfilename "dump-6381.rdb"
daemonize yes
rdbcompression yes
slaveof 192.168.81.135 6379
master-6739.conf,为主节点配置文件,slave-6380.conf,slave-6381.conf 为从节点配置文件
在从节点的配置文件中使用:slaveof 指定 master 节点
以上是关于redis服务搭建有几种方式的主要内容,如果未能解决你的问题,请参考以下文章