redis实操+理论

一:redis单机模式

1).解压 Redis安装包

[root@localhost src]# tar -zxvf redis-5.0.4.tar.gz

å¨è¿éæå¥å¾çæè¿°

看情况执行:

yum install gcc-c++ -y
//执行命令可完成安装
make MALLOC=libc

 2:安装

å¨è¿éæå¥å¾çæè¿°

 

3.修改redis的配置文件(展现行号 :set nu)

(1): 注释IP绑定

å¨è¿éæå¥å¾çæè¿°

(2): 关闭保护模式

å¨è¿éæå¥å¾çæè¿°

(3) 开启后台启动

å¨è¿éæå¥å¾çæè¿°

4:redis服务器端相关命令

a.启动命令: redis-server redis.conf
b.检索命令: ps -ef | grep redis
c.进入客户端: redis-cli -p 6379
d.关闭redis: kill -9 PID号 | redis-cli -p 6379 shutdown

å¨è¿éæå¥å¾çæè¿°

 

二:redis分片模式:(减少寻址时间,提升效率)

准备端口号:
1.6379
2.6380
3.6381

å¨è¿éæå¥å¾çæè¿°

修改端口号: 将各自的端口号进行修改

[root@localhost shards]# vim 6380.conf
[root@localhost shards]# vim 6381.conf

å¨è¿éæå¥å¾çæè¿°

启动3台redis服务器(相当于启动3台redis)

redis-server 6379.conf
redis-server 6380.conf
redis-server 6381.conf

 Ã¥Â¨Ã¨Â¿Ã©Ã¦Ã¥Â¥Ã¥Â¾Ã§Ã¦Ã¨Â¿Â°

 ps -ef | grep redis

å¨è¿éæå¥å¾çæè¿°

3台redis没有联系,各自独立

三:配置redis主从的结构(1)

策略划分: 1主2从 6379主 6380/6381从

1.将分片的目录复制 改名位sentinel

å¨è¿éæå¥å¾çæè¿°

2.重启三台redis服务器

å¨è¿éæå¥å¾çæè¿°

3.检查redis节点的主从的状态

å¨è¿éæå¥å¾çæè¿°

4.实现主从挂载(将6380和6381挂载到6379下)

å¨è¿éæå¥å¾çæè¿°

5.检查主机的状态

å¨è¿éæå¥å¾çæè¿°

主从结果配置(2) 

分别在从节点上配上主节点的信息

 

四:哨兵配置

1).复制配置文件
cp sentinel.conf sentinel/

2).修改保护模式

å¨è¿éæå¥å¾çæè¿°

3).开启后台运行

å¨è¿éæå¥å¾çæè¿°

4).设定哨兵的监控
其中的1 表示投票生效的票数 当前只有一个哨兵所以写1

å¨è¿éæå¥å¾çæè¿°

5).修改宕机的时间

å¨è¿éæå¥å¾çæè¿°

6).选举失败的时间
说明:如果选举超过指定的时间没有结束,则重新选举.

å¨è¿éæå¥å¾çæè¿°

7).启动哨兵服务

å¨è¿éæå¥å¾çæè¿°

哨兵实现高可用

测试(宕机命令)

redis-cli -p 6379 shutdown

1.检查主机的状态
2.将redis主服务器宕机 等待10秒 之后检查从机是否当选新的主机

å¨è¿éæå¥å¾çæè¿°

3.重启6379服务器., 检查是否成为了新主机的从

å¨è¿éæå¥å¾çæè¿°

 

五:通过sentinel的配置实现redis主从复制的高可用

 

一:sentinel节点配置文件的主要配置项

1.sentinel monitor [name] [host] [port] [n]

#监控主节点名称[name]

#监控主节点IP[host]

#监控主节点[port]

#[n]:至少有n个sentinel节点发现master有故障,才会自动进行sentinel故障转移

2.sentinel down-milliseconds [name] [milliseconds]
#[milliseconds]毫秒ping不同,则主观认为该节点有故障

3.sentinel parallel-syncs [name] [n]
故障转移后重新进行主从复制

#[n] = 1:代表串行,一个复制完成后,另一个才能复制

#[n] = 2或>2:代表并行,2个同时复制,或者多个同时复制

4.sentinel failover-timeout [name] [milliseconds]

#从故障转移开始milliseconds毫秒没有完成转移操作,则视为转移失败

二:配置sentinel的步骤

1.配置sentinel文件

