Redis(超详细)

Redis


Redis概念:

Redis是开源的,遵循BSD的,基于内存数据存储,被用于作为数据库、缓存机制、消息中间件;


Redis的特点:

1.高性能key/valu内存xing数据库;

2.支持丰富的数据类型

3.支持持久化;

4.单线程,单进程。


Redis为什么快?

他直接运行在内存上,他查询速率要比硬盘快上很多倍,他是单线程。 

NoSQL(Not only SQL)

概念

意即不仅仅是SQL,泛指非关系型数据库;


NoSQL的四大分类:


1.键值key-value存储数据库;
2.列存储数据库;
3.文档型数据库;
4.图形数据库。


redis-cli:是redis提供的命令行客户端;

redis-server:是redis的服务端启动脚本;

redis-sentinel:是redis的哨兵启动脚本。


五种基本数据类型:


1.String 存字符串 验证码


String:通常用于存储验证码 set get 多个值 mset mget

设置有效时间:expire key time / setex key time value

查看存活时间 ttl key

追加 sppend key value 数值加减 -1 decr +1 incr + by key

2.List 排序 商品列表

list:有序的可重复的集合;通常用于商品列表的展示,

lpush lrange key 起始索引 结束索引

删除重复元素:lrem key 删除个数 value

获取列表个数 llen key

3.Ste 共同好友,可能认识的人

set:无序的不可重复的集合;通常用于好友推荐,共同好友。

sadd 获取所有元素 smembers key 获取集合元素个数 scard key

求差集 sdiff 求交集 sinter

4.Zset 有序不可重复  排行榜

zset:可排序,不可重复的set集合;通常用于排行榜。

zadd 返回个数 zcard 升序 zrange 降序 zrevrange

5.Hash 

hash:key{key value}

hset hget hgetall

判断key是否存在:hexists 获得所有的key hkeys 获得所有的值 hvals

Redis的持久化

1.RDB(快照)

01.BGSAVE

第一种是客户端通过BGSAVE命令来创建一个快照,当接收到客户端的BGSAVE命令时,redis会调用fork来创建一个子进程,然后子进程负责将快照写入磁盘中,而父进程则继续处理命令请求。

02.SAVE

第二种是客户端通过SAVE命令来创建快照,接收到SAVE命令的redis服务器在快照创建完毕之前将不再响应任何其他的命令。这个命令不常用,因为使用SAVE命令在创建快照完毕之前,redis处于阻塞状态,无法对外服务。

2.AOF(只追加日志文件)

AOF可以将所有客户端的所有写命令记录在日志文件中。

特点:

这种方式可以将所有客户端执行的写命令记录到日志文件中,AOF持久化会将被执行的写命令写到AOF的文件末尾,以此来记录数据发生的变化,因此只要redis从头到尾执行一次AOF文件所包含的所有写命令,就可以恢复AOF文件的记录的数据集.

日志追加频率

1.everysec每秒执行一次同步显示的将多个命令同步到磁盘(推荐);

2.always每个redis写命令都要同步写入磁盘,严重降低redis速度(谨慎使用);

3.no 由操作系统决定何时同步(不推荐)。

AOF重写

AOF重写是我们创建一个新的AOF文件,把对里边儿的所有的数据进行一个命令重写的方式,写到这个新的AOF文件里面,并需把旧的AOF文件替换掉。

Redis主从复制

Redis是一种常见的数据备份方式,可以解决冗余备份,实现读写分离等功能;Redis的原理其实就是一个redis实例的数据复制到多个redis实例上,一个redis为主节点,多个redis实例为从节点,主节点负责所有数据的写操作,然后将写操作同步给从节点,从节点只接收读请求,不处理任何的写请求,从而保证了数据的一致性。

Redis哨兵机制

哨兵机制是redis高可用性的重要保障,哨兵机制是由哨兵节点组成,这些哨兵节点会定期检查Redis实例的健康状态,并在主节点出现故障时,哨兵机制就会自动在从节点中选举新的主节点,同时,哨兵节点还可以操作故障转移操作,将原本的从节点提升为新的主节点,并重新建立主从关系。如果旧主节点恢复了,就会成为新主节点的从节点。

缓存雪崩:

