Redis --- 第二讲 --- 特性和安装

一、背景知识

Redis特性:

Redis是一个在内存中存储数据的中间件,用于作为数据库,作为缓存,在分布式系统中能够大展拳脚。Redis的一些特性造就了现在的Redis。

在内存中存储数据,通过一系列的数据结构。MySQL主要是通过“表”的方式来存储组织数据的“关系型数据库”。Redis主要是通过“键值对”的方式来存储组织数据的。key都是string,value则可以是上述的这些数据结构。Redis也可以被当作一个非关系型数据库。

针对Redis的操作,可以直接通过简单的交互式命令进行操作。也可以通过一些脚本的方式,批量的执行一些操作(可以带有一些逻辑)。Lua也是一个编程语言,用来操作这个Redis

扩展能力:可以在Redis原有的功能基础上再进行扩展。Redis提供了一组API。通过C,C++,Rust语言编写扩展本质上就是一个动态链接库。windows上的dll,可以让exe调用里面包含很多代码。Linux上的动态库式.so虽然和dll格式不同,但是本质上是一样的。我们可以自己去扩展Redis的功能,比如,Redis自身已经提供了很多的数据结构和命令,通过扩展,让Redis支持更多的数据结构以及支持更多的命令

持久化:Redis把数据存储在内存上的。内存的数据是易失的,进程退出/系统重启的时候,内存数据会丢失。所以Redis会把数据存储在硬盘上,内存为主,硬盘为辅。硬盘相当于对内存的数据备份了一下,如果Redis重启了,就会在重启时加载硬盘中的备份数据,使Redis的内存恢复到重启前的状态。

集群:Redis作为一个分布式系统中的中间件,能够支持集群是很关键的。水平扩展,类似于分库分表。一个Redis能存储的数据式有限的,引入多个主机,部署多个Redis节点,每个Redis存储数据的一部分。

高可用:核心叫做冗余/备份。Redis自身也是支持主从结构的,从节点就相当于主节点的备份了。

为啥Redis快:

1、Redis数据在内存中,就比访问硬盘的数据库,要快很多。

2、Redis核心功能都是比较简单的逻辑。核心功能都是比较简单的操作内存的数据结构。

3、从网络角度上,Redis使用了IO多路复用的方式(本质就是使用一个线程,管理很多个soc-ket)。

4、Redis使用的是单线程模型。这样的单线程模型,减少了不必要的线程之间的竞争开销。多线程提高效率的前提是,CPU密集型的任务,使用多线程可以充分利用CPU的多核资源。但是Redis的核心任务,主要就是操作内存的数据结构。不会吃很多的CPU。

5、Redis是使用C语言开发的,所以就快。列在这里不太认可。MySQL也是C语言开发的。

Redis应用场景:

实时的数据存储,把Redis当成了数据库,更低的延迟,更高的吞吐量。大多数场景下,考虑到数据存储,优先考虑的是大。但是仍然有一些场景。考虑的是快。

当然,使用这样的内存数据库,存储大量的数据,需要不少的硬件资源。

缓存:使用MySQL存数据,大,慢。二八原则,把热点数据拎起来,存储在Redis中。Redis存的是部分数据。全量数据都是以MySQL为主的。哪怕是Redis的数据没了,还可以从MySQL中加载回来。

会话存储:cookie =》实现用户身份信息的保存。需要session配合的。服务器这里真正的存储了用户数据。只是在客户端存储了一个用户身份的标识叫做session ID。

消息队列

此处咱们说到的消息队列。不是Linux进程间通信。基于这个可以实现一个网络版本的生产者和消费者模型。分布式系统来说,服务器和服务器之间,有时候也需要使用到生产者消费者模型。

Redis不能做的事情。

存储大规模的数据。

二、安装Redis

安装Redis 5系列

在Linux中进行安装,开始学习的时候,现在本机上安装。后面学到Redis的集群相关的功能的时候,再使用Docker。

在Ubuntu上安装

1、先切换到root用户

2、使用apt命令来搜索redis相关的软件包

apt search redis

装这个

3、使用apt命令安装redis

apt install redis

查看redis服务

但是ip是127.0.0.1

4、需要手动修改配置文件,把ip改了。

这个是redis的配置文件,这里包含了redis的相关功能的配置内容。啥叫作配置文件,很多软件都是由配置文件的,一个大的软件,里面包含很多的功能,有很多可以定制化的操作。就可以通过配置文件选择开启/关闭/设定某些功能。

打开配置文件

修改成这样

redis不要配置密码。虽然咱们没有密码,但是非常安全。只要咱们的数据不值钱,就是非常安全的。

5、重新启动服务器才可以生效

service redis-server restart

6、使用redis自带的客户端来连接服务器

通过ping命令来验证

ctrl + d退出redis客户端。

在Centos上安装Redis 5

如果Centos8,yum仓库中默认的redis版本就是5,直接yum install即可。

如果是Centos7,yum仓库中默认的redis版本是3系列。比较老。

