一、背景知识
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的文档。