daemonize yes
port 26379
bind 0.0.0.0
sentinel monitor mymaster 192.168.145.128 6666 2
sentinel down-after-milliseconds mymaster 30000
sentinel parallel-syncs mymaster 1
sentinel failover-timeout mymaster 15000

2.启动sentinel服务

启动sentinel服务的命令:./src/redis-sentinel [配置文件]

3.连接到sentinel的服务

./src/redis-cli -p [sentinel服务的端口号]

4.查看sentinel服务是否启动成功

在sentinel客户端输入 info 命令会出现sentinel节点的相关信息

# Server

redis_version:5.0.3
redis_git_sha1:00000000
redis_git_dirty:0
redis_build_id:129165fe599a95d
redis_mode:sentinel
os:Linux 3.10.0-862.el7.x86_64 x86_64
arch_bits:64
multiplexing_api:epoll
atomicvar_api:atomic-builtin
gcc_version:4.8.5
process_id:3852
run_id:7314d5bb4d634df94656b905b15aa4ae9ee32343
tcp_port:26379
uptime_in_seconds:537
uptime_in_days:0
hz:18
configured_hz:10
lru_clock:9993431
executable:/usr/software/redis-5.0.3/./src/redis-sentinel
config_file:/usr/software/redis-5.0.3/sentinel.custom26379.conf

# Clients

connected_clients:3
client_recent_max_input_buffer:2
client_recent_max_output_buffer:0
blocked_clients:0

# CPU

used_cpu_sys:1.650110
used_cpu_user:1.141941
used_cpu_sys_children:0.000000
used_cpu_user_children:0.000000

# Stats

total_connections_received:3
total_commands_processed:1352
instantaneous_ops_per_sec:3
total_net_input_bytes:78650
total_net_output_bytes:8155
instantaneous_input_kbps:0.28
instantaneous_output_kbps:0.02
rejected_connections:0
sync_full:0
sync_partial_ok:0
sync_partial_err:0
expired_keys:0
expired_stale_perc:0.00
expired_time_cap_reached_count:0
evicted_keys:0
keyspace_hits:0
keyspace_misses:0
pubsub_channels:0
pubsub_patterns:0
latest_fork_usec:0
migrate_cached_sockets:0
slave_expires_tracked_keys:0
active_defrag_hits:0
active_defrag_misses:0
active_defrag_key_hits:0
active_defrag_key_misses:0

# Sentinel

# 主节点
sentinel_masters:1
sentinel_tilt:0
sentinel_running_scripts:0
sentinel_scripts_queue_length:0
sentinel_simulate_failure_flags:0

#主节点的描述信息,slaves=2:两个从节点,sentinels=3:三个sentinel节点
master0:name=mymaster,status=ok,address=192.168.145.128:6666,slaves=2,sentinels=3

3-1:sentinel节点是如何获取以上信息的? →都指向master,获取master中的信息


4.再次查看sentinel配置文件(cat 配置文件名称),会出现一些slave,其他sentinel的配置信息

daemonize yes
port 26379
bind 0.0.0.0
sentinel myid a0b40c1e998b341bfa3ed3cf4e78c5cf226fae38
sentinel deny-scripts-reconfig yes
sentinel monitor mymaster 192.168.145.128 6666 2
sentinel failover-timeout mymaster 15000

# Generated by CONFIG REWRITE
dir "/usr/software/redis-5.0.3"
protected-mode no
sentinel config-epoch mymaster 0
sentinel leader-epoch mymaster 0

# 从节点的信息
sentinel known-replica mymaster 192.168.145.128 6668
sentinel known-replica mymaster 192.168.145.128 6667

#其他sentinel的信息
sentinel known-sentinel mymaster 192.168.145.128 26381 20d86425d742e85cedd8a86e576da58d90b08b21
sentinel known-sentinel mymaster 192.168.145.128 26380 7f2886c479a783119b4bb580704ab5b8215dcb87
sentinel current-epoch 0

 

 

 

 

 

五:redis集群的配置

redis分片特点:
1.可以实现Redis内存数据的扩容.
2.redis分片本身没有高可用效果的.如果宕机将直接影响用户的使用.

redis哨兵特点:
1.Redis哨兵可以实现Redis节点的高可用.但是哨兵本身没有实现高可用机制.(最好不要引入第三方)
2.Redis哨兵有主从的结构 实现了内存数据的备份. 但是没有实现内存扩容的效果.

集群:
需要Redis内容扩容同时需要Redis高可用性所以应该使用Redis集群.
 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值