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…

go+redis基于tcp实现聊天室

goredis实现聊天室 基于tcp连接通过redis实现了消息的广播,命令改名,查询在线人数,查询用户活跃度 serverclinet server 聊天室服务端的流程可以分为几个主要部分:初始化、监听连接、处理每个连接以及消息的处理和转发 1. 初…

【优选算法】(第八篇)

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

Redis:list类型

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

C++基础:enum class作用域枚举 (C++11)

C基础:enum class作用域枚举 介绍特点作用域强类型默认底层类型 介绍 enum class 是C11引入的一种改进的枚举机制,主要改进了传统的enum类型的作用域控制问题, 故也被称为作用域枚举(scoped enumerations)。那么&…

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

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

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

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

SQL语句 (MySQL)

登录操作 参数 -u:user 用户参数 -p:password 密码 mysql -u Jack -p退出登录 exit;控制与管理 展示用户列表 select user, host from mysql.user;创建用户 UserName :填新用户的名称HostName :允许该用户用什么主机登录数据…

单链表基本操作(2)

一、 取值——取单链表中第i个元素的内容 算法步骤: 从第1个结点(L->next)顺链扫描,用指针p指向当前扫描到的结点,p初值pL->next。j做计数器,累计当前扫描过的结点数,j初值为1。当p指向…

(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…

【历年CSP-S复赛第一题】暴力解法与正解合集(2019-2022)

P5657 [CSP-S2019] 格雷码P7076 [CSP-S2020] 动物园P7913 [CSP-S 2021] 廊桥分配P8817 [CSP-S 2022] 假期计划 P5657 [CSP-S2019] 格雷码 暴力50分 #include<bits/stdc.h> #define IOS ios::sync_with_stdio(false),cin.tie(0),cout.tie(0) #define int long long #d…

【Android 源码分析】Activity生命周期之onStop-1

忽然有一天&#xff0c;我想要做一件事&#xff1a;去代码中去验证那些曾经被“灌输”的理论。                                                                                  – 服装…

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

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

解决方案:机器学习中,出现欠拟合和过拟合,这两种情况分别如何解决

文章目录 一、现象二、解决方案欠拟合&#xff08;Underfitting&#xff09;过拟合&#xff08;Overfitting&#xff09; 一、现象 在工作中&#xff0c;在机器学习中&#xff0c;出现欠拟合和过拟合的时候&#xff0c;需要有对应的解决方法&#xff0c;所以整理一下 二、解决…

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 运行清…