Redis主从复制与集群搭建

1. 主从复制

1.1 主从复制介绍

应用层向master中写数据,然后,master将数据复制到slave中

优点:

1. 读写分离, 通过master写数据,通过slave读取数据

2. 容灾的快速恢复: 当一台从服务器挂掉,我们可以快速的到第二台服务器中读取

配置集群,当主服务器挂掉,从机根据优先级自动升级

1.2 主从复制配置

  • 创建配置主从复制的文件夹
  • 拷贝redis.config的配置文件
  • 新建6379,6380,6381的redis配置文件,配置一主两从
  • 在三个配置文件中写入基本配置
include /root/myredies/redis.conf
pidfile "/var/run/redis_6379.pid"
port 6379
dbfilename "dump6379.rdb"

INFO replication 查询主从关系

SLAVEOF 192.168.42.101 6379 设置主从关系

slaveof no one将从机变成主机

哨兵模式自动反客为主

  • 配置sentinel.conf文件
sentinel monitor mymaster 192.168.42.101 6379 1 # 1表示只需要一个slave同意就可以升级为master
  • 启动 redis-sentinel ./sentinel.conf

2. 集群

2.1 配置文件

cluster-enabled yes #开启集群
cluster-config-file nodes-6381.conf #设置配置文件名称
cluster-node-timeout 15000 #超时时间

2.2 启动redis

2.3 创建集群

redis-cli --cluster create --cluster-replicas 1 ***.101:6379 ***101:6380 ***.101:6381 ***101:6389 ***101:6390 ***101:6391

连接redis : redis-cli -c -p port

cluster  nodes查看节点信息

mset name{user} chay age{user} 26 gender{user} 1 设置多个值,user为组

查看当前键所在插槽 cluster keyslot user

cluster countkeysinslot 5474 返回当前插槽所存在多少个键

CLUSTER GETKEYSINSLOT 5474 3 返回三5474插槽中的三个键

3. 缓存穿透

  •  当应用服务器的压力突然变大了。
  •  redis命中率降低
  •  一直查询数据库

1. redis查询不到数据

2. 出现了很多非正常url访问

解决方案:

1 对控制进行缓存

2 设置可访问的名单,借助bitmap

3 采用布隆过滤器 命中率不好

4 对redis进行实时监控, 如果一个ip在一直访问一个错误的名单,那么我们设置黑名单

4.缓存击穿

  • 数据库访问压力瞬时增加
  • redis 里边并没有出现大量的key过期
  • redis正常的运行状态

原因: redis中某个key过期,但是大量访问这个key

解决方案:

1. 预先设置热门数据

2. 实时调整,调整key的过期时间

3. 使用锁

5. 缓存雪崩

在极少的时间段,查询大量key的集中过期情况

解决方案:

1. 多重缓存 nginx, redis, ehcache

2. 锁或者队列

3. 设置过期标志更新缓存

4. 将缓存失效时间分散开

你可能感兴趣的:(redis,数据库,database)