redius高可用

  • redius的常见问题
  1. 缓存击穿

缓存击穿是指,长时间高并发访问某一数据内容,当该内容在redius中过期,突然间给数据库造成巨大压力,导致数据库崩溃。

解决方案:对高并发热点内容设置永不过期。

  1. 缓存雪崩

缓存雪崩是指,redis中的数据内容同时过期,从而同时访问数据库,造成数据库压力。

解决方案:对不同内容,分类设置批量时间。

  1. 缓存穿透

缓存穿透是指,用户高并发访问缓存中没有且数据库中没有的内容,导致redius频繁的查询数据库,造成数据库压力。

解决方案:对数据库中没有的内容,redius可以增加键值对,其值为null

  • redius的高可用
  1. 主从复制:实现读写分离
[root@localhost bin]# redis-server /usr/local/redis-3.0.7/redis1.conf 
[root@localhost bin]# redis-server /usr/local/redis-3.0.7/redis.conf 
[root@localhost bin]# redis-cli -p 6380
127.0.0.1:6380> info
# Server
redis_version:3.0.7
redis_git_sha1:00000000
redis_git_dirty:0
redis_build_id:f8a7d182c77f5444
redis_mode:standalone
os:Linux 3.10.0-957.el7.x86_64 x86_64
arch_bits:64
multiplexing_api:epoll
gcc_version:4.8.5
process_id:7694
run_id:19349ef3b8473ec96747ce934a8b3e856f967055
tcp_port:6380
uptime_in_seconds:170
uptime_in_days:0
hz:10
lru_clock:3735
config_file:/usr/local/redis-3.0.7/redis1.conf

# Clients
connected_clients:1
client_longest_output_list:0
client_biggest_input_buf:0
blocked_clients:0

# Memory
used_memory:1884648
used_memory_human:1.80M
used_memory_rss:9826304
used_memory_peak:1884648
used_memory_peak_human:1.80M
used_memory_lua:36864
mem_fragmentation_ratio:5.21
mem_allocator:jemalloc-3.6.0

# Persistence
loading:0
rdb_changes_since_last_save:0
rdb_bgsave_in_progress:0
rdb_last_save_time:1577061958
rdb_last_bgsave_status:ok
rdb_last_bgsave_time_sec:0
rdb_current_bgsave_time_sec:-1
aof_enabled:0
aof_rewrite_in_progress:0
aof_rewrite_scheduled:0
aof_last_rewrite_time_sec:-1
aof_current_rewrite_time_sec:-1
aof_last_bgrewrite_status:ok
aof_last_write_status:ok

# Stats
total_connections_received:3
total_commands_processed:162
instantaneous_ops_per_sec:0
total_net_input_bytes:5609
total_net_output_bytes:290
instantaneous_input_kbps:0.03
instantaneous_output_kbps:0.00
rejected_connections:0
sync_full:2
sync_partial_ok:0
sync_partial_err:0
expired_keys:0
evicted_keys:0
keyspace_hits:0
keyspace_misses:0
pubsub_channels:0
pubsub_patterns:0
latest_fork_usec:648
migrate_cached_sockets:0

# Replication
role:master
connected_slaves:1
slave0:ip=127.0.0.1,port=6379,state=online,offset=225,lag=0
master_repl_offset:225
repl_backlog_active:1
repl_backlog_size:1048576
repl_backlog_first_byte_offset:2
repl_backlog_histlen:224

# CPU
used_cpu_sys:0.64
used_cpu_user:0.04
used_cpu_sys_children:0.00
used_cpu_user_children:0.00

# Cluster
cluster_enabled:0

# Keyspace
127.0.0.1:6380> set key 'calue'
OK

  1. 哨兵sentinel实现主节点的高可用

  哨兵sentinel是为可实现主节点高可用而设计的,哨兵sentinel会不间断的向主节点发送消息。如果在一定时间内,主节点没有响应,哨兵sentinel则认为该主节点已失效,切换从节点为主节点。具体配置如下:

# 外部可以访问
bind 0.0.0.0
sentinel monitor mymaster 127.0.0.1 6379 1
sentinel down-after-milliseconds mymaster 10000
sentinel failover-timeout mymaster 60000
sentinel parallel-syncs mymaster 1
​

  mymaster 表示配置主节点名称 ,后续一致即可。127.0.0.1 6379 表示主节点的ip地址和端口号  1表示只需要1个哨兵sentinel认为主节点已失效,则进行故障转移。注意 哨兵sentinel可以运行多个,实现高可用。

 mymaster 10000表示当哨兵sentinel向主节点发送消息 1秒后如果没有收到主节点的响应,则认为主节点已失效。

 mymaster 60000表示当哨兵sentinel执行故障转移6秒后,没有触发故障转移操作,则认为此次故障转移失效。

  mymaster 1 表示执行故障转移后1个子节点向主节点同步消息。

   具体代码如下:

  

[root@localhost bin]# redis-server /usr/local/redis-3.0.7/redis2.conf 
[root@localhost bin]# redis-sentinel /usr/local/redis-3.0.7/sentinel1.conf
  1. redius cluster实现分布式存储

1 配置redis.conf文件,并启动,详细配置如下:

# 不能设置密码,否则集群启动时会连接不上
# Redis服务器可以跨网络访问
bind 0.0.0.0
# 修改端口号
port 7001
# Redis后台启动
daemonize yes
# 开启aof持久化
appendonly yes
# 开启集群
cluster-enabled yes
# 集群的配置 配置文件首次启动自动生成
cluster-config-file nodes.conf
# 请求超时
cluster-node-timeout 5000

 

2 启动redis 集群

  安装ruby环境:

 

# 安装ruby
yum -y install ruby ruby-devel rubygems rpm-build
​
# 升级ruby版本,redis4.0.14集群环境需要2.2.2以上的ruby版本
yum install centos-release-scl-rh
yum install rh-ruby23  -y
scl enable rh-ruby23 bash
​
# 查看ruby版本
ruby -v

   下载符合环境要求的gem,下载地址如下:

    https://rubygems.org/gems/redis/versions/4.1.0 并安装

  

gem install redis-4.1.0.gem

   进入redis安装目录,使用redis自带的集群管理脚本,执行命令:

   

# 进入redis安装包
cd /root/redis-4.0.14/src/
# 查看集群管理脚本
ll *.rb
# 使用集群管理脚本启动集群,下面命令中的1表示为每个主节点创建1个从节点
./redis-trib.rb create --replicas 1 127.0.0.1:7001 127.0.0.1:7002 \
127.0.0.1:7003 127.0.0.1:7004 127.0.0.1:7005 127.0.0.1:7006

   使用redis集群 ,一定要加 -c

   

# redis-cli -h 127.0.0.1 -p 7001 -c

 

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值