Redis安装配置

一、Redis 简介

Redis(Remote Dictionary Server),远程词典服务器,是一个基于内存的键值型 NoSQL 数据库。

特征

  • 键值型,value 支持多种不同数据结构
  • 单线程,每个命令具备原子性。意思是要么成功执行要么失败完全不执行。
  • 低延迟,速度快(基于内存、IO多路复用、良好的编码)
  • 支持数据持久化
  • 支持主从集群、分片集群

二、什么是NoSQL

NoSQL,指的是非关系型的数据库。NoSQL有时也称作Not Only SQL的缩写,是对不同于传统的关系型数据库的数据库管理系统的统称。

  • 没有声明性查询语言
  • 没有预定义的模式
  • 键 - 值对存储,列存储,文档存储,图形数据库
  • 最终一致性,而非ACID属性
  • 非结构化和不可预知的数据
  • CAP定理
  • 高性能,高可用性和可伸缩性

三、Redis 服务安装

3.1 下载

Redis 使用标准的做法进行版本管理: 主版本号.副版本号.补丁号。 偶数 副版本号 表示一个 稳定的 发布,像 1.2, 2.0, 2.2, 2.4, 2.6, 2.8。奇数副版本号表示 不稳定的 发布,例如 2.9.x 发布是一个不稳定版本,下一个稳定版本将会是Redis 3.0。

Redis 最新的稳定版本可以在 https://download.redis.io/redis-stable.tar.gz 下载 。 相应的 SHA256 校验和 https://download.redis.io/redis-stable.tar.gz.SHA256SUM。 最新稳定版本的源码可以在 这里获得 , 使用 src/version.h 文件以便可以自动获取版本信息。更多:Redis下载和安装

Linux版(官网):https://redis.io/

在线下载:

1
wget http://download.redis.io/releases/redis-x.x.x.tar.gz

Windows版:https://github.com/tporadowski/redis/releases(官方并没有提供win版,win版是微软编译的)

3.2 单机安装

3.2.1 安装 Redis 依赖

Redis 是基于 C 语言编写的,因此首先需要安装 Redis 所需要的 gcc 依赖:

1
yum install -y gcc tcl

3.2.2 上传安装包并解压

3.2.2.1 上传

把安装包上传到 Linux 服务器任意目录(在 Linux 下载可跳过此步),例如,我放到了usr/local/src目录。

3.2.2.2 解压缩

1
tar -xzf redis-7.0.9.tar.gz

3.2.2.3 安装

进入到redis目录,安装:

1
make && make install

默认的安装路径是在/usr/local/bin目录下:

redis默认安装目录

该目录已经默认配置到环境变量,因此可以在任意目录下运行命令。其中:

  • redis-cli:是 redis 提供的命令行客户端
  • redis-server:是 redis 的服务端启动脚本
  • redis-sentinel:是 redis 的哨兵启动脚本

3.3 Redis 启动

redis 的启动方式有很多种,如:

  • 默认启动
  • 指定配置启动
  • 开机自启

3.3.1 默认启动(不推荐)

使用 redis-server 命令即可启动 Redis:

redis-server命令启动

这种启动属于前台启动,会阻塞整个会话窗口,窗口关闭 Redis 会停止,不推荐使用。

3.3.2 指定配置启动

后台启动必须修改 Redis 配置文件,位于解压后的目录内:/usr/local/src/redis-6.2.6/redis.conf

先将配置文件进行备份:

1
cp redis.conf redis.conf.bck

然后修改redis.conf文件中的配置:

1
2
# 守护进程,修改为 yes 后即可后台运行
daemonize yes

启动 Redis:

1
2
3
4
# 进入 redis 安装目录
cd /usr/local/src/redis=6.2.6
# 启动
redis-server redis.conf

停止 Redis:

1
2
3
4
# 利用redis-cli执行shutdown命令,停止redis服务
redis-cli shutdown
# 如果配置了密码,需要加上-u参数指定密码
redis-cli -u 123456 shutdown

3.3.3 开机自启

  1. 新建系统服务文件:
1
vi /etc/systemd/system/redis.service

关于 /etc/systemd/system 目录更多请参考:关于system目录

新增内容:

注意ExecStart的内容要修改为自己服务器的实际路径

1
2
3
4
5
6
7
8
9
10
11
[Unit]
Description=redis-server
After=network.target

[Service]
Type=forking
ExecStart=/usr/local/bin/redis-server /usr/local/src/redis-6.2.6/redis.conf
PrivateTmp=true

[Install]
WantedBy=multi-user.target
  1. 重载系统服务:
1
systemctl daemon-reload
  1. 现在就可以用下面这组命令来操作 redis 了:
1
2
3
4
5
6
7
8
# 启动
systemctl start redis
# 停止
systemctl stop redis
# 重启
systemctl restart redis
# 查看状态
systemctl status redis
  1. 执行下面的命令,让 redis 开机自启:
1
systemctl enable redis

四、Redis 配置文件

4.1 查看配置项

4.2 更改配置项

4.3 更改配置文件

Redis 某些配置信息无法直接通过命令修改,此时就需要修改配置文件。

比如设置 Redis 允许远程连接的功能:

1
2
3
4
5
6
7
# 注释掉本地IP地址,绑定要访问的外部IP
# bind 127.0.0.1 ::1
bind 192.168.75.129 # listens on specific IPv4 addresses
# 关闭保护模式(把yes改为no)
protected-mode no
# Linux重启
sudo /etc/init.d/redis-server restart

