Redis 安装与基本使用
Redis 简介
-
Redis (REmote DIctionary Server) 是用 C 语言开发的一个开源的高性能键值对(key-value)数据库。
-
特点:
- 数据间没有必然的关联关系
- 内部采用单线程机制进行工作
- 高性能。官方提供测试数据,50个并发执行100000 个请求,读的速度是110000 次/s,写的速度是81000次/s。
- 多数据类型支持
- 字符串类型 string
- 列表类型 list
- 散列类型 hash
- 集合类型 set
- 有序集合类型 sorted_set
- 持久化支持。可以进行数据灾难恢复
Redis 安装 (Linux)
-
安装在Linux服务器中, 以centos 7为例
-
Redis是基于C语言编写的,因此首先需要安装Redis所需要的gcc依赖:
yum install -y gcc tcl
- 这个命令是在Linux系统中使用Yum包管理器安装gcc和tcl软件包。
- gcc是GNU编译器集合,用于编写和编译C、C++和其他编程语言的程序,
- tcl是一个脚本语言,可以用于创建各种不同类型的应用程序。
- 通过执行这个命令,你可以轻松地在Linux系统中安装这两个软件包,并准备好开始编写和编译代码。
-
-
如果系统已经安装了gcc和tcl,并且gcc和tcl已经是最新版本,无需更新。因此,输出信息中显示“已安装并具有最新版本”,最后提示“无需进行任何操作”。可以认为该系统已经安装好了gcc和tcl软件包,并且它们已准备好在该系统上使用。
-
-
去官网下载安装包 : https://redis.io/download/
-
下载链接:
https://download.redis.io/releases/redis-6.2.11.tar.gz
-
可以使用
curl
命令或者wget
命令。以下是两个命令的例子:- 使用 curl 命令:
curl -O https://download.redis.io/releases/redis-6.2.11.tar.gz
- 使用 wget 命令:
wget https://download.redis.io/releases/redis-6.2.11.tar.gz
两个命令的作用是相同的,都会下载该文件。其中
-O
参数表示将文件保存到本地,并使用远程文件名(即不改变文件名)。如果你想要指定本地文件名,可以将-O
后面的参数替换成你需要的文件名。请注意,这些命令在 Linux 系统中通常已经预装。tips:
curl
和wget
都是用于从网络上获取文件的命令行工具,它们的主要区别在于使用方式、功能和支持的协议等方面。一些常见的区别包括:
- 使用方式:
curl
命令更加灵活,可以执行更复杂的任务,例如发送 POST 请求或设置请求头信息。而wget
命令则更加简单,可以快速下载整个网站或递归下载目录。 - 支持的协议:
curl
支持多种协议,包括 HTTP、HTTPS、FTP、IMAP、POP3、SMTP 等,而wget
主要支持 HTTP、HTTPS 和 FTP 协议。 - 功能:
curl
命令提供了许多高级功能,如支持断点续传、HTTP 认证、代理、cookie 管理等。而wget
命令则不支持所有这些功能,但提供了一些类似的选项。
因此,在选择使用哪个命令时,需要根据具体的需求来判断。如果你需要一个强大且灵活的工具来处理各种网络请求,那么
curl
可能更适合你;如果你只是需要简单地下载文件或者整个网站,那么wget
可能更适合你。-
这里以
wget
命令为例演示 -
-
已经下载成功!
-
若是Linux下载过慢, 可以通过本地Windows电脑下载, 再通过MobaXterm软件上传到Linux服务器中
解压压缩包
-
tar -xzf redis-6.2.11.tar.gz
-
-
进入redis目录,运行编译命令:
-
cd redis-6.2.11
-
make && make install
-
-
-
默认的安装redis软件是在
/usr/local/bin
目录下:ll /usr/local/bin/
-
-
这个命令是列出
/usr/local/bin/
目录下的所有文件和目录,其中ll
是ls -l
命令的一个别名,表示以长格式显示目录内容。在Linux或Unix系统中,/usr/local/bin
是一个存放可执行文件的标准目录,通常用于安装自定义软件。使用该命令可以快速查看该目录下的所有文件及其相关权限、所有者、大小等信息。 -
该目录以及默认配置到环境变量,因此可以在任意目录下运行这些命令。其中:
- redis-cli:是redis提供的命令行客户端
- redis-server:是redis的服务端启动脚本
- redis-sentinel:是redis的哨兵启动脚本
-
Redis 启动
redis的启动方式有很多种,例如:
- 默认启动
- 指定配置启动
- 开机自启
默认启动
安装完成后,在任意目录输入redis-server命令即可启动Redis:
redis-server
如图:
这种启动属于
前台启动
,会阻塞整个会话窗口,窗口关闭或者按下CTRL + C
则Redis停止。不推荐使用。
指定配置启动
如果要让Redis以后台
方式启动,则必须修改Redis配置文件,就在我们之前解压的redis安装包下文件名为redis.conf
如果不知道配置文件在哪, 可以输入下面的命令进行查找:
sudo find / -name redis.conf 2> /dev/null
find 命令用于在指定目录结构下查找文件,-name 参数指定要查找的文件名模式。这个命令的作用是以超级用户身份在整个系统中查找名为 redis.conf 的文件,并将搜索过程中产生的错误输出忽略掉。
找到文件后先进入到该目录
我们先将这个配置文件备份一份(以后出啥问题可以改回来):
cp redis.conf redis.conf.bck
然后修改redis.conf文件中的一些配置:
输入vi redis.conf
进入vi编辑器,配置内容如下:
# 允许访问的地址,默认是127.0.0.1,会导致只能在本地访问。修改为0.0.0.0则可以在任意IP访问,生产环境不要设置为0.0.0.0
bind 0.0.0.0
# 守护进程,修改为yes后即可后台运行
daemonize yes
# 密码,设置后访问Redis必须输入密码
requirepass 12345678
# 监听的端口
port 6379
# 工作目录,默认是当前目录,也就是运行redis-server时的命令,日志、持久化等文件会保存在这个目录
dir .
# 数据库数量,设置为1,代表只使用1个库,默认有16个库,编号0~15
databases 1
# 设置redis能够使用的最大内存
maxmemory 512mb
# 日志文件,默认为空,不记录日志,可以指定日志文件名
logfile "redis.log"
如找不到则可以用搜索功能, /bind
即/加搜索的名称,即可跳到对应的内容。按a进入编辑
在vi编辑器中,搜索文本是通过在命令模式下使用“/”或“?”命令来实现的。搜索操作处于命令模式下。
使用“/”命令可向前搜索指定的字符串,而使用“?”命令则向后搜索指定的字符串。在执行搜索操作后,用户可以使用n和N命令来查找下一个或上一个匹配项。
- 将bind 127.0.0.1注释掉, 添加bind 0.0.0.0
按ESC
退到命令模式下, 继续搜索\daemon
- 守护进程,修改为yes后即可后台运行
daemonize yes
- 修改密码: 12345678
- 添加日志文件
修改上述四处即可, 其余的可按需求修改。按Esc
键, 输入:wq
保存并退出
启动Redis:
# 进入redis安装目录 , 主要是用到redis.conf文件
cd /home/mydownload/redis-6.2.11
# 启动,使用配置文件的形式启动
redis-server redis.conf
使用 ps -ef | grep redis
查看启动的redis的进程
停止服务:
# 利用redis-cli来执行 shutdown 命令,即可停止 Redis 服务,
# 因为之前配置了密码,需要输入密码
# 执行命令 redis-cli -h <hostname_or_ip> -a <password> shutdown
#其中的hostname可以使用下面的命令查看
hostname
#再输入
redis-cli -h localhost.localdomain -a 12345678 shutdown
# 查看redis进程
ps -ef | grep redis
开机自启
我们也可以通过配置来实现开机自启。
首先,新建一个系统服务文件:
vi /etc/systemd/system/redis.service
内容如下:
按A插入文本, 输入下面的内容(可能一些地方需要修改比如redis-server和redis.conf的路径要更改)
[Unit]
Description=redis-server
After=network.target
[Service]
Type=forking
ExecStart=/usr/local/bin/redis-server /home/mydownload/redis-6.2.11/redis.conf
PrivateTmp=true
[Install]
WantedBy=multi-user.target
上述内容用于启动和管理Redis服务器进程。
[Unit] Description=redis-server After=network.target
这部分定义了服务的名称和它所依赖的其他服务(在这里是网络服务)。当系统启动时,所有必须的服务都要先启动,然后才能启动当前服务。
[Service] Type=forking ExecStart=/usr/local/bin/redis-server /home/mydownload/redis-6.2.11/redis.conf PrivateTmp=true
这部分定义了服务的类型、启动命令和服务是否使用私有临时文件。
Type=forking
表示该服务会fork一个子进程来运行Redis服务器,而父进程将退出。ExecStart
指定了服务的启动命令,即通过在终端中执行的命令,以启动Redis服务,ExecStart=/usr/local/bin/redis-server /home/mydownload/redis-6.2.11/redis.conf
,其中/usr/local/bin/redis-server
是 Redis 服务器程序的可执行文件路径(不同系统安装路径可能不一样,注意查看),它被用于启动 Redis 服务器进程。/home/mydownload/redis-6.2.11/redis.conf
为redis配置文件的路径,注意配置文件的路径, 根据自己安装的路径修改。PrivateTmp=true
表示服务将使用私有的临时文件夹。Tips:若不知道redis-server的可执行文件路径和redis.conf配置文件的路径,可以使用
which
命令来查找可执行文件的位置,比如查询redis-server的可执行文件路径命令:which redis-server
;查找redis.conf
的路径命令:sudo find / -name redis.conf 2> /dev/null
。[Install] WantedBy=multi-user.target
这部分将服务安装在系统启动时需要启动的目标文件中,以确保在系统重新启动时自动启动服务。在这种情况下,服务将在多用户目标(multi-user.target)下启动。
按ESC
键,输入:wq
保存并退出,然后重载系统服务:
systemctl daemon-reload
现在,我们可以用下面这组命令来操作redis了:
# 启动
systemctl start redis
# 停止
systemctl stop redis
# 重启
systemctl restart redis
# 查看状态
systemctl status redis
执行下面的命令,可以让redis开机自启:
systemctl enable redis
Redis客户端
安装完成Redis,我们就可以操作Redis,实现数据的CRUD了。这需要用到Redis客户端,包括:
- 命令行客户端
- 图形化桌面客户端
- 编程客户端
Redis命令行客户端
Redis安装完成后就自带了命令行客户端:redis-cli,使用方式如下:
redis-cli [options] [commonds]
其中常见的options有:
-h 127.0.0.1
:指定要连接的redis节点的IP地址,默认是127.0.0.1-p 6379
:指定要连接的redis节点的端口,默认是6379-a 123321
:指定redis的访问密码
其中的commonds就是Redis的操作命令,例如:
ping
:与redis服务端做心跳测试,服务端正常会返回pong
输入redis-cli -a 12345678
进入Redis命令行客户端
或者不指定commond时,会进入redis-cli
的交互控制台:再输入auto 12345678
进入Redis客户端的命令行
基本命令
-
信息添加:
set key value
- 功能:设置 key,value 数据
-
信息查询:
get key
- 功能:根据 key 查询对应的 value,如果不存在,返回空(nil)在Redis中nil就是null
-
清除屏幕信息:
clear
(Linux系统下的命令, Windows的命令行清屏是cls
)- 功能:清除屏幕中的信息
-
退出客户端命令行模式:
quit 或 exit 或<ESC>键
- 功能:退出客户端
-
帮助
-
功能:获取命令帮助文档,获取组中所有命令信息名称
-
help 命令名称 help @组名
-
Redis默认有16个仓库,编号从0至15. 通过配置文件可以设置仓库数量,但是不超过16,并且不能自定义仓库名称。
- 如果是基于redis-cli连接Redis服务,可以通过select命令来选择数据库:
# 选择 0号库
select 0