redis中多个key同时失效,过期的数据在redis中就会消失,这个时候如果多个请求来访问,redis就无法响应,就会去访问数据库,数据库就瞬间感觉到压力大而卡死或者宕机;

雪崩解决方案:

1.给key设置随机的失效时间;

 2.集群方案放置宕机不可用。

击穿:

redis中某一个key失效,这个时候有很多请求来访问这个失效的key,在redis中得不到响应,就去访问数据库,导致数据库瘫痪;

击穿解决方案:

1.互斥锁

 2.逻辑过期

穿透:

用户发送请求的数据在redis中和数据库中都不存在,这样缓存永远都不会失效,请求最终都到了数据库上。

解决方案:

1.当在数据库查询的结果也不存在的时候,可以返回null值给redis,并给null设置失效时间;

2.布隆过滤器。

延迟双删

为了保证在修改或者删除的时候,redis中的数据和数据库中的数据保持一致;当用户进行修改或者删除的操作时,先将redis中的缓存删除,然后去数据库去做对应操作,这个时候有用户进来读取这条信息,那么这条数据就会重新加载redis缓存中,所以当数据库操作完成后,需要再一次删除redis中的缓存,从而保证redsi中的数据和数据库中的数据保持一致。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/diannao/34626.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

信息系统分析与设计:重点内容|UML在线绘制|数据库技术

目录 UML在线绘图工具信息系统分析与设计第1章 系统思想第2章 信息、管理与信息系统第3章 信息系统建设概论🌟第4章 系统规划🌟第5章 系统分析概述第6章 流程建模🌟业务流程图DFD数据流图🌟数据字典 第7章 用例建模(用例图)&#…

Docker搭建yolov8并训练、验证、推理化学仪器数据集

目录 1、安装docker 2、创建yolov8镜像 3、下载代码包 4、下载模型预训练权重 5、制作数据集 6、训练、验证及推理 (1)训练 (2)验证 (3)推理 中文标签显示问题 本文通过docker的方式搭建yolov8运…

OnlyOffice:现代办公的最佳选择

目录 安装 使用 评价 对比(与WPS) 总结 在当今的数字化办公时代,选择一款功能全面且易于使用的办公软件至关重要。OnlyOffice作为一款现代化的办公软件,凭借其强大的功能和友好的用户体验,逐渐成为了众多企业和个…

无线麦克风哪个品牌音质最好,一文告诉你无线领夹麦克风怎么挑选

随着直播带货和个人视频日志(Vlog)文化的兴起,以及自媒体内容创作的蓬勃发展,我们见证了麦克风行业的迅猛发展。在这一浪潮中,无线领夹麦克风以其无与伦比的便携性和操作效率,迅速赢得了广大视频制作者的喜…

前端HTML/CSS知识点系列

1. 什么是块级格式化上下文?【BFC(Block formatting context)】 BFC(Block FormattingContext,块级格式化上下文)是一个独立的渲染区域,其中的元素的布局不会受到外部元素的影响,反之亦然。BFC的创建有助于…

docker环境部署ruoyi系统前后端分离项目

创建局域网 docker network create net-ry 安装Redis 1 安装 创建两个目录 mkdir -p /data/redis/{conf,data} 上传redis.conf文件到/data/redis/conf文件夹中 cd /data/redis/conf 3.2 配置redis.conf文件 配置redis.conf文件: redis.conf文件配置注意&…

轻松两步,借助向量数据库 VectorDB 与千帆 Appbuilder 构建个性化本地问答知识库

在我们日常的工作和生活中,经常会遇到需要快速获取和管理大量信息的情况。无论是解答客户的问题,还是整理公司内部的资料,一个高效的知识库系统都能帮我们省下大量时间和精力。 为了帮助大家快速构建 RAG 应用,我们之前发布了一个…

虚拟机中VSCode+gcc环境配置

一、安装VSCode 1、在官网下载软件包: 地址:Documentation for Visual Studio Code 2、下载后在放置deb包的文件夹直接打开终端,然后输入sudo dpkg -i code_1.90.2-1718751586_amd64.deb 3、安装成功提示,并显示该图标 二、配…

nginx+keepalived+tomcat集群实验

