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
相关文章:
Redis初阶笔记
1. 认识Redis Redis是一个基于内存运行的缓存中间件,有着多种的数据类型可供使用。Redis的使用主要是为关系性数据库(MySQL等)分担压力,在高并发环境下MySQL执行命令的压力是很大的,容易宕机,所以需要中间件…...
electron.vite 项目创建以及better-sqlite3数据库使用
1.安装electron.vite npm create quick-start/electronlatest中文官网:https://cn.electron-vite.org/ 2. 安装项目依赖 npm i3.修改 electron-builder 配置文件 appId: com.electron.app productName: text33 directories:buildResources: build files:- !**/.v…...
【新品解读】AI 应用场景全覆盖!解码超高端 VU+ FPGA 开发平台 AXVU13F
「AXVU13F」Virtex UltraScale XCVU13P Jetson Orin NX 继发布 AMD Virtex UltraScale FPGA PCIE3.0 开发平台 AXVU13P 后,ALINX 进一步研究尖端应用市场,面向 AI 场景进行优化设计,推出 AXVU13F。 AXVU13F 和 AXVU13P 采用相同的 AMD Vir…...
Proxmox VE 8.3 qm 方式导入ESXi Linux OVA UEFI模式虚拟机
前言 实现esxi ova uefi 虚拟机导入到pve,Linux UEFI 都支持 创建一个105虚拟机 qm 参数使用参考,以下可以根据自己的实际情况执行调整 esxi 导出虚拟机参考 #vmid (100 - 999999999) vmid=105# qm vm name...
OpenAI 放王炸,将发布整合多项技术的 GPT-5,并免费无限使用,该模型有哪些技术亮点
对于 ChatGPT 的免费用户,将可以无限制地访问 GPT-5,但仅限于标准的智能级别。该级别会设定滥用限制,以防止不当使用(意思就是你得付费嘛)。 OpenAI CEO Sam Altman 今天在 X 上透露了 GPT-4.5 和 GPT-5 的最新发展计划。 OpenAI 将发布代…...
【前端框架与库】「深入理解 Vue 插槽」:类型、用法与实际场景解析,增强组件复用性的利器
深入理解 Vue 插槽 [TOC](深入理解 Vue 插槽) 前言一、插槽的几种类型1. 默认插槽(Default Slot)2. 具名插槽(Named Slot)3. 作用域插槽(Scoped Slot) 二、插槽的作用与实际使用场景三、延伸知识总结 前言 …...
对比 LVS 负载均衡群集的 NAT 模式和 DR 模式,比较其各自的优势 与基于 openEuler 构建 LVS-DR 群集
一、 对比 LVS 负载均衡群集的 NAT 模式和 DR 模式,比较其各自的优势 NAT 模式 部署简单:NAT 模式下,所有的服务器节点只需要连接到同一个局域网内,通过负载均衡器进行网络地址转换,就可以实现负载均衡功能。不需要对…...
matplotlib绘制频率分布直方图
1.给了数据,让统计这些数据的分布 from matplotlib import pyplot as plt from matplotlib import rcParams import random as r# 直方图用来统计每个区间数量多少rcParams[font.sans-serif] [SimHei] rcParams[axes.unicode_minus] Falseplt.figure(figsize(20,8), dpi80)#…...
相得益彰,Mendix AI connector 秒连DeepSeek ,实现研发制造域场景
在当今快速发展的科技领域,低代码一体化平台已成为企业数字化转型的关键工具,同时,大型语言模型(LLM)如 DeepSeek 在自动生成代码和提供智能建议方面表现出色。 Mendix 于近期发布的 GenAI 万能连接器,目前…...
shell脚本自动安装MySQL8
环境:centos7版本:8.0.28安装包:mysql-8.0.28-linux-glibc2.12-x86_64.tar.xz 二进制包要求:安装包和shell脚本在同一目录下执行方式:sudo ./install_mysql8.sh #!/bin/bash# 定义MySQL安装目录和压缩包名称MYSQL_DIR…...
Git | 相关命令
相关资料 官网Git 学习教程Git 入门指南Git 的奇技淫巧Git Extras git 命令行扩展工具配置 Git 处理行结束符Git 配置多个 SSH-Key下载相关 Windows 版下载镜像使用 jsdelivr 加速 Github 仓库资源 commit 常用的 type 常用 Git 命令 [xxx] 均为可选参数 git clone # 拷贝一…...
RealClip正式发布:重新定义轻量化数字内容交互体验
在移动互联网流量红利逐渐见顶的当下,用户对即时性、碎片化娱乐与交互体验的需求持续攀升。轻量化小游戏、VR互动、数字孪生、工业仿真等内容形态迅速崛起,但开发者却面临两大核心矛盾:如何将高性能互动内容轻量化嵌入现有应用中?…...
Linux内核 - 非仿生机器人之感知主控系统(协议栈)
Linux内核 - 非仿生机器人之感知主控系统(协议栈) 注:该项目为18年实习期间,参与非仿生六足机器人(Linux方案)的个人理解和积累。时至今日,再看其实仅为一套系统编程相关框架,一直为…...
CZML 格式详解,javascript加载导出CZML文件示例
示例地址:https://dajianshi.blog.csdn.net/article/details/145573994 CZML 格式详解 1. 什么是 CZML? CZML(Cesium Zipped Markup Language)是一种基于 JSON 的文件格式,用于描述地理空间数据和时间动态场景。它专…...
【gRPC-gateway】auth-通过拦截器从上下文中提取元数据用于认证,与从http header转发待认证数据到上下文进行验证,go案例
从grpc上下文中提取元数据用于认证 案例 interceptor.go package serverimport ("context""errors""google.golang.org/grpc""google.golang.org/grpc/metadata""strings" )// UnaryInterceptor 是一个 unary RPC 的拦截器…...
Sass基础知识以及常用知识整理
Sass基础知识以及常用知识整理 一、CSS 功能拓展 注意:>、 、和~的区分 1.1 嵌套规则 Sass 允许将一套 CSS 样式嵌套进另一套样式中,内层的样式将它外层的选择器作为父选择器,例如: #main p {color: #00ff00;width: 97%;…...
Redis 内存回收机制
Redis 是一个基于内存的键值存储系统,为了避免内存耗尽,Redis 提供了多种内存回收机制。以下是 Redis 内存回收的主要方式: 1. 过期键删除 Redis 支持为键设置过期时间,过期后会自动删除键以释放内存。 1.1 设置过期时间 SET key…...
docker安装mongo,导入、导出数据
1、docker安装mongo docker pull mongo docker run -d -p 27017:27017 --name mongodb mongodocker update mongodb --restartalways ## 开机自启动-d:表示以后台模式运行容器。 -p 27017:27017:将容器内部的 MongoDB 默认端口 27017 映射到宿主机的 27…...
Excel常用操作
Excel常用操作 学习资源 37_电子表格处理考点精讲_设置数据格式_哔哩哔哩_bilibili 快速输入数据与编辑数据 一个工作簿可以包含多个工作表 特殊数据的添加格式 输入负数, 例如-3、-5 常规输入, 直接输入-3、-5;使用(), 例如在单元格中输入(3)回车即可变为-3;上述括号不区分中…...
嵌入式EasyRTC实时通话支持海思hi3516cv610,编译器arm-v01c02-linux-musleabi-gcc
EasyRTC已经完美支持海思hi3516cv610,编译器arm-v01c02-linux-musleabi-gcc,总体SDK大小控制在680K以内(预计还能压缩100K上下): EasyRTC在hi3516cv610芯片上能双向通话、发送文字以及二进制指令,总体运行…...
RestClient
什么是RestClient RestClient 是 Elasticsearch 官方提供的 Java 低级 REST 客户端,它允许HTTP与Elasticsearch 集群通信,而无需处理 JSON 序列化/反序列化等底层细节。它是 Elasticsearch Java API 客户端的基础。 RestClient 主要特点 轻量级ÿ…...
铭豹扩展坞 USB转网口 突然无法识别解决方法
当 USB 转网口扩展坞在一台笔记本上无法识别,但在其他电脑上正常工作时,问题通常出在笔记本自身或其与扩展坞的兼容性上。以下是系统化的定位思路和排查步骤,帮助你快速找到故障原因: 背景: 一个M-pard(铭豹)扩展坞的网卡突然无法识别了,扩展出来的三个USB接口正常。…...
深度学习在微纳光子学中的应用
深度学习在微纳光子学中的主要应用方向 深度学习与微纳光子学的结合主要集中在以下几个方向: 逆向设计 通过神经网络快速预测微纳结构的光学响应,替代传统耗时的数值模拟方法。例如设计超表面、光子晶体等结构。 特征提取与优化 从复杂的光学数据中自…...
论文解读:交大港大上海AI Lab开源论文 | 宇树机器人多姿态起立控制强化学习框架(二)
HoST框架核心实现方法详解 - 论文深度解读(第二部分) 《Learning Humanoid Standing-up Control across Diverse Postures》 系列文章: 论文深度解读 + 算法与代码分析(二) 作者机构: 上海AI Lab, 上海交通大学, 香港大学, 浙江大学, 香港中文大学 论文主题: 人形机器人…...
Qt/C++开发监控GB28181系统/取流协议/同时支持udp/tcp被动/tcp主动
一、前言说明 在2011版本的gb28181协议中,拉取视频流只要求udp方式,从2016开始要求新增支持tcp被动和tcp主动两种方式,udp理论上会丢包的,所以实际使用过程可能会出现画面花屏的情况,而tcp肯定不丢包,起码…...
Golang 面试经典题:map 的 key 可以是什么类型?哪些不可以?
Golang 面试经典题:map 的 key 可以是什么类型?哪些不可以? 在 Golang 的面试中,map 类型的使用是一个常见的考点,其中对 key 类型的合法性 是一道常被提及的基础却很容易被忽视的问题。本文将带你深入理解 Golang 中…...
1688商品列表API与其他数据源的对接思路
将1688商品列表API与其他数据源对接时,需结合业务场景设计数据流转链路,重点关注数据格式兼容性、接口调用频率控制及数据一致性维护。以下是具体对接思路及关键技术点: 一、核心对接场景与目标 商品数据同步 场景:将1688商品信息…...
STM32标准库-DMA直接存储器存取
文章目录 一、DMA1.1简介1.2存储器映像1.3DMA框图1.4DMA基本结构1.5DMA请求1.6数据宽度与对齐1.7数据转运DMA1.8ADC扫描模式DMA 二、数据转运DMA2.1接线图2.2代码2.3相关API 一、DMA 1.1简介 DMA(Direct Memory Access)直接存储器存取 DMA可以提供外设…...
[ICLR 2022]How Much Can CLIP Benefit Vision-and-Language Tasks?
论文网址:pdf 英文是纯手打的!论文原文的summarizing and paraphrasing。可能会出现难以避免的拼写错误和语法错误,若有发现欢迎评论指正!文章偏向于笔记,谨慎食用 目录 1. 心得 2. 论文逐段精读 2.1. Abstract 2…...
linux 错误码总结
1,错误码的概念与作用 在Linux系统中,错误码是系统调用或库函数在执行失败时返回的特定数值,用于指示具体的错误类型。这些错误码通过全局变量errno来存储和传递,errno由操作系统维护,保存最近一次发生的错误信息。值得注意的是,errno的值在每次系统调用或函数调用失败时…...
