什么是 Redis?

2023-09-22 12:05:31

Redis 是一种基于内存的数据库,对数据的读写操作都是在内存中完成的,因此读写速度非常快,常用于缓存,消息队列,分布式锁等场景

Redis 提供了多种数据类型来支持不同的业务场景,比如 String(字符串)、Hash(哈希)、List(列表)、Set(集合)、Zset(有序集合)、Bitmaps(位图)、HyperLogLog(基数统计)、GEO(地理信息)、Stream(流)、并且对数据类型的操作都是原子性的,因为执行命令由单线程负责的,不存在并发竞争的问题。

除此之外,Redis还支持 事务、持久化、Lua脚本、多种集群方案(主从复制模式、哨兵模式、切片机群模式)、发布/订阅模式,内存淘汰机制,过期删除机制等等。


Redis 和 Mecached 有什么区别?

Redis 与 Memcached 共同点:

  1. 都是基于内存的数据库,一般用来当做缓存使用
  2. 都有过期策略
  3. 两者的性能都非常高

Redis 和 Memcached 的区别

  • Redis 支持的数据类型更加丰富(String 、Hash、List、Set、ZSet),而 Memcached 只支持最简单的 key-value 数据类型;
  • Redis 支持数据的持久化,可以将内存中的数据保持在磁盘中,重启的时候可以再次加载进行使用,而Memcached 没有持久化功能,数据全部存在内存之中,Memcached 重启或挂掉之后,数据就没了;
  • Redis 原生支持集群模式,Memcached 没有原生的集群模式,需要依靠客户端来实现往集群中分片写入数据
  • Redis 支持发布订阅模型、Lua 脚本、事务等功能,而 Memcached 不支持;

为什么用 Redis 作为 MySQL 的缓存?

 主要是因为 Redis 具备 [高性能] 和 [高并发] 两种特性

1. Redis 具备高性能

假如用户第一次访问 MySQL 中的某些数据。这个过程会比较慢,因为是从硬盘上读取的。该用户访问的数据缓存在 Redis 中,这样下一次再访问这些数据的时候就可以直接从缓存中获取了,操作 Redis 缓存就是直接操作内存,所以速度相当快。

如果 MySQL 中的对应数据改变之后,同步改变 Redis 缓存中相应的数据即可,不过这里会有 Redis 和 MySQL 双写一致性的问题。

2. Redis 具备高并发

单台设备的 Redis 的 QPS(每秒处理完请求的次数) 是 MySQL 的 10 倍,Redis 单机的 QPS 能轻松破 10W ,而 MySQL 单机的 QPS 很难破 1w 。

所以,直接访问Redis 能够承受的请求是远远大于直接访问 MySQL 的,所以我们可以考虑把数据库中的部分数据转移到缓存中,这样用户的一部分请求会直接到缓存这里而不用经过数据库。

更多推荐

论文阅读 Extended Feature Pyramid Network for Small Object Detection

ExtendedFeaturePyramidNetworkforSmallObjectDetectionAbstract小目标检测仍然是一个未解决的挑战,因为仅凭几个像素很难提取小目标的信息。虽然特征金字塔网络中的scale-levelcorrespondingdetection减轻了这个问题,但我们发现不同尺度的特征

C++:constexpr 和 const 的区别

constexpr是C++11标准新添加的关键字,原先的标准中是只有const关键字的,作用是表示只读常量。但是,其实只读常量是两个属性,分为只读和常量,都用const来表示会产生歧义。看下面的例子#include<iostream>#include<array>usingnamespacestd;constintfu

代码随想录算法训练营第23期day2 | 977.有序数组的平方 、209.长度最小的子数组、59.螺旋矩阵II

目录一、(leetcode977)有序数组的平方1.暴力解法2.双指针法二、(leetcode209)长度最小的子数组1.暴力解法​编辑2.滑动窗口三、(leetcode59)螺旋矩阵II一、(leetcode977)有序数组的平方力扣题目链接1.暴力解法状态:已ACclassSolution{public:vecto

系统稳定性保障设计总结和思考

一、架构层面不同的系统在不同的业务发展阶段,对系统会有不同的考察指标,进行架构设计和技术选型更多是一种权衡和折中的选择,如何进行存储方案选型?是选择Mysql这类OLTP数据库还是MPP型OLAP数据仓库。如何进行消息队列选型?是选择可靠性更强的RabbitMQ还是还是轻松吞吐百万流量的Kafka,这些都是需要根据具体

docker 数据持久化

文章目录定制镜像持久化需求实现数据卷持久化数据卷简介数据卷的特性创建读写数据卷停止容器后的操作查看数据卷详情创建只写数据卷查看数据卷详情创建共享数据卷Dockerfile持久化创建Dockerfile、构建和运行镜像查看宿主机端的目录在容器层的UnionFS(联合文件系统)中对文件/目录的任何修改,无论是手工修改还是容

【CCF】第30次csp认证——202305-1重复局面

202305-1重复局面:问题描述国际象棋每一个局面可以用大小为8×8的字符数组来表示,其中每一位对应棋盘上的一个格子。六种棋子王、后、车、象、马、兵分别用字母k、q、r、b、n、p表示,其中大写字母对应白方、小写字母对应黑方。棋盘上无棋子处用字符*表示。两个字符数组的每一位均相同则说明对应同一局面。现已按上述方式整理

Vue构建SPA项目实现路由

目录前言一、VueCLI简介1.什么是VueCLI2.VueCLI的特点二、SPA项目搭建1.安装VueCLI2.使用脚手架vue-cli来构建项目​编辑3.项目结构说明4.什么是*.vue文件三、基于SPA完成路由并嵌套路由1.基于SPA完成路由1.1在src下的components创建自定义组件。1.2.定义路由与

java版Spring Cloud+Mybatis+Oauth2+分布式+微服务+实现工程管理系统

鸿鹄工程项目管理系统SpringCloud+SpringBoot+Mybatis+Vue+ElementUI+前后端分离构建工程项目管理系统1.项目背景一、随着公司的快速发展,企业人员和经营规模不断壮大。为了提高工程管理效率、减轻劳动强度、提高信息处理速度和准确性,公司对内部工程管理的提升提出了更高的要求。二、企业通过

TikTok的全球影响:跨文化、跨国界的短视频文化

随着TikTok的崛起,短视频文化正在以前所未有的方式迅速传播,跨足了不同国家和文化的边界。本文将探讨TikTok的全球影响,以及它如何促进了跨文化交流和文化融合。短视频:跨越语言和文化的沟通工具TikTok的短视频格式具有独特的跨文化传播能力。它通过简洁而生动的方式,允许用户在不同语言背景下进行沟通。这种简单而直接的

LeetCode 盛最多水的容器 双指针

原题链接:力扣(LeetCode)官网-全球极客挚爱的技术成长平台题面:给定一个长度为n的整数数组height。有n条垂线,第i条线的两个端点是(i,0)和(i,height[i])。找出其中的两条线,使得它们与x轴共同构成的容器可以容纳最多的水。返回容器可以储存的最大水量。说明:你不能倾斜容器。示例1:输入:[1,8

uniapp——ios证书申请——详细步骤+遇到的坑——技能提升

三年前,我曾经写过uniapp的程序,时隔三年,又遇到了uniapp的需求,之前没有自行申请ios证书,现在终于要自己生成证书了。。。是福不是祸,是祸躲不过。uniapp生成ios证书的详细步骤uniapp对接unipush的操作步骤链接1.生成`ios`证书1.1准备环境——略过1.2登录IOSDevCenter——

热文推荐