4.4 常用配置

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
# 监听的地址,默认是 127.0.0.1,会导致只能在本地访问。修改为 0.0.0.0 则可以在任意IP访问
# 注意:生产环境不要设置为 0.0.0.0
# bind 127.0.0.1 -::1
bind 0.0.0.0
# 守护进程,修改为 yes 后即可后台运行
daemonize yes
# 密码,设置后访问 Redis 必须输入密码
requirepass 123456

# 监听的端口
port 6379
# 工作目录,默认是当前目录,即运行 redis-server 时的命令,日志、持久化等文件会保存在这个目录
dir .
# 数据库数量,设置为1,代表只使用1个库,默认有16个库,编号0~15
databases 1
# 设置 redis 能够使用的最大内存
maxmemory 512mb
# 日志文件,默认为空,不记录日志,可以指定日志文件名
logfile "redis.log"

vim 常用指令:

/pattern:向后查找字符串pattern

?pattern:向前搜索字符串pattern

n: 下一个匹配(如果是/搜索,则是向下的下一个,?搜索则是向上的下一个)

N:上一个匹配(同上)

u:撤销

4.5 其它配置说明

配置项参数说明
daemonizeno/yes默认为 no,表示 Redis 不是以守护进程的方式运行,通过修改为 yes 启用守护进程。
pidfile文件路径当 Redis 以守护进程方式运行时,会把进程 pid 写入自定义的文件中。
port6379指定 Redis 监听端口,默认端口为 6379。
bind127.0.0.1绑定的主机地址。
timeout0客户端闲置多长秒后关闭连接,若指定为 0 ,表示不启用该功能。
loglevelnotice指定日志记录级别,支持四个级别:debug、verbose、notice、warning,默认为 notice。
logfilestdout日志记录方式,默认为标准输出。
databases16设置数据库的数量(0-15个)共16个,Redis 默认选择的是 0 库,可以使用 SELECT 命令来选择使用哪个数据库储存数据。
save[seconds][changes]可以同时配置三种模式:save 900 1save 300 10save 60 10000表示在规定的时间内,执行了规定次数的写入或修改操作,Redis 就会将数据同步到指定的磁盘文件中。比如 900s 内做了一次更改,Redis 就会自动执行数据同步。
rdbcompressionyes/no当数据存储至本地数据库时是否要压缩数据,默认为 yes。
dbfilenamedump.rdb指定本地存储数据库的文件名,默认为 dump.rdb。
dir./指定本地数据库存放目录。
slaveof主从复制配置选项当本机为 slave 服务时,设置 master 服务的 IP 地址及端口,在 Redis 启动时,它会自动与 master 主机进行数据同步。
requirepassfoobared 默认关闭密码配置项,默认关闭,用于设置 Redis 连接密码。如果配置了连接密码,客户端连接 Redis 时需要通过 密码认证。
maxmemory最大内存限制配置项指定 Redis 最大内存限制,Redis 在启动时会把数据加载到内存中,达到最大内存后,Redis 会尝试清除已到期或即将到期的 Key,当此方法处理 后,若仍然到达最大内存设置,将无法再进行写入操作,但可以进行读取操作。
appendfilenameappendonly.aof指定 AOF 持久化时保存数据的文件名,默认为 appendonly.aof。
glueoutputbufyes设置向客户端应答时,是否把较小的包合并为一个包发送,默认开启状态。

五、常见问题

5.1 无法连接到远程redis服务器

①:检查是否ping通(略)

②:查看端口是否打开

参考:开放端口

一般到第②步就成功了,如果不行就继续往下

③:关闭防火墙

检查防火墙状态(是否 dead 状态)

1
2
systemctl status iptables
systemctl status firewalld

关闭防火墙两种方式:

iptables 形式防火墙关闭

1
2
service iptables stop
chkconfig iptables off # 永久关闭

firewalld 形式防火墙关闭

1
2
systemctl stop firewalld && systemctl disable firewalld 
chkconfig firewalld off # 永久关闭

④:修改**redis.conf**配置文件

(参考网上,在第③步还搞不定的情况下)

5.2 因虚拟机IP地址改变无法启动

IP 变化的原因

  • DHCP 分配 IP 地址后,有一个租用时长,默认两小时,到了租用时长,ip 就会过期,主机会重新申请 ip 地址,这样地址就变了。

解决方法一:修改 ip 租用时长

编辑 - 虚拟网络编辑器 - 更改设置 - 选择带NAT模式的网络(比如我的VMnet8)- DHCP设置

把默认和最长租用时间调大。

DHCP设置

解决方法二:固定 ip 地址

  1. VMware查看虚拟机网络配置

编辑 - 虚拟网络编辑器 - 更改设置 - 选择带NAT模式的网络(比如我的VMnet8)

虚拟网络编辑器

查看网关 IP:

网关IP

查看 IP 范围:

IP范围

获取到 IP 地址范围、网关地址、子网掩码后,就可以到虚拟机系统操作了。

  1. 修改网卡配置

启动虚拟机系统(本例使用 CentOS7 系统),在终端输入:

1
vim /etc/sysconfig/network-scripts/ifcfg-ens33

注:ens33 为网卡名称,ifconfig命令可以查看。

工作模式设置为"static"(即将 ip 分配协议改为静态分配),再依次添加规定范围内的固定 ip 地址、子网掩码、网关地址配置:

1
2
3
4
5
BOOTPROTO="static"
IPADDR=192.168.75.129
GATEWAY=192.168.75.2
NETMASK=255.255.255.0
DNS1=8.8.8.8

修改后如下图:

网卡配置

  1. 重启网卡
1
systemctl restart network

Redis安装配置
https://blog-21n.pages.dev/2023/03/08/Redis安装配置/
作者
Neo
发布于
2023年3月8日
许可协议