01 Redis的特性

1.1 NoSQL

NoSQL(“non-relational”, “Not Only SQL”),泛指非关系型的数据库。

  • 键值存储数据库 : 就像 Map 一样的 key-value 对。如Redis
  • 文档数据库 : NoSQL 与关系型数据的结合,最像关系型数据库的 NoSQL 。 如MongoDB

1.2 Redis的用途

Redis 在生产中使用最多的场景就是做数据缓存。即客户端从 DBMS 中查询出的数据首先写入到 Redis 中,后续无论哪个客户端再需要访问该数据,直接读取 Redis 中的即可,不仅减小了响应时间 RT,而且降低了 DBMS 的压力。
在这里插入图片描述

根据 Redis 缓存的数据与 DBMS 中数据的同步性划分,缓存一般可划分为两类:实时同步缓存,与阶段性同步缓存。
实时同步缓存是指,DBMS 中数据更新后,Redis 缓存中的存放的相关数据会被立即清除,于是乎,若再有对该数据的访问请求到来时,必须先从 DBMS 中查询获取到最新数据,然后再写入到 Redis。
阶段性同步缓存是指,Redis 缓存中的数据允许在一段时间内与 DBMS 中的数据不完全一致。而这个时间段就是这个缓存数据的过期时间。

1.3 Redis特性

  • 持久化:Redis 内存中的数据可以进行持久化,其有两种方式:RDB(全量备份) 与 AOF。
  • 高可用集群:Redis 提供了高可用的主从集群功能,可以确保系统的安全性。
  • 丰富的数据类型:Redis 是一个 key-value 存储系统。支持存储的 value 类型很多,包括String(字符串)、List(链表)、Set(集合)、Zset(sorted set --有序集合)和 Hash(哈希类型)等,还有 BitMap、HyperLogLog、Geospatial 类型。
    a. BitMap:一般用于大数据量的二值性统计。
    b. HyperLogLog:其是 Hyperlog Log,用于对数据量超级庞大的日志做去重统计。
    c. Geospatial:地理空间,其主要用于地理位置相关的计算。
  • 强大的功能:Redis 提供了数据过期功能、发布/订阅功能、简单事务功能,还支持 Lua脚本扩展功能。
  • 客户端语言广泛:Redis 提供了简单的 TCP 通信协议,编程语言可以方便地的接入 Redis。所以,有很多的开源社区、大公司等开发出了很多语言的 Redis 客户端。
  • 支持 ACL 权限控制:之前的权限控制非常笨拙。从 Redis6 开始引入了 ACL 模块,可以为不同用户定制不同的用户权限。
    ACL,Access Control List,访问控制列表,是一种细粒度的权限管理策略,可以针对任意用户与组进行权限控制。目前大多数 Unix 系统与 Linux 2.6 版本已经支持 ACL 了。 Zookeeper 早已支持 ACL 了。
    Unix 与 Linux 系统默认使用是 UGO(User、Group、Other)权限控制策略,其是一种粗粒度的权限管理策略。
  • 支持多线程 IO 模型:Redis 之前版本采用的是单线程模型,从 6.0 版本开始支持了多线程模型。

1.4 Redis的IO模型

Redis服务器处理客户端请求所采用的处理架构,称为 Redis 的 IO 模型。不同版本的 Redis 采用的 IO 模型是不同的。对于Redis 6之后的版本,采用多线程模型。

单线程的性能较高
在这里插入图片描述在这里插入图片描述

在这里插入图片描述在这里插入图片描述

  • Redis6引入了多线程机制,但是不是说有多个worker线程同时并发读写, 而是它有 “一个
    worker线程+多个IO子线程”,其实就是在 IO 就绪之后使用多线程提升读写解析数据的效率,而在 操作内存数据的时候还是用单线程,以在提高性能的同时避免读写安全问题。
  • 同时,这种机制同样不会产生线程安全问题,因为Redis在针对数据的内存操作时,是在一个公共的worker队列中实现的,先进先出,所以不会有线程安全问题。
  • 简单来说,就是 “请求是多线程的,但核心的内存读写操作(或者说读写计算)仍然是单线程的”。

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

