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的文档。

相关推荐
液态不合群9 分钟前
Mysql篇-三大日志
数据库·mysql
喝醉酒的小白30 分钟前
数据库参数备份
数据库
小徍33 分钟前
MySQL 8.0特性-自增变量的持久化
数据库·mysql
糖豆大将军34 分钟前
Mysql个人八股总结
数据库·oracle
YRr YRr43 分钟前
Ubuntu20.04 解决一段时间后键盘卡死的问题 ubuntu
linux·数据库·ubuntu
2401_857636391 小时前
实时数据流的革命:分布式数据库的挑战与实践
数据库·分布式
你今天真好看+11 小时前
redis的事务
redis
冰红茶兑滴水1 小时前
MySQL 表的约束
数据库·mysql
cui_win1 小时前
Redis高可用-Cluster(集群)
数据库·redis·bootstrap
小五Z1 小时前
MySql--增删改查表设计总结
数据结构·数据库·mysql