搭建之前请务必了解Redis的工作原理,切勿盲目搭建!!!
Redis(Remote Dictionary Server)是一个开源的高性能键值存储数据库,它主要用于存储数据、缓存和消息传递。Redis支持多种数据结构,如字符串、列表、集合、有序集合、哈希表等,这些数据结构使得Redis能够解决很多不同类型的问题。
主要用途包括:
缓存:将常用的数据存储在Redis中,以加快读取速度,减轻后端数据库的负载。这有助于提高应用程序的性能和响应时间。
会话存储:将用户会话数据存储在Redis中,使得分布式系统能够无缝地共享和管理会话状态。
计数器:用于实时统计,如网站访问次数、点赞数、在线用户数等。
消息队列:作为发布/订阅系统或消息队列,用于在不同组件或服务之间传递消息,实现解耦和异步处理。
排行榜/排名:用于存储并获取排行榜数据,如游戏排行、热门文章等。
地理空间索引:支持存储和查询地理位置信息,可用于构建位置相关的应用。
Redis的工作原理:
内存存储:Redis的所有数据都存储在内存中,因此读写速度非常快。这也是Redis高性能的主要原因。
单线程:Redis通过单线程处理所有的客户端请求,避免了多线程的竞争和同步问题,简化了数据结构的处理。然而,Redis在内部使用了非阻塞的I/O多路复用机制,使得它能够同时处理多个客户端请求。
持久化:Redis支持两种方式的数据持久化,即RDB(Redis Database Dump)和AOF(Append-Only File)。RDB通过将数据快照保存到硬盘中,而AOF则记录每个写操作的日志,使得在重启后可以恢复数据。
主从复制:Redis支持主从复制机制,可以配置多个Redis实例之间的主从关系。主节点将数据同步到从节点,从而实现数据的备份、读写分离和负载均衡。
高可用性:Redis提供了Sentinel和Cluster两种方式来实现高可用性。Sentinel用于监控Redis主节点的状态,一旦主节点故障,会自动将从节点切换为主节点。而Cluster是一种分布式方案,将数据分片存储在多个节点上,实现了自动分片和数据复制。
(哨兵模式是一种故障转移策略,哨兵模式是在主从的基础上搭建)
下载redis安装包:
链接:https://pan.baidu.com/s/1VKrVGMyAKmMHsbwGxmwGkA
提取码:6vfw
Redis是基于C语言编写的,所有安装Redis之前需要gcc依赖
yum install -y gcc tcl
cd /usr
解压
tar -zxvf redis-7.0.12.tar.gz
进入redis7.0.12
cd redis-7.0.12
使用make 命令进行编译将.c文件编译成.o文件
make
编译成功之后会出现“It's a good idea to run 'make test'”的提示
使用命令 进行安装
make PREFIX=/usr/local/redis install
安装完后,在/usr/local/redis/bin下有几个可执行文件可以查看
ll /usr/local/redis/bin
安装目录下将redis.conf文件拷贝到/usr/local/redis目录中
cp redis.conf /usr/local/redis
进入 /usr/local/redis
cd /usr/local/redis
修改配置文件redis.conf
vim redis.conf
//让Redis绑定在 0.0.0.0 这个 IP 地址上,表示可以接收任何 IP 地址的连接。
将bind 127.0.0.1 -::1 替换为 bind 0.0.0.0
//这个表示支持后台启动
将 daemonize on 替换成 daemonize yes
//protected-mode 保护模式,一定要关闭
将protected yes 改为no
//Redis运行日志
日志logfile “./redis.log”
//登录密码 建议设置为相同密码维护成本低,不同也可以
requirepass xxxx <设置密码>
masterauth xxxx <设置密码>
注意:从服务器把修改replicaof <主服务器ip 端口> ----------------**主服务器不用配**
保存
:wq
加权限
chmod 777 redis.conf
使用bin/redis-server ./redis.conf启动redis服务
./bin/redis-server ./redis.conf
使用命令ps -ef|grep redis查看已经启动的redis服务关闭redis服务 ps -ef|grep redis
使用./bin/redis-cli 命令进入到redis的客户端
./bin/redis-cli
测试安装是否成功
修改/usr/redis-7.0.12/sentinel.conf中的配置
哨兵配置
#护模式关闭,这样其他服务起就可以访问此台redis
protected-mode no
#端口
port 26379
# 哨兵模式是否后台启动,默认no,改为yes
daemonize yes
pidfile "/var/run/redis-sentinel.pid"
# log日志保存位置
logfile "/usr/local/redis/sentinel/redis-sentinel.log"
# 工作目录
dir "/usr/redis-7.0.12"
# master主机ip地址
sentinel monitor mymaster <主服务器ip> 6379 2
# master中redis的密码
sentinel auth-pass mymaster XXXX<主密码>
# 哨兵从master节点宕机后,等待多少时间(毫秒),认定master不可用。默认30s
sentinel down-after-milliseconds mymaster 30000
#如果报错注释掉 acllog-max-len 128
acllog-max-len 128
# 当替换主节点后,剩余从节点重新和新master做同步的并行数量,默认为 1
sentinel parallel-syncs mymaster 1
# 主备切换的时间,若在3分钟内没有切换成功,换另一个从节点切换
sentinel failover-timeout mymaster 180000
#如果报错注释掉下面内容根据情况注释
sentinel deny-scripts-reconfig yes
SENTINEL resolve-hostnames no
SENTINEL announce-hostnames no
SENTINEL master-reboot-down-after-period mymaster 0
cd /usr/local/redis
mkdir sentinel
启动所有哨兵
cd /usr/local/redis/bin/
./redis-sentinel /usr/redis-7.0.12/sentinel.conf
哨兵日志
cd /usr/local/redis/sentinel/
tail -100f redis-sentinel.log
#redis启动
cd /usr/local/redis
./bin/redis-server ./redis.conf
#redis客户端登录
cd /usr/local/redis
./bin/redis-cli
#redis 哨兵日志
cd /usr/local/redis/sentinel/
tail -100f redis-sentinel.log
#redis日志
cd /usr/local/redis
tail -100f redis