当前位置: 首页 > 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

相关文章:

Redis初阶笔记

1. 认识Redis Redis是一个基于内存运行的缓存中间件&#xff0c;有着多种的数据类型可供使用。Redis的使用主要是为关系性数据库&#xff08;MySQL等&#xff09;分担压力&#xff0c;在高并发环境下MySQL执行命令的压力是很大的&#xff0c;容易宕机&#xff0c;所以需要中间件…...

electron.vite 项目创建以及better-sqlite3数据库使用

1.安装electron.vite npm create quick-start/electronlatest中文官网&#xff1a;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 后&#xff0c;ALINX 进一步研究尖端应用市场&#xff0c;面向 AI 场景进行优化设计&#xff0c;推出 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 的免费用户&#xff0c;将可以无限制地访问 GPT-5&#xff0c;但仅限于标准的智能级别。该级别会设定滥用限制&#xff0c;以防止不当使用(意思就是你得付费嘛)。 OpenAI CEO Sam Altman 今天在 X 上透露了 GPT-4.5 和 GPT-5 的最新发展计划。 OpenAI 将发布代…...

【前端框架与库】「深入理解 Vue 插槽」:类型、用法与实际场景解析,增强组件复用性的利器

深入理解 Vue 插槽 [TOC](深入理解 Vue 插槽) 前言一、插槽的几种类型1. 默认插槽&#xff08;Default Slot&#xff09;2. 具名插槽&#xff08;Named Slot&#xff09;3. 作用域插槽&#xff08;Scoped Slot&#xff09; 二、插槽的作用与实际使用场景三、延伸知识总结 前言 …...

对比 LVS 负载均衡群集的 NAT 模式和 DR 模式,比较其各自的优势 与基于 openEuler 构建 LVS-DR 群集

一、 对比 LVS 负载均衡群集的 NAT 模式和 DR 模式&#xff0c;比较其各自的优势 NAT 模式 部署简单&#xff1a;NAT 模式下&#xff0c;所有的服务器节点只需要连接到同一个局域网内&#xff0c;通过负载均衡器进行网络地址转换&#xff0c;就可以实现负载均衡功能。不需要对…...

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 ,实现研发制造域场景

在当今快速发展的科技领域&#xff0c;低代码一体化平台已成为企业数字化转型的关键工具&#xff0c;同时&#xff0c;大型语言模型&#xff08;LLM&#xff09;如 DeepSeek 在自动生成代码和提供智能建议方面表现出色。 Mendix 于近期发布的 GenAI 万能连接器&#xff0c;目前…...

shell脚本自动安装MySQL8

环境&#xff1a;centos7版本&#xff1a;8.0.28安装包&#xff1a;mysql-8.0.28-linux-glibc2.12-x86_64.tar.xz 二进制包要求&#xff1a;安装包和shell脚本在同一目录下执行方式&#xff1a;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正式发布:重新定义轻量化数字内容交互体验

在移动互联网流量红利逐渐见顶的当下&#xff0c;用户对即时性、碎片化娱乐与交互体验的需求持续攀升。轻量化小游戏、VR互动、数字孪生、工业仿真等内容形态迅速崛起&#xff0c;但开发者却面临两大核心矛盾&#xff1a;如何将高性能互动内容轻量化嵌入现有应用中&#xff1f;…...

Linux内核 - 非仿生机器人之感知主控系统(协议栈)

Linux内核 - 非仿生机器人之感知主控系统&#xff08;协议栈&#xff09; 注&#xff1a;该项目为18年实习期间&#xff0c;参与非仿生六足机器人&#xff08;Linux方案&#xff09;的个人理解和积累。时至今日&#xff0c;再看其实仅为一套系统编程相关框架&#xff0c;一直为…...

CZML 格式详解,javascript加载导出CZML文件示例

示例地址&#xff1a;https://dajianshi.blog.csdn.net/article/details/145573994 CZML 格式详解 1. 什么是 CZML&#xff1f; CZML&#xff08;Cesium Zipped Markup Language&#xff09;是一种基于 JSON 的文件格式&#xff0c;用于描述地理空间数据和时间动态场景。它专…...

【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 功能拓展 注意&#xff1a;>、 、和~的区分 1.1 嵌套规则 Sass 允许将一套 CSS 样式嵌套进另一套样式中&#xff0c;内层的样式将它外层的选择器作为父选择器&#xff0c;例如&#xff1a; #main p {color: #00ff00;width: 97%;…...

Redis 内存回收机制

Redis 是一个基于内存的键值存储系统&#xff0c;为了避免内存耗尽&#xff0c;Redis 提供了多种内存回收机制。以下是 Redis 内存回收的主要方式&#xff1a; 1. 过期键删除 Redis 支持为键设置过期时间&#xff0c;过期后会自动删除键以释放内存。 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&#xff1a;表示以后台模式运行容器。 -p 27017:27017&#xff1a;将容器内部的 MongoDB 默认端口 27017 映射到宿主机的 27…...

Excel常用操作

