1. 认识Redis
Redis是一个基于内存运行的缓存中间件,有着多种的数据范例可供使用。Redis的使用主要是为关系性数据库(MySQL等)分担压力,在高并发情况下MySQL执行命令的压力是很大的,容易宕机,以是需要中间件分担压力
2. Redis的数据范例
数据范例 | 特性 | 实际使用 | String | 二进制安全,可以存放所有范例的数据
最大内存512M
存在INCR、DECR方法
| 用作热数据缓存
做访问量、点赞数的加减
| list | 双向链表 | 日记记录,文章推送 | set | 无序去重
有spop方法,随机弹出一个
集合运算
| 抽奖功能
朋友圈点赞,可能相识的人
| zset | 存在分数排名的set | 热门,排名榜单 | bitmap | 一个8bit位为一组的数据
0-7,8-15,16-23,24-31
| 可记录打卡,签到 | HyperLogLog
| 基数统计
计算两个数据的基数
| 统计去重访问量
| GEO
| 地理位置 | 计算位置相关的数据 | hash | 类似map的数据结构 | | Stream
| 消息流 | | bitfield
| 二进制操作 | | 3. 持久化
RDB | 快照生存,设定一定的时间和操作次数,主动生存 | save 90 10
90秒内存在10次操作生存一次快照
| AOF
| 操作记录,全部记录 | 偏移量同步 | 4. 事务、管道
Redis也存在事务,事务开启存在两种情况,一种是语法错误后直接放弃这次操作;第二种是运行中数值发生错误,其他操作正常见效,错误的操作不见效
Redis管道,一次性将多条命令进行执行
5. Redis单机、主从、集群安装部署
5.1. 单机版命令
redis安装步调
- # 查看gcc版本
- gcc -v
- # 解压安装包
- tar -zxvf redis-7.0.15.tar.gz
- # 安装redis,需要进入redis目录下
- make && make install
- # 启动redis
- redis-server redis.conf
- # 登录客户端
- redis-cli -a duomu -p 6379
复制代码 redis配置文件
- # redis.conf配置
- # 对外访问
- bind 0.0.0.0
- # 守护进程
- daemonize yes
- # 保护模式
- protected-mode no
- # 端口
- port 6379
- # 进程文件
- pidfile /var/run/redis_server.pid
- # log日志
- logfile "./redis_server.log"
- # 目录文件
- dir ./
- # RBD文件
- dbfilename dump.rdb
- # 保存设置
- save 60 10
- # AOF记录操作
- appendonly yes
- # AOF文件
- appendfilename "appendonly.aof"
- # 登录密码
- requirepass duomu
- # 从机认证密码
- masterauth duomu
复制代码 5.2. 主从+哨兵
redis主从架构一般需要哨兵监听,如果主机宕机了,哨兵会通过投票选出哨兵的leader,然后leader会在从机中选出一个升级为主机。如果主机重启了,那么它会降级为从机
主机配置
- # 主机配置
- # redis.conf配置
- # 对外访问
- bind 0.0.0.0
- # 守护进程
- daemonize yes
- # 保护模式
- protected-mode no
- # 端口
- port 6379
- # 进程文件
- pidfile /var/run/redis_server.pid
- # log日志
- logfile "./redis_server.log"
- # 目录文件
- dir ./
- # RBD文件
- dbfilename dump.rdb
- # 保存设置
- save 60 10
- # AOF记录操作
- appendonly yes
- # AOF文件
- appendfilename "appendonly.aof"
- # 登录密码
- requirepass duomu
复制代码 从机配置
- # 从机配置
- # redis.conf配置
- # 对外访问
- bind 0.0.0.0
- # 守护进程
- daemonize yes
- # 保护模式
- protected-mode no
- # 端口
- port 6379
- # 进程文件
- pidfile /var/run/redis_server.pid
- # log日志
- logfile "./redis_server.log"
- # 目录文件
- dir ./
- # RBD文件
- dbfilename dump.rdb
- # 保存设置
- save 60 10
- # AOF记录操作
- appendonly yes
- # AOF文件
- appendfilename "appendonly.aof"
- # 登录密码
- requirepass duomu
- # 配置主从
- replicaof <主ip> <端口>
- # 主机认证密码
- masterauth duomu
复制代码 哨兵配置
- # 哨兵配置
- bind 0.0.0.0
- protected-mode no
- port 26379
- daemonize yes
- pidfile /var/run/redis-sentinel.pid
- logfile "./sentinel.log"
- # 哨兵监听主机 2为投票数 一般为 (监听器总数/2)+1
- sentinel monitor mymaster <主机ip> <端口> 2
- # 主机秘钥
- sentinel auth-pass mymaster duomu
复制代码 5.3. 集群安装
集群使用了CRC16的算法进行哈希槽的分配,哈希槽分区(CRC(16) mod 16384),
最高分区为1000个,16384为槽数2^14
如果主机宕机,从机遇升级为主机,主机重启后会降级为从机
如果想保持原来配置,需要通过命令进行变更,节点附属调解 cluster failover
redis安装6台服务
- # redis安装6台服务
- bind 0.0.0.0
- daemonize yes
- protected-mode no
- port 6381
- pidfile /var/run/redis_cluster.pid
- logfile "./cluster.log"
- dir ./cluster
- dbfilename dump.rdb
- appendonly yes
- appendfilename "appendonly.aof"
- requirepass duomu
- masterauth duomu
- # 集群开启
- cluster-enabled yes
- cluster-config-file nodes.conf
- cluster-node-timeout 5000
复制代码 上面配置启动redis服务后,将所有服务器加入集群,构建三主三从
- # 后面为真实的redis ip和端口
- redis-cli -a duomu --cluster create --cluster-replicas 1 192.168.56.110:6381 192.168.56.110:6382 192.168.56.111:6381 192.168.56.111:6382 192.168.56.112:6381 192.168.56.112:6382
- # 登录redis查询 节点
- redis-cli -a duomu
- cluster nodes
- # 查看redis集群
- redis-cli -a duomu --cluster check <任一个ip>:<端口>
- # 新增master节点
- redis-cli --cluster add-node <new-node-ip:port> <existing-node-ip:port>
- # master节点需要重新分配哈希槽
- redis-cli -a duomu --cluster reshard <new-node-ip:port>
- # 新增slave节点
- redis-cli --cluster add-node <new-node-ip:port> <existing-node-ip:port> --cluster-slave
- # 只能删除从机,如果要删除master需要将哈希槽转移
- redis-cli -a duomu --cluster del-node <del-node-ip:port> <id>
复制代码 5.4. docker部署集群
后续补上
6. 附录
安装包和配置:https://pan.baidu.com/s/1PeACXeaqQy9tPE89mw0wGQ?pwd=jj9e
学习来源:https://www.bilibili.com/video/BV13R4y1v7sP
免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作!更多信息从访问主页:qidao123.com:ToB企服之家,中国第一个企服评测及商务社交产业平台。 |