Redis 简介与安装(Windows 和 Linux)【Redis系列一】

〇、前言

关于 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-aofAOF 文件修复工具
redis-check-rdbRDB 文件修复工具
redis-sentinelSentinel 服务器(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”关注,第一时间收到博主最新文章。     

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值