大模型的学习路线图推荐—多维度深度分析【云驻共创】

🐲本文背景 近年来,随着深度学习技术的迅猛发展,大模型已经成为学术界和工业界的热门话题。大模型具有数亿到数十亿的参数,这使得它们在处理复杂任务时表现得更为出色,但同时也对计算资源和数据量提出了更高的要求。 …

二、arcgis 点shp数据处理

在工作中,很多时候客户会提供点坐标,那么要想把点坐标生成shp文件,有两种方法(坐标系CGCS2000): 1.当只有个位数的点坐标时,可以直接在arcgisMap中添加,具体步骤如下: …

【JavaSE】第一个Java程序

前提引入 在JavaSE的系列中,将从第一个Java程序开始叙述,系统的把JavaSE的内容总结一次。毕竟这是第二次学习JavaSE的内容,因此感触也相对比较深一些。在JavaSE的初步计划中,大概有十一到十三篇文章,大致有&#xff1…

docker 安装手册

docker 安装手册 第一步卸载旧的docker (如果安装过Docker否则跳过此步) 以防万一最好执行一遍 yum -y remove docker docker-client docker-client-latest docker-common docker-latest docker-latest-logrotate docker-logrotate docker-engine 第二步,安装相关…

ROS第 11 课 参数的使用与编程方法

文章目录 第 11 课 参数的使用与编程方法1.服务模型2.rosparam参数2.1 rosparam详细参数2.2 运行海龟例程2.3 rosparam的使用 3.编程方法3.1 编写控制程序 4.运行程序 第 11 课 参数的使用与编程方法 1.服务模型 &emap;&emsp在ROS master当中有一个参数服务器&#x…

Linux系统Shell脚本 ----- 编程规范和变量详细解读(一)

一、程序编程风格 面向过程语言 开发的时候 需要 一步一步 执行 做一件事情,排出个步骤,第一步干什么,第二步干什么,如果出现情况A,做什么处理,如果出现了情况B,做什么处理 问题规模小&#…

imgaug库图像增强指南(35):【iaa.Fog】——轻松创建自然雾气场景

引言 在深度学习和计算机视觉的世界里,数据是模型训练的基石,其质量与数量直接影响着模型的性能。然而,获取大量高质量的标注数据往往需要耗费大量的时间和资源。正因如此,数据增强技术应运而生,成为了解决这一问题的…

gin如何实现热更新

什么是热更新? 一种不需要用户关闭应用或重新启动设备就能进行的软件更新技术。它可以快速地在线修复或升级应用程序的错误或功能,从而减少用户的等待时间并提高用户体验。 如何优雅停止服务? Go 1.8版本之后, http.Server 内置…

Unity中URP下的SimpleLit的 BlinnPhong高光反射计算

文章目录 前言一、回顾Blinn-Phong光照模型1、Blinn-Phong模型: 二、URP下的SimpleLit的 BlinnPhong1、输入参数2、程序体计算 前言 在上篇文章中,我们分析了 URP下的SimpleLit的 Lambert漫反射计算。 Unity中URP下的SimpleLit的 Lambert漫反射计算 我…

Unity - 简单音频

