当前位置: 首页 > news >正文

Redis初阶笔记

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

http://www.lryc.cn/news/536503.html

相关文章:

  • electron.vite 项目创建以及better-sqlite3数据库使用
  • 【新品解读】AI 应用场景全覆盖!解码超高端 VU+ FPGA 开发平台 AXVU13F
  • Proxmox VE 8.3 qm 方式导入ESXi Linux OVA UEFI模式虚拟机
  • OpenAI 放王炸,将发布整合多项技术的 GPT-5,并免费无限使用,该模型有哪些技术亮点
  • 【前端框架与库】「深入理解 Vue 插槽」:类型、用法与实际场景解析,增强组件复用性的利器
  • 对比 LVS 负载均衡群集的 NAT 模式和 DR 模式,比较其各自的优势 与基于 openEuler 构建 LVS-DR 群集
  • matplotlib绘制频率分布直方图
  • 相得益彰,Mendix AI connector 秒连DeepSeek ,实现研发制造域场景
  • shell脚本自动安装MySQL8
  • Git | 相关命令
  • RealClip正式发布:重新定义轻量化数字内容交互体验
  • Linux内核 - 非仿生机器人之感知主控系统(协议栈)
  • CZML 格式详解,javascript加载导出CZML文件示例
  • 【gRPC-gateway】auth-通过拦截器从上下文中提取元数据用于认证,与从http header转发待认证数据到上下文进行验证,go案例
  • Sass基础知识以及常用知识整理
  • Redis 内存回收机制
  • docker安装mongo,导入、导出数据
  • Excel常用操作
  • 嵌入式EasyRTC实时通话支持海思hi3516cv610,编译器arm-v01c02-linux-musleabi-gcc
  • 在freertos中,中断优先级和任务优先级之间的关系和使用方法
  • 设置ollama接口能外部访问
  • Go GUI 框架, energy many-browser 示例解读
  • Docker 部署 MongoDB | 国内阿里镜像
  • 软件工程-软件设计
  • Elasticsearch:15 年来致力于索引一切,找到重要内容
  • DeepSeek大模型一键部署解决方案:全平台多机分布式推理与国产硬件优化异构计算私有部署
  • Docker 部署 MySQL-5.7 单机版
  • 打破AI黑盒,拥抱开源力量:基于openGauss+DeepSeek的本地知识库,打造你的专属AI助手!
  • java配置api,vue网页调用api从oracle数据库读取数据
  • visual studio导入cmake项目后打开无法删除和回车