从官方文档看Redis

一.核心能力

Redis

1.In-memory data structures 内存数据结构

Redis以"键值对" 的方式来存储数据, 是一种"非关系型数据库"

ps: MySQL以"表"的方式来存储数据, 是一种"关系型数据库"

2.Programmability 可编程性

Redis可以用脚本(Lua)来执行一些操作  (也可以直接执行一些简单交互式命令)

3.Extensibility 可扩展性

通过 C, C++, Rust这几个语言来编写Redis扩展

很好理解~就是虽然有很好用的功能,但是还是不合心意~那就自己搞出一个更匹配的咯

4.Persistence 持久性

Redis存在内存上~但是呢,数据很容易丢吖~比如突然程序关闭什么的

所以,Redis在硬盘上也存了一份数据, 内存为主,硬盘为辅~~ 若果真没了,就拿硬盘的数据顶上

5.Clustering 集群

水平可扩展性~

我们说了~Redis存内存上,但是内存空间小啊~引入了分布式,多台主机~~所以在多个主机部署多个Redis节点,每个节点存一部分数据(yep,是很像我们之前说的分库分表~)

6.High availability 高可用性

或者说备份~~就是,结合一下4,丢了内存主数据,就让硬盘从数据直接顶上 -> 系统可用性提升

二.应用场景

这个也可以说是,展开说说Redis用来干嘛的~~比如,我们上篇文章谈到的,用为数据库,缓存,消息队列

1.Real-time data store 实时数据存储

就是相当于一个低延迟和高吞吐量的数据库咯~~比如搜索这方面~响应要很快(结合核心功能想)~就可以用Redis

敲黑板~~这里的Redis要存所有数据,不可以随便丢失数据

2.Caching & session storage 缓存和会话存储

会话缓存-> 我们之前谈这个就要说说 cookie,session~ 有了他们才能确认身份,不重复进行一些验证操作

但是,现在搞成了分布式,多台应用是服务器~谁知道负载因子把用户请求分配到哪台上?这就说明 , 每一次都要验证->天啊,我已经烦躁了,但是我却没遇到这种情况 所以,必然有了解决方案的!

i)让负载因子把同一个用户请求,打在同一个机器上(不能利用之前说的"轮询"了, 要用useId 比如~五台应用服务器,那就%5 根据余数看,扔哪台)

ii)用Redis, 将这些会话数据放在一台独立机器上存储~~ 这样应用服务器就可以再去这上面找咯~

缓存->辅助MySQL, 因为它慢 so我们利用二八原则(就是数据很多,但高频需要之占十分之二), 将那十分之二存Redis上~

敲黑板~~这里的Redis只是一个辅助加速,丢了也无所谓,因为MySQL里面存了所有数据

3.Streaming & messaging 流媒体和消息传递

就是它的初心啦~消息队列(可惜,它火不是因为这个~~, 毕竟优秀的消息队列很多~比如RabbitMQ, Kafka....)

消息队列 =>实现: 生产者消费者模型 => 好处: 解耦合, 削峰填谷(不易因为抗压不行而崩溃~~这个我介绍过的~)

三.Redis为什么快

okkk~~说完这几个 其实还有一个问题 就是 Redis快! 那具体我们只知道是因为在内存,so 还有没有别的原因?

1.核心功能都是简单逻辑 (就是存个数据)(不像MySQL,又是外键,又是索引........)

2.使用单线程(逻辑简单~so也不占太多CPU->不用多线程反而快了,节省一些开销)

3.IO多路复用(epoll) (一个线程管多个socket)

四.小结

我们现在已经了解了

Redis 内存数据 很快 分布式 和新特性 应用方面

话说得好 手下见真章 我们去用用~~

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

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

相关文章

遥感数据与作物模型同化应用:PROSAIL模型、DSSAT模型、参数敏感性分析、数据同化算法、模型耦合、精度验证等主要环节

查看原文>>>遥感数据与作物模型同化实践技术应用 基于过程的作物生长模拟模型DSSAT是现代农业系统研究的有力工具,可以定量描述作物生长发育和产量形成过程及其与气候因子、土壤环境、品种类型和技术措施之间的关系,为不同条件下作物生长发育及…

【UE 材质】力场护盾和冲击波效果

目录 效果 步骤 一、制作力场护盾材质 二、制作冲击波材质效果 三、制作冲击波粒子效果 四、制作震动效果 效果 步骤 一、制作力场护盾材质 1. 首先新建一个第一人称角色游戏模板 2. 新建一个材质,用于作为力场护盾的材质,这里命名为“Mat_for…

cms之wordpress主题安装

WordPress主题安装教程的方法有两种,分为在线安装和上传安装,下面是主题详细安装方法的步骤。 后台在线安装主题 从后台的主题界面在线安装主题是最方便的WordPress主题安装方式。方法如下: 1 在WordPress后台,转到外观→主题 …

本地部署CodeLlama +GTX1080显卡 对接open-interpreter对接wxbot(一)

1.效果展示 开源项目GitHub - oobabooga/text-generation-webui: A Gradio web UI for Large Language Models. Supports transformers, GPTQ, llama.cpp (GGUF), Llama models. "Code Llama" 是一个大型代码语言模型的系列,基于 "Llama 2" 构建,为编程…

进程属性/进程状态

task_struct-PCB的一种 在Linux中描述进程的结构体叫做task_struct。进程也叫任务 task_struct是Linux内核的一种数据结构,它会被装载到RAM(内存)里并且包含着进程的信息。 task_ struct内容分类 标示符: 描述本进程的唯一标示符,用来区别其他进程。 …