“Test_04” AudioTest public class AudioTest : MonoBehaviour {// 声明音频// AudioClippublic AudioClip music;public AudioClip se;// 声明播放器组件private AudioSource player;void Start(){// 获取播放器组件player GetComponent<AudioSource>();// 赋值…

UI设计中的插画运用优势(下)

6. 插画赋予设计以美学价值&#xff0c;更容易被接受 即使所有人都在分析和争论产品的可用性和易用性&#xff0c;大家在对美的追求上&#xff0c;始终保持着一致的态度。一个设计是否具备可取性&#xff0c;是否能够通过甲方、客户和实际用户&#xff0c;是每个设计人都需要面…

初识人工智能,一文读懂机器学习之逻辑回归知识文集(1)

&#x1f3c6;作者简介&#xff0c;普修罗双战士&#xff0c;一直追求不断学习和成长&#xff0c;在技术的道路上持续探索和实践。 &#x1f3c6;多年互联网行业从业经验&#xff0c;历任核心研发工程师&#xff0c;项目技术负责人。 &#x1f389;欢迎 &#x1f44d;点赞✍评论…

2024美赛数学建模思路 - 案例:最短时间生产计划安排

文章目录 0 赛题思路1 模型描述2 实例2.1 问题描述2.2 数学模型2.2.1 模型流程2.2.2 符号约定2.2.3 求解模型 2.3 相关代码2.4 模型求解结果 建模资料 0 赛题思路 &#xff08;赛题出来以后第一时间在CSDN分享&#xff09; https://blog.csdn.net/dc_sinor?typeblog 1 模型…

性能优化-HVX 指令介绍

「发表于知乎专栏《移动端算法优化》」 本文主要介绍了 HVX 指令相关的知识&#xff0c;包括 HVX 寄存器相关内容&#xff0c;指令的背景依赖&#xff0c;部分常用 intrinsic HVX 指令。具体指令的详细内容及使用还需阅读 HVX 的指令文档&#xff0c;以及细致的实践操作。 &…

表达式计算

四则运算表达式可以用表达式树表达&#xff0c;如下图后序遍历 现给你一个字符串&#xff0c;代表一个后序遍历形式的四则运算表达式&#xff0c;请计算出表达式的结果&#xff1a;(只输出整数部分) 注&#xff1a;除法只保留整数部分&#xff1b;5/4 1 输入&#xff1a; 一个…

使用 YApi 管理 API 文档,测试, mock

随着互联网的发展&#xff0c;API变的至关重要。根据统计&#xff0c;目前市面上有上千万的开发者&#xff0c;互联网项目超过10亿&#xff0c;保守统计涉及的 API 数量大约有 100 亿。这么大基数的API&#xff0c;只要解决某些共有的痛点&#xff0c;将会是非常有意义的事情。…

SpringCloud中服务间通信(应用间通信)-亲测有效-源码下载-连载2

1、微服务概述 本案例主要解决微服务之间的相互调用问题 如果已经理解什么是微服务&#xff0c;可以直接跳到实战。 本案例采用springBoot3.1.7springCloud2022.0.4版本测试 本案例使用springboot2.7.x版本测试代码相同 1、微服务是分布式架构&#xff0c;那么为什么要需要…

中仕教育:选调生和考研可以一起准备吗?

研究生入学考试&#xff0c;是本科生们提升学历继续深造的主要途径。而选调生&#xff0c;是指通过考试选拔的优秀应届毕业生&#xff0c;经过锻炼后分配到各级工作。这两者作为大部分人选择的方向&#xff0c;发展前景都是比较好的。 考研和选调生可以一起准备吗? 是可以的…

业务逻辑漏洞—验证码绕过

验证码绕过第一关&#xff1a; 前端验证码绕过&#xff1a; 打开pikachu靶场&#xff1a; 输入错误的验证码时会出现弹窗&#xff08;alert&#xff09;此时我们猜测这可能存在着前端限制 如果验证码有前端限制&#xff08;只在前端有作用&#xff09;&#xff0c;不影响后…

opencv#29 图像噪声的产生

在上一节的图像卷积我们了解到图像卷积可以用于去除图像中的噪声&#xff0c;那么对于现实生活中每一张采集到的图像都会包含噪声&#xff0c;也就是我们通过相机无法得到不包含噪声的图像&#xff0c;如果我想衡量噪声去除能力的强弱&#xff0c;就必须在一张不含噪声的图像中…
最新文章