Excel常用操作 学习资源 37_电子表格处理考点精讲_设置数据格式_哔哩哔哩_bilibili 快速输入数据与编辑数据 一个工作簿可以包含多个工作表 特殊数据的添加格式 输入负数, 例如-3、-5 常规输入, 直接输入-3、-5;使用(), 例如在单元格中输入(3)回车即可变为-3;上述括号不区分中…...

嵌入式EasyRTC实时通话支持海思hi3516cv610,编译器arm-v01c02-linux-musleabi-gcc

EasyRTC已经完美支持海思hi3516cv610&#xff0c;编译器arm-v01c02-linux-musleabi-gcc&#xff0c;总体SDK大小控制在680K以内&#xff08;预计还能压缩100K上下&#xff09;&#xff1a; EasyRTC在hi3516cv610芯片上能双向通话、发送文字以及二进制指令&#xff0c;总体运行…...

Python爬虫实战:研究MechanicalSoup库相关技术

一、MechanicalSoup 库概述 1.1 库简介 MechanicalSoup 是一个 Python 库,专为自动化交互网站而设计。它结合了 requests 的 HTTP 请求能力和 BeautifulSoup 的 HTML 解析能力,提供了直观的 API,让我们可以像人类用户一样浏览网页、填写表单和提交请求。 1.2 主要功能特点…...

深入理解JavaScript设计模式之单例模式

目录 什么是单例模式为什么需要单例模式常见应用场景包括 单例模式实现透明单例模式实现不透明单例模式用代理实现单例模式javaScript中的单例模式使用命名空间使用闭包封装私有变量 惰性单例通用的惰性单例 结语 什么是单例模式 单例模式&#xff08;Singleton Pattern&#…...

全球首个30米分辨率湿地数据集(2000—2022)

数据简介 今天我们分享的数据是全球30米分辨率湿地数据集&#xff0c;包含8种湿地亚类&#xff0c;该数据以0.5X0.5的瓦片存储&#xff0c;我们整理了所有属于中国的瓦片名称与其对应省份&#xff0c;方便大家研究使用。 该数据集作为全球首个30米分辨率、覆盖2000–2022年时间…...

生成 Git SSH 证书

&#x1f511; 1. ​​生成 SSH 密钥对​​ 在终端&#xff08;Windows 使用 Git Bash&#xff0c;Mac/Linux 使用 Terminal&#xff09;执行命令&#xff1a; ssh-keygen -t rsa -b 4096 -C "your_emailexample.com" ​​参数说明​​&#xff1a; -t rsa&#x…...

uniapp中使用aixos 报错

问题&#xff1a; 在uniapp中使用aixos&#xff0c;运行后报如下错误&#xff1a; AxiosError: There is no suitable adapter to dispatch the request since : - adapter xhr is not supported by the environment - adapter http is not available in the build 解决方案&…...

力扣-35.搜索插入位置

题目描述 给定一个排序数组和一个目标值&#xff0c;在数组中找到目标值&#xff0c;并返回其索引。如果目标值不存在于数组中&#xff0c;返回它将会被按顺序插入的位置。 请必须使用时间复杂度为 O(log n) 的算法。 class Solution {public int searchInsert(int[] nums, …...

现有的 Redis 分布式锁库(如 Redisson)提供了哪些便利?

现有的 Redis 分布式锁库&#xff08;如 Redisson&#xff09;相比于开发者自己基于 Redis 命令&#xff08;如 SETNX, EXPIRE, DEL&#xff09;手动实现分布式锁&#xff0c;提供了巨大的便利性和健壮性。主要体现在以下几个方面&#xff1a; 原子性保证 (Atomicity)&#xff…...

搭建DNS域名解析服务器(正向解析资源文件)

正向解析资源文件 1&#xff09;准备工作 服务端及客户端都关闭安全软件 [rootlocalhost ~]# systemctl stop firewalld [rootlocalhost ~]# setenforce 0 2&#xff09;服务端安装软件&#xff1a;bind 1.配置yum源 [rootlocalhost ~]# cat /etc/yum.repos.d/base.repo [Base…...

PHP 8.5 即将发布:管道操作符、强力调试

前不久&#xff0c;PHP宣布了即将在 2025 年 11 月 20 日 正式发布的 PHP 8.5&#xff01;作为 PHP 语言的又一次重要迭代&#xff0c;PHP 8.5 承诺带来一系列旨在提升代码可读性、健壮性以及开发者效率的改进。而更令人兴奋的是&#xff0c;借助强大的本地开发环境 ServBay&am…...

HubSpot推出与ChatGPT的深度集成引发兴奋与担忧

上周三&#xff0c;HubSpot宣布已构建与ChatGPT的深度集成&#xff0c;这一消息在HubSpot用户和营销技术观察者中引发了极大的兴奋&#xff0c;但同时也存在一些关于数据安全的担忧。 许多网络声音声称&#xff0c;这对SaaS应用程序和人工智能而言是一场范式转变。 但向任何技…...