Mysql高级——索引创建和使用

索引的创建 1. 索引的声明与使用 1.1 索引的分类 MySQL的索引包括普通索引、唯一性索引、全文索引、单列索引、多列索引和空间索引等。 从功能逻辑上说,索引主要有 4 种,分别是普通索引、唯一索引、主键索引、全文索引。 按照物理实现方式&#xff…

一文带你走进软件测试的大门

目录 前言 需求 用户需求 软件需求 从测试人员的角度看需求 测试用例 测试环境 测试数据 预期结果 操作步骤 为什么要有测试用例 Bug的概念 世界上的第一个bug bug的定义 开发模型和测试模型 软件的生命周期 开发模型 瀑布模型 螺旋模型 增量、迭代 敏捷 …

C++--简单实现定长内存池

1.什么是定长内存池 在C/C中,动态申请内存都是通过malloc来申请的,但是实际上不是是直接从堆上直接申请的内存,而是通过malloc动态申请一大块内存,malloc就相当于一块内存池,然后分给程序使用,如果申请的内…

ResponseBodyAdvice 获取参数

废话不多说,简练,一针见血,解决问题,才是最好的。 首先肯定是重写了这个beforeBodyWrite方法 重点来了,获取请求参数: request.getBody()返回一个inputStream流,这里你可以 使用很多方法把这个…

《PostgreSQL中的JSON处理:技巧与应用》

🌷🍁 博主猫头虎(🐅🐾)带您 Go to New World✨🍁 🐅🐾猫头虎建议程序员必备技术栈一览表📖: 🛠️ 全栈技术 Full Stack: &#x1f4da…

驱动开发--day2(内核不同模块的相互访问、字符设备驱动、led控制实验代码及现象)

实现三盏灯的控制,编写应用程序测试 head.h #ifndef __HEAD_H__ #define __HEAD_H__#define LED1_MODER 0X50006000 #define LED1_ODR 0X50006014 #define LED1_RCC 0X50000A28#define LED2_MODER 0X50007000 #define LED2_ODR 0X50007014#endif mychrdev.c #inc…

MyBatisPlus(二)基础Mapperr接口:增删改查

MyBatisPlus:基础Mapper接口:增删改查 插入一条数据 代码 Testpublic void insert() {User user new User();user.setId(6L);user.setName("张三");user.setAge(25);user.setEmail("zhangsanexample.com");userMapper.insert(use…

LeetCode(力扣)406. 根据身高重建队列Python

LeetCode406. 根据身高重建队列 题目链接代码 题目链接 https://leetcode.cn/problems/queue-reconstruction-by-height/ 代码 class Solution:def reconstructQueue(self, people: List[List[int]]) -> List[List[int]]:people.sort(key lambda x: (-x[0], x[1]))que […

CSS:实现文字溢出显示省略号且悬浮显示tooltip完整信息

组件&#xff1a; element ui中的tooltip组件 思路&#xff1a;通过ref获取宽度进行判断&#xff0c;当子级宽度大于对应标签/父级宽度显示tooltip组件 <div class"bechmark-wrap"><ul ref"bechmarkUl"><liv-for"(item,index) in comp…

MySQL数据库技术笔记(1)

MySQL是一种关系数据库管理系统. 按照数据结构来组织、存储和管理数据的仓库. 数据库的发展&#xff1a; 1.层次模型存储&#xff1a;归为大类&#xff0c;分小类&#xff0c;也称树形结构 2.网状模型 3.关系模型&#xff1a;1对1的关系&#xff0c;1对多的关系&#xff0…

C++之生成详细汇编代码(二百一十六)

简介&#xff1a; CSDN博客专家&#xff0c;专注Android/Linux系统&#xff0c;分享多mic语音方案、音视频、编解码等技术&#xff0c;与大家一起成长&#xff01; 优质专栏&#xff1a;Audio工程师进阶系列【原创干货持续更新中……】&#x1f680; 人生格言&#xff1a; 人生…

留资机器人助你有效提高营销成功率

我们都知道&#xff0c;当客户产生留资行为&#xff0c;就要抓住机会&#xff0c;让工作人员及时地对客户进行回访&#xff0c;然后将留资线索跟踪、维系。而如何准确有效地提高客户保留率和转化率是营销成功的关键。所以对于企业来说&#xff0c;留资机器人正是引导客户留资&a…

Nebula Graph图数据库教程介绍

Nebula Graph图数据库教程介绍 ​ Nebula Graph&#xff08;星云图&#xff09;是一个开源的分布式图数据库系统&#xff0c;最初由中国的石墨烯数据库团队开发。它专门设计用于处理大规模图数据&#xff0c;并提供了高度可扩展性和性能。Nebula Graph支持多种图数据库的核心特…

Android笔记(二十九):利用python自动生成多语言

背景 项目需要支持十几种多语言&#xff0c;而且每个版本的新功能ui都有很多地方需要多语言&#xff0c;如果手动添加非常耗时&#xff0c;于是设计了一个python脚本&#xff0c;通过excel表格转化多语言到项目values/strings文件内 步骤 android工程项目结构 脚本位于langu…

Excel数学、工程和科学计算插件:FORMULADESK Studio

如果 Excel 是您的武器 - 让我们磨砺您的剑&#xff01;为整天使用 Excel 的人们提供创新的 Excel 加载项&#xff0c;你需要这个 FORMULADESK Studio。。。 Excel 插件为任何使用 Excel 执行数学、工程和科学计算的人提供了必备工具。 * 将公式视为真正的数学方程 * 为您的公…