此处我们需要安装额外的软件源。使用scl源。

安装redis

和ubuntu一样需要配置配置文件。先进行软链接

针对配置文件

修改配置文件

服务器程序,一般都会以后台进程的方式运行。Linux中的进程,分成前台进程和后台进程。前台进程会随着终端的关闭而随之被杀死。后台进程不会随着终端关闭而关闭。

设置工作目录

设置日志目录

启动redis服务器,通过命令来启动

查看状态

停止redis服务器,kill -9掉进程。

后续如果修改了配置,需要进行重启才会生效。

三、Redis客户端

redis也是一个客户端-服务器结构的程序。

Redis的客户端也有很多种形态

1、命令行客户端

2、图形化界面的客户端

桌面程序,web程序。

3、基于Redis的api自己开发客户端【工作中最主要的形态】非常类似于MySQL的C语言API和JDBC。

redis快,咱们谈到的redis的快是相对于mysql这样的关系型数据库而言的。但是如果直接和内存中的操作变量相比,就没有优势了,甚至更慢了。是否使用redis要结合实际的需求来确定。但是有了redis之后,就可以把数据单独存储,后续应用服务器重启,不会影响到数据内容。未来要扩展成分布式系统,使用redis是更佳的。一定要对症下药,具体问题具体分析。是否引入一个技术,一定要想清楚来龙去脉,想清楚能够解决啥问题,引入了以后有啥问题。

四、使用官网文档

通过redis-cli客户端和redis服务器交互,设计到很多的redis命令。redis的命令非常多,掌握常用命令,学会使用redis的文档。

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

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

相关文章

docker学习笔记(1.0)

docker命令 下载镜像相关命令 检索:docker search 比如:docker search nginx 是查看有没有nginx镜像 后面的OK表示是不是官方镜像,如果有就是官方镜像,如果没有就是第三方的。 下载:docker pull 比如&#xff1a…

Redis篇(Redis原理 - 数据结构)(持续更新迭代)

目录 一、动态字符串 二、intset 三、Dict 1. 简介 2. Dict的扩容 3. Dict的rehash 4. 知识小结 四、ZipList 1. 简介 2. ZipListEntry 3. Encoding编码 五、ZipList的连锁更新问题 六、QuickList 七、SkipList 八、RedisObject 1. 什么是 redisObject 2. Redi…

【优选算法】(第八篇)

目录 串联所有单词的⼦串(hard) 题目解析 讲解算法原理 编写代码 最⼩覆盖⼦串(hard) 题目解析 讲解算法原理 编写代码 串联所有单词的⼦串(hard) 题目解析 1.题目链接:. - 力扣&#…

Redis:list类型

Redis:list类型 list命令非阻塞LPUSHLRANGELPUSHXRPUSHRPUSHXLPOPRPOPLINDEXLINSERTLLENLREMLTRIMLSET 阻塞BLPOPBRPOP 内部编码ziplistlinkedlistquicklist 几乎每种语言都有顺序表、数组、链表这样的顺序结构,Redis也做出了相应的支持。 如图&#xff…

Stable Diffusion绘画 | AI 图片智能扩充,超越PS扩图的AI扩图功能(附安装包)

来到「文生图」页面,输入固定的起手式提示词。 第1步,开启 ControlNet,将需要扩充的图片加载进来: 控制类型选择「Inpaint」,预处理器选择「inpaint_onlylama」,缩放模式选择「缩放后填充空白」&#xff1…

基于SpringBoot+Vue的网约车管理系统

作者:计算机学姐 开发技术:SpringBoot、SSM、Vue、MySQL、JSP、ElementUI、Python、小程序等,“文末源码”。 专栏推荐:前后端分离项目源码、SpringBoot项目源码、Vue项目源码、SSM项目源码、微信小程序源码 精品专栏:…

(Django)初步使用

前言 Django 是一个功能强大、架构良好、安全可靠的 Python Web 框架,适用于各种规模的项目开发。它的高效开发、数据库支持、安全性、良好的架构设计以及活跃的社区和丰富的文档,使得它成为众多开发者的首选框架。 目录 安装 应用场景 良好的架构设计…

Leetcode—763. 划分字母区间【中等】

2024每日刷题&#xff08;175&#xff09; Leetcode—763. 划分字母区间 C实现代码 class Solution { public:vector<int> partitionLabels(string s) {int rightmost[26];int l 0;int r 0;for(int i 0; i < s.length(); i) {rightmost[s[i] - a] i;}vector<…

[C语言]第十一节 函数递归一基础知识到高级技巧的全景探索

目录 11.1. 递归是什么&#xff1f; 11.1.1 递归的思想&#xff1a; 11.2 递归的限制条件 举例1&#xff1a;求n的阶乘 画图推演 举例2&#xff1a;顺序打印⼀个整数的每⼀位 画图推演 11.3. 递归与迭代 举例3&#xff1a;求第n个斐波那契数 11.1. 递归是什么&#xff…