如遇星河 | nginx+keepalived高可用集群实验 木子87 | Keepalived+Nginx+Tomcat 实现高可用Web集群 环境 192.168.40.204 tomcat-1 192.168.40.138 tomcat-2 安装tomcat [root@bogon local]# vim /etc/profile 添加环境变量 JAVA_HOME=/usr/local/java PATH=$J…

mac 常用工具命令集合

一、vim 快捷键 1、移动光标 h j k l 左 下 上 右 箭头上 上移一行 箭头下 下移一行 0 跳至行首,不管有无缩进,就是跳到第0个字符 ^ 跳至行首的第一个字符 $ 跳至行尾 gg 跳至文首 G 调至文尾 5gg/5G 调至第5行w 跳到下一个字首,按标点或…

微信小程序学习(十):生命周期

1、应用生命周期 生命周期说明onLaunch监听小程序初始化,全局只会执行 1 次onShow监听小程序启动或切前台onHide监听小程序切后台 🔗应用生命周期官方文档 App({/*** 当小程序初始化完成时,会触发 onLaunch(全局只触发一次&…

固特超声波清洗机怎么样?三大超声波清洗机美的、固特、希亦谁更好?

眼镜是我们日常生活中不可或缺的用具,但随着使用时间的增长,眼镜上的灰尘和污垢也会逐渐积累,传统的清洗方法往往难以彻底清洁。为了解决这一难题,超声波清洗机出现了!它利用超声波振动原理,可以轻松、快速…

加载资源文件失败

背景 自己以前装了一个海康的深度学习算法平台,试用期是一个月,过了一个月之后,因为没有有效注册码或者加密狗的支持了导致无法使用,于是打算卸载掉,在卸载一个软件的时候,无论是使用控制面板还是软件自带的…

AI写文章生成器,这些工具都可以一键智能生成文章

在AI技术快速发展的今天,AI写作生成器成为我们创作内容的重要工具,它可以提高我们的写作效率,节省时间和精力。下面小编就来和大家分享几款优秀的AI写作生成器,帮助你快速生成高质量的文章。 1.专业AI写作工具-文章在线生成器 专…

计算机网络 访问控制列表以及NAT

一、理论知识 1. 单臂路由 单臂路由是一种在路由器上配置多个子接口的方法,每个子接口代表不同的 VLAN,用于在一个物理接口上支持多 VLAN 通信。此方法使得不同 VLAN 之间可以通过路由器进行通信。 2. NAT (网络地址转换) NAT 是一种在私有网络和公共…

步步精科技诚邀您参加2024慕尼黑上海电子展

尊敬的客户: 我们诚挚地邀请您参加即将于2024年7月8日至7月10日在上海新国际博览中心举办的2024慕尼黑上海电子展(electronica China)。此次展会汇聚了国内外优秀企业,展示从元器件到系统集成方案的完整产品链,为各行…

linux 下配置docker mirrors

一、配置mirrors vi /etc/docker/daemon.json {"registry-mirrors": ["https://docker.blfrp.cn"],"log-opts": {"max-size": "10m","max-file": "3"} }#完成配置后重启docker systemctl restart dock…

自学指南:必备书籍清单--近100本R语言及生物信息相关书籍

R语言是一种功能丰富的编程语言,数据处理、统计分析是大家所熟知的基本功能。开源免费、活跃的全球社区、灵活可扩展等优点促使R语言飞速发展。目前,CRAN 软件包存储库包含 20446 个可用软件包,涵盖了从生物信息到金融分析等广泛的应用领域。…

【uniapp】uniapp开发微信小程序入门教程

HBuilderx中uniapp开发微信小程序入门教程 一、 环境搭建 1. HBuilderx下载安装 HBuilderx下载安装地址 2. 微信开发者工具下载安装 微信开发者工地址具下载安装 二、创建uniapp项目 选择:文件>新建>项目>uni-app 输入项目名称>选择默认模板>…

【面试干货】Java方法重载规则

【面试干货】Java方法重载规则 1、方法重载的规则和注意事项1.1 方法名必须一致1.2 参数列表必须不同1.3 代码示例1.4 与方法的返回值无关1.5 存在于父类和子类或同类中1.6 可以抛出不同的异常1.7 可以有不同的修饰符 2、注意事项3、总结 💖The Begin💖点…