Redis
redis是内存型数据库,可以用作数据库、缓存和消息中间件
断电、进程重启,数据丢失. 支持配置redis的数据持久化,防止数据丢失
redis支持master-slave复制,读写分离,防止单点故障,数据丢失
#
五大数据类型- string,字符串类型
- hash,哈希类型,如同python的dict
- set,无序集合
- zset,有序集合
- list,双向队列,向左插入数据,向右插入数据,向左,右,提取数据
#
redis安全启动与配置文件#
安装方式1#
安装2、配置安装
修改redis.conf,更改默认端口,设置密码,开启安全模式等操作
启动redis
连接redis服务端,指定ip地址和端口,以及密码连接redis
#
redis常用指令#
redis数据持久化AOF(append-only log file)
记录服务器执行的所有变更操作命令(例如set del等)并在服务器启动时,通过重新执行这些命令来还原数据集
AOF文件中的命令全部以redis协议的格式保存,新命令追加到文件末尾
#
配置参数准备一个新的配置文件,里面定义了aof的功能性参数即可使用
写入如下内容
创建aof的数据文件夹
启动aof的redis的数据库
aof机制的数据库,在首次启动的时候,就会生成aof数据文件了,如下
#
redis主从复制#
配置参数准备好3个redis的配置文件,分别写入如下内容
生成文件夹,并启动
#
手动进行主从复制故障切换如果一个 从库 挂了,问题不大,再弄一个就可以了 但是如果 主库 挂了,问题就很大了
所以需要让 从库 在 主库 挂了之后切换成新的主库,翻身农奴做主人
你会发现如此手动切换复制关系是很难受的,如果半夜宕机.....因此需要一个保安帮你看着~
#
redis高可用哨兵Redis-Sentinel是redis官方推荐的高可用性解决方案,当用redis作master-slave的高可用时,
如果master本身宕机,redis本身或者客户端都没有实现主从切换的功能。
而redis-sentinel就是一个独立运行的进程,用于监控多个master-slave集群,自动发现master宕机,进行自动切换slave > master。
#
redis哨兵的工作原理配置好redis的哨兵进程,一般都是使用3个哨兵(保安)
哨兵的作用是盯着redis主库,不断询问它是否存活,如果超过30s(设置的时间阈值)都没有回应,3个哨兵会判断主库宕机,谈话进行投票机制,因为3个哨兵,要自动的去选择从库为新的主库,每个哨兵的意见可能不一样 因此引出投票机制,少数服从多数
当多个哨兵达成一致,选择某一个从库节点,自动的修改他们的配置文件,切换新的主库,此时如果宕机的主库恢复,哨兵会自动将其加入集群,且自动分配为新的从库,这一切都是自动化的
#
配置Redis Sentinel一主二从的环境搭建好后,准备招来3个值班的redis哨兵
分别准备3个哨兵的配置文件
分别修改如下(三个哨兵的配置文件,仅仅是端口号的不同,修改对应的端口号即可)
分别启动3个哨兵进程,以及查看进程信息
检查redis哨兵的配置文件,以及哨兵的状态
#
redis-cluster配置并发问题
redis官方生成可以达到10万/每秒,每秒执行10万条命令 假如业务需要每秒100万的命令执行呢?
数据量太大
一台服务器内存正常是16-256G,就像新浪微博作为世界上最大的redis存储,就超过1TB的数据,去哪里买这么大的内存条?
各大公司有自己的解决方案,推出各自的集群功能,核心思想都是将数据分片(sharding)存储在多个redis实例中,每一片就是一个redis实例
各大企业集群方案:
- twemproxy由Twitter开源
- codis由豌豆荚开发,基于co和c开发
- redis-cluster官方3.0版本后的集群方案
具体搭建:cnblogs.com/pyyu/p/9844093.html