一款基于 Java 的可视化 HTTP API 接口快速开发框架,干掉 CRUD,效率爆炸(带私活源码)

平常我们经常需要编写 API&#xff0c;但其实常常只是一些简单的增删改查&#xff0c;写这些代码非常枯燥无趣。 今天给大家带来的是一款基于 Java 的可视化 HTTP API 接口快速开发框架&#xff0c;通过 UI 界面编写接口&#xff0c;无需定义 Controller、Service、Dao 等 Jav…

【Java数据结构】栈 (Stack)

【本节目标】 1. 栈的概念及使用 2. 相关 OJ 题 一、概念 栈&#xff1a;一种特殊的线性表&#xff0c;其只允许在固定的一端进行插入和删除元素操作。进行数据插入和删除操作的一端称为栈顶&#xff0c;另一端称为栈底。栈中的数据元素遵守后进先出LIFO&#xff08;Last…

【2024】前端学习笔记11-网页布局-弹性布局flex

学习笔记 网页布局弹性布局&#xff1a;flex案例&#xff1a;flex布局案例 网页布局 在页面布局中&#xff0c;display属性用于设置一个元素的显示方式。它可以指定元素是作为块级元素、内联元素还是充当表格元素显示。 display的常见属性值&#xff1a; block&#xff1a;将…

k8s 中微服务之 MetailLB 搭配 ingress-nginx 实现七层负载

目录 1 MetailLB 搭建 1.1 MetalLB 的作用和原理 1.2 MetalLB功能 1.3 部署 MetalLB 1.3.1 创建deployment控制器和创建一个服务 1.3.2 下载MealLB清单文件 1.3.3 使用 docker 对镜像进行拉取 1.3.4 将镜像上传至私人仓库 1.3.5 将官方仓库地址修改为本地私人地址 1.3.6 运行清…

ensp回顾--聚合链路技术简介与详细案例(构建基于交换机到交换机的聚合链路)

文章目录 什么是聚合链路&#xff1f;聚合链路的工作原理聚合链路的优势使用场景 案例ensp版本图例pc的ip地址具体步骤连通性测试 在现代网络中&#xff0c;聚合链路&#xff08;Link Aggregation&#xff09;是一种常见的技术&#xff0c;用于提高网络连接的带宽和可靠性。本文…

RNN经典案例——构建人名分类器

RNN经典案例——人名分类器 一、数据处理1.1 去掉语言中的重音标记1.2 读取数据1.3 构建人名类别与人名对应关系字典1.4 将人名转换为对应的onehot张量 二、构建RNN模型2.1 构建传统RNN模型2.2 构建LSTM模型2.3 构建GRU模型 三、构建训练函数并进行训练3.1 从输出结果中获得指定…

【可答疑】基于51单片机的智能台灯(含仿真、代码、报告、演示视频等)

✨哈喽大家好&#xff0c;这里是每天一杯冰美式oh&#xff0c;985电子本硕&#xff0c;大厂嵌入式在职0.3年&#xff0c;业余时间做做单片机小项目&#xff0c;有需要也可以提供就业指导&#xff08;免费&#xff09;~ &#x1f431;‍&#x1f409;这是51单片机毕业设计100篇…

数据分析-28-交互式数据分析EDA工具和低代码数据科学工具

文章目录 1 数据分析的七步指南1.1 第一步:问题定义和数据采集1.2 第二步:数据清洗和预处理1.3 第三步:数据探索和分析1.4 第四步:模型建立和分析1.5 第五步:数据可视化1.6 第六步:结果解释和报告1.7 第七步:部署和维护1.8 基础的数据分析库1.9 低代码数据科学工具2 EDA…

STM32 通用定时器

一、概述 STM32内部集成了多个定时/计数器&#xff0c;根据型号不同&#xff0c;STM32系列芯片最多包含8个定时/计数器。其中&#xff0c;TIM6、TIM7为基本定时器&#xff0c;TIM2~TIM5为通用定时器&#xff0c;TIM1、TIM8为高级控制定时器。 1.定时器的类型 基本定时器通用定…

实战案例:结合大模型与爬虫技术实现12306智能查票系统

大语言模型&#xff0c;例如 GPT-4&#xff0c;拥有强大的知识储备和语言理解能力&#xff0c;能够进行流畅的对话、创作精彩的故事&#xff0c;甚至编写代码。然而&#xff0c;它们也面临着一些难以克服的困境&#xff0c;就像一个空有知识却无法行动的巨人 信息滞后&#xf…

Linux 之 安装软件、GCC编译器、Linux 操作系统基础

安装软件、GCC编译器、Linux 操作系统基础 学习任务&#xff1a; 安装 Vmware虚拟机、掌握Ubuntu 系统的使用认识 Ubuntu 操作系统的终端和 Shell掌握软件安装、文件系统、掌握磁盘管理与解压缩掌握 VIM 编辑器、Makefile 基本语法熟悉 Linux 常见指令操作 安装好开发软件&…