〇、前言
关于 Redis 在日常开发中还是用的比较多的,特别是在秒杀、消息队列、排行榜等数据交互时效要求较高的场景,Redis 都可以轻松应对。
本文将针对 Redis 进行简单介绍,以及如何安装,并罗列下全部配置项。后续还将另行发文汇总 Redis 的常用数据结构和常见问题等。
一、什么是 Redis?
Redis(Remote Dictionary Server 远程字典服务)是一个开源的高性能的非关系型键值对 key-value 数据库,具有快速的读写、灵活和可扩展的特性。正因为这些优秀的特性,Redis 在日常开发中也是比较靠前的一个选项。
Redis 数据读写为什么那么快?
首先 Redis 是一个基于内存的数据结构存储系统,避免了磁盘 I/O 操作的延迟;
高效的数据结构设计。例如使用简单动态字符串(SDS),提高了数据处理的效率;
单线程模型。虽然听起来似乎会限制性能,但在 Redis 的场景下,这种设计简化了并发处理,是每个操作都具有原子性,避免了多线程带来的锁和上下文切换的开销;
非阻塞式IO。通过事件驱动的方式,即使在执行慢查询时也不会阻塞整个系统。
一般情况下,Redis 每秒的读写次数可以达到十万次(官方数据显示,单台 Redis 服务器,写大约 81000 次/秒,读大约 110000 次/秒)。
Redis 的灵活性表现在那些方面?
数据结构的多样性。Redis 支持多种数据结构,如字符串、列表、集合、有序集合和哈希等,这些数据结构的灵活性使得 Redis 能够满足各种不同的应用需求,例如缓存、计数器、排行榜等;
多用途性。Redis 可以作为数据库、缓存和消息中间件使用,这得益于其丰富的数据类型和高性能的特性;
持久化支持。Redis 支持 RDB 快照和 AOF 日志两种持久化方式,可以将内存中的数据保存到磁盘中,以便在服务重启后能够恢复数据,这增加了数据的安全性和可靠性。
Redis 的可扩展性表现在那些方面?
线性扩展能力。Redis 能够线性扩展到 1000 多个节点,这意味着随着系统负载的增加,可以通过添加更多的节点来保持性能;
集群化设计。Redis 通过引入 hash slot 的概念,实现了数据的分布式存储和负载均衡。在 Redis Cluster 中,整个数据库被分为 16384 个槽,每个节点可以负责 0 到 16384 个槽,这使得我们可以根据需要动态增加或减少节点,而不会影响系统的可用性;
高可用性保障。通过增加 Slave 节点作为数据副本,Redis 能够在节点故障时自动进行 failover,确保服务的连续性。节点之间通过 gossip 协议交换状态信息,并通过投票机制完成角色转换;
灵活的数据分布。管理员可以通过 cluster addslots 命令将一个或多个槽指派给节点,以此来调整数据分布和负载均衡策略。
二、Windows 下载、安装与简单测试
2.1 下载
推荐下载地址:https://github.com/tporadowski/redis/releases 目前最新版本为 Redis for Windows 5.0.14.1,下文也以此版本为例。
.msi 是 Windows 安装包格式,可以安装,修改,卸载指定程序。说白了 .msi 就是 Windows installer 的数据包,把所有和安装文件相关的内容封装在一个包里。此外:它还包含有关安装过程自己的信息,例如:安装序列、目标文件夹路径、安装选项和控制安装过程的属性。
.zip 是一个压缩包,解压之后可通过命令行进行操作,不需要安装。
2.2 .zip 压缩包
压缩包的文件内容:
2.2.1 开启 Redis 服务
在当前目录打开命令行:(文件目录输入 cmd,回车)(也可以通过命令:cd /d F:\Redis-x64-5.0.14.1
)
然后通过如下命令开启服务:
redis-server.exe redis.windows.conf
# redis.windows.conf 为指定配置文件,可省略
默认端口为 6379,出现图上的图标说明redis服务启动成功。
为了方便使用命令,可以配置 Path 路径:(配置完成后,新打开的 cmd 命令窗口就可以直接输入 Redis 命令)
2.2.2 将 Redis 服务注册为系统服务,避免命令行窗口需一直打开
将 Redis 注册为系统服务后,系统可以在启动时自动启动 Redis,无需手动启动。
打开 cmd 命令窗口,切换到 Redis 安装目录(因为要指定配置文件),执行以下命令将 Redis 注册为系统服务。
下图提示为成功添加:
快捷键 Win + R ,输入 services.msc 打开服务列表找到 Redis,将其启动类型设置为自动启动,并启动此服务。
# cd 进入 Redis 主目录
cd /d F:\Redis-x64-5.0.14.1
# 注册 Redis 为系统服务,并指定配置文件
redis-server --service-install redis.windows.conf --loglevel verbose
# 开启服务
redis-server --service-start
# 停止服务
redis-server --service-stop
# 删除 Redis 系统服务
# 删除不影响已开启的服务正常运行,停止服务后才会消失
redis-server --service-uninstall
2.2.3 通过 redis-cli.exe 连接 Redis 服务并测试
在任意路径可以通过如下命令连接 Redis 服务:
redis-cli.exe -h 127.0.0.1 -p 6379
# 或直接使用
redis-cli
# 测试结果:
F:\Redis-x64-5.0.14.1>redis-cli
127.0.0.1:6379> ping
PONG
127.0.0.1:6379>
# ping 返回结果 PONG 视为成功连接
Redis 默认拥有 16 个数据库,初始默认使用 0 号库,在命令行中通过 select 命令将数据库切换到 8 号数据库:
#切换到 8 号库
127.0.0.1:6379> select 8
OK
127.0.0.1:6379[8]>
设置键值对并查询,以及手动关闭 Redis 服务:
# 设置一个键值对
127.0.0.1:6379[8]> set first_key first_value
OK
# 根据键查询对应的值
127.0.0.1:6379[8]> get first_key
"first_value"
# 手动关闭 Redis 服务
127.0.0.1:6379[8]> shutdown
not connected>
2.3 .msi 安装包命令行中,单击 Esc 键,退出当前连接的 Redis 数据库。
2.3.1 手动安装
2.3.2 配置文件,默认是:redis.windows-service.conf
在上一章节中通过 .zip 压缩包的操作,都是专门指定配置文件:redis.windows.conf。
但本章节是通过安装包来的,系统服务是自动添加的,默认的配置文件则是:redis.windows-service.conf。
快捷键 Win + R ,输入 services.msc 打开服务列表找到 Redis,如下打开服务属性:
2.3.4 测试服务可用
由于在安装过程中,已自动添加了环境变量中的 Path 配置,则可以直接在 cmd 访问 redis-cli.exe。
# cd 进入执行文件所在路径
C:\WINDOWS\system32>cd /d C:\Program Files\Redis
C:\Program Files\Redis>cd ..
# 不必须在执行文件路径下运行
C:\Program Files>redis-cli
# ping 结果为 PONG 表示成功
127.0.0.1:6379> ping
PONG
127.0.0.1:6379> set second_key second_value
OK
127.0.0.1:6379> get second_key
"second_value"
127.0.0.1:6379>
三、Linux 下载、安装和简单测试
3.1 下载
Redis 全版本文件地址:Index of /releases/,在其后加上带版本号的包名即可,比如:http://download.redis.io/releases/redis-7.2.4.tar.gz。
Linux 可以直接通过命令来下载:
# -P 指定下载至目标文件夹
[root@localhost ~]# wget -P /home/user/downloads/ http://download.redis.io/releases/redis-7.2.4.tar.gz
# 进入目标文件夹
[root@localhost ~]# cd /home/user/downloads
[root@localhost downloads]# ls
redis-7.2.4.tar.gz
[root@localhost downloads]# mkdir /usr/local/redistest
[root@localhost downloads]# tar -zxvf redis-7.2.4.tar.gz -C /usr/local/redistest
[root@localhost downloads]# cd /usr/local/redistest/
[root@localhost redistest]# ls
redis-7.2.4
[root@localhost redistest]# cd redis-7.2.4
[root@localhost redis-7.2.4]#
由于 Redis 依赖于 gcc 环境,若没安装需通过如下命令安装:
yum install gcc
3.2 编译、安装
# 编译,大概需要五分钟左右
[root@localhost redis-7.2.4]# make
# 安装,默认可执行文件存放的路径为:/usr/local/bin
# PREFIX 参数配置自定义存放路径
[root@localhost redis-7.2.4]# make install
[root@localhost redis-7.2.4]# make PREFIX=/usr/local/redis install
# 进入可执行文件目录
[root@localhost redis-7.2.4]# cd /usr/local/redis/bin
[root@localhost bin]# ls
redis-benchmark redis-check-aof redis-check-rdb redis-cli redis-sentinel redis-server
文件名 | 功能 |
redis-server | 开启 Redis 服务 |
redis-cli | 打开 Redis 客户端 |
redis-benchmark | 性能测试 |
redis-check-aof | AOF 文件修复工具 |
redis-check-rdb | RDB 文件修复工具 |
redis-sentinel | Sentinel 服务器(2.8 以后),Redis 集群使用 |
3.3 开启、测试、关闭服务
可直接通过命令开启:./redis-server
。此方法是前台开启,会一直占用命令窗口。
为了方便测试,可以通过修改配置文件的方式,来实现通过守护进程开启服务。
# cd 进入 redis 解压后的目录
[root@localhost bin]# cd /usr/local/redistest/redis-7.2.4
# 编辑配置文件 redis.conf
[root@localhost redis-7.2.4]# vim redis.conf
# 在查看模式直接输入 /daemonize 回车进行【关键字搜索】,然后单击字母 i 或 insert 进行编辑
# 将配置:daemonize no
# 改为:daemonize yes
# 然后按键 Esc 退出编辑,在输入 :wq 回车,保存并退出
[root@localhost redis-7.2.4]# cd /usr/local/redis/bin
[root@localhost bin]# ./redis-server /usr/local/redistest/redis-7.2.4/redis.conf
[root@localhost bin]# ./redis-cli
127.0.0.1:6379> set first_key fitst_value
OK
127.0.0.1:6379> get first_key
"fitst_value"
127.0.0.1:6379>
# 运行 Redis 客户端
[root@localhost bin]# ./redis-cli
127.0.0.1:6379> ping
PONG
127.0.0.1:6379> shutdown
not connected>
# 通过客户端直接关闭 Redis 服务
[root@localhost bin]# ./redis-cli shutdown
[root@localhost bin]#
3.4 注册为系统服务并设置开机启动
# 先将配置文件放至 /etc 文件夹(etc文件夹:存放【系统程序或者一般工具】的管理和配置文件)
# 创建 redis 文件夹
mkdir /etc/redis
# 将 redis 配置文件复制到新创建的文件夹,并重命名
# 注意,配置文件中的保护模式配置 protected-mode 需改为 yes,不然只能本机连接
cp /usr/local/redistest/redis-7.2.4/redis.conf /etc/redis/6379.conf
# 然后,将 redis 初始化脚本复制到文件夹:/etc/init.d(用于存放管理服务启动和停止的脚本)
# 将 redis_init_script 复制并重命名为 redis
cp /usr/local/redistest/redis-7.2.4/utils/redis_init_script /etc/init.d/redis
# 编辑脚本文件
vim /etc/init.d/redis
如下图脚本内容编辑:(EXEC:服务端进程;CLIEXEC:客户端进程;额外加的 & 符号:手动启动服务时默认后台运行)(键盘输入字母 i,或单击 insert 键,进入编辑状态)
修改后,单击键 Esc 退出编辑状态,:wq 命令保存并退出,继续后续步骤。
# 赋予脚本执行权限
chmod +x /etc/init.d/redis
# 将 redis 加入到自启动列表
chkconfig --add redis
# 查看全部自动启动项
chkconfig --list
# [root@localhost init.d]# chkconfig --list
#
# Note: This output shows SysV services only and does not include native
# systemd services. SysV configuration data might be overridden by native
# systemd configuration.
#
# If you want to list systemd services use 'systemctl list-unit-files'.
# To see services enabled on particular target use
# 'systemctl list-dependencies [target]'.
#
# netconsole 0:off 1:off 2:off 3:off 4:off 5:off 6:off
# network 0:off 1:off 2:on 3:on 4:on 5:on 6:off
# redis 0:off 1:off 2:on 3:on 4:on 5:on 6:off
# 开启自启动
chkconfig redis on
# 关闭自启动
chkconfig redis off
手动开启和关闭服务:
# 开启服务,以下两个语句均可
service redis start
systemctl start redis
# [root@localhost init.d]# service redis start
# Starting Redis server...
# [root@localhost init.d]# ps -ef|grep redis
# root 1691 1 0 17:49 ? 00:00:00 /usr/local/redis/bin/redis-server 0.0.0.0:6379
# root 1698 1533 0 17:50 pts/1 00:00:00 grep --color=auto redis
# 关闭服务,以下两个语句均可
service redis stop
systemctl stop redis
# [root@localhost init.d]# service redis stop
# Stopping ...
# Redis stopped
# [root@localhost init.d]# ps -ef|grep redis
# root 1717 1533 0 18:00 pts/1 00:00:00 grep --color=auto redis
# [root@localhost init.d]#
注意:在添加成功后,立即通过语句查看服务列表是没有 redis.service 的,机器重启后才能查到。NGINX 复制 全屏
# 查看本机服务列表
systemctl list-units --type=service
# [root@localhost ~]# systemctl list-units --type=service
# UNIT LOAD ACTIVE SUB DESCRIPTION
# redis.service loaded active running LSB: Redis data structure server# 查看本机服务列表
systemctl list-units --type=service
# [root@localhost ~]# systemctl list-units --type=service
# UNIT LOAD ACTIVE SUB DESCRIPTION
# redis.service loaded active running LSB: Redis data structure server
另外,若想删除自启动并删除服务,需要同步删掉 /etc/init.d 中的脚本文件。
参考:Linux下Redis的安装、配置及开机自启动-阿里云开发者社区 Linux下Redis安装、配置、注册成服务,开机自启_redis 编译安装 如何注册全局-CSDN博客
参考:Linux下Redis的安装、配置及开机自启动-阿里云开发者社区 Linux下Redis安装、配置、注册成服务,开机自启_redis 编译安装 如何注册全局-CSDN博客
附:欢迎 WX 搜索“橙子家czzj”关注,第一时间收到博主最新文章。