一、基础介绍
Redis全称为RemoteDictionaryServer(远程数据服务),是一款开源的基于内存的键值对存储系统,其主要被用作高性能缓存服务器使用,当然也可以作为消息中间件和Session共享等。
1.1 主要功能
-
缓存
-
排行榜功能
-
计数器/限速器
-
好友关系
-
简单消息队列
-
session共享
1.2 主要模式
-
单机模式
-
主从模式
-
哨兵模式
-
集群模式
二、redis模式
2.1 单机模式
Redis单副本,采用单个Redis节点部署架构,没有备用节点实时同步数据,不提供数据持久化和备份策略,适用于数据可靠性要求不高的纯缓存业务场景。
优点:
部署简单。
成本低,没有备用节点,不需要其他的开支。
高性能,单机不需要同步数据,数据天然一致性。
缺点:
可靠性保证不是很好,单节点有宕机的风险。
单机高性能受限于CPU的处理能力,redis是单线程的。
2.2 主从模式
所有对数据库的修改操作请求都发送到主数据库上,再由主数据库将数据同步到从数据库上。也就是说这个过程中,主数据库承担写操作和数据同步的任务,而从数据库则可以承当读操作的任务,这样可以缓解整个系统的读压力。也就是说:将数据写(修改)到主数据库上,读数据的话是从从数据库中读
优点:
一旦主节点宕机,从节点作为主节点的备份可以随时顶上来。
扩展主节点的读能力,分担主节点读压力。
高可用基石:主从复制还是哨兵模式和集群模式能够实施的基础。
缺点:
主节点宕机,从节点晋升成主节点的过程需要人工干预。
主节点的写能力受到单机的限制。
主节点的存储能力受到单机的限制。
2.3 哨兵模式
Redis主从模式虽然能做到很好的数据备份,但是他并不是高可用的。一旦主服务器点宕机后,只能通过人工去切换主服务器。因此Redis的哨兵模式也就是为了解决主从模式的高可用方案。
哨兵模式引入了一个Sentinel系统去监视主服务器及其所属的所有从服务器。一旦发现有主服务器宕机后,会自动选举其中的一个从服务器升级为新主服务器以达到故障转义的目的。
redis.conf配置文件
#默认是127.0.0.1,修改的 IP 如果不为本机 IP 是无法启动的。可以直接注释 bind,这样所有机器可连,但会受 protected-mode 参数影响。
bind 127.0.0.1
#保护模式下,无论 bind 是否被注释都无法远程访问。想允许外网或局域网访问需要关闭保护模式,且注释 bind。
protected-mode yes
#是否以守护进程的方式运行,默认否
daemonize no
#以守护进程方式运行时,Redis默认会把pid写入/var/run/redis.pid文件
pidfile /var/run/redis.pid
#默认端口为6379
port 6379
#日志
logfile "/apps/svr/redis_6379/logs/redis.log"
#数据存放目录
dir "/apps/data/redis_6379"
sentinel.conf配置文件
#告诉sentinel去监听地址为ip:port的一个master,这里的master-name可以自定义,quorum是一个数字,指明当有多少个sentinel认为一个master失效时,master才算真正失效,一般设置比从节点个数一半多一个。
sentinel monitor
#设置连接master和slave时的密码,注意的是sentinel不能分别为master和slave设置不同的密码,因此master和slave的密码应该设置相同。
sentinel auth-pass
redis常用命令
redis-server redis.conf #指定配置文件启动redis
redis-cli -h [ip] -p [port] #登陆指定端口的redis服务
info sentinel #在哨兵节点中执行info Sentinel查看哨兵信息
info replication #在redis节点中查看主从状态
redis-cli -p [port] shutdown #关闭节点