Redis单节点安装
发表于:2021-08-23 | 分类: Redis

1.1.1 安装Redis依赖

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

gcc是C语言的编译工具, 类似于我们要运行java应用首先得安装JDK一样

# 安装gcc
yum install -y gcc tcl

# 查看gcc的版本
gcc -v
# 只要gcc版本大于等于 gcc version 4.8.5 20150623 这个版本即可

1.1.2 Redis版本号说明

Redis版本号第二位如果是奇数, 则是非稳定版本, 如 2.7,2.9

Redis版本号第二位如果是偶数, 则是稳定版本, 如 2.6,2.8

1.1.3 wget下载安装包

首先去官网下载对应的版本

所有可获得的版本列表, Ctrl+F 搜索要安装的版本

https://download.redis.io/releases/

本教程使用的Redis版本为7.0.0

然后复制对应版本号的链接, 比如我要下载 7.0.0 版本的, 直接复制对应的链接,使用 wget命令下载

首先先切换到 /opt目录 (因为Linux里面opt目录用来存放软件安装包)

cd /opt

然后执行wget命令下载对应的软件包

wget https://download.redis.io/releases/redis-7.0.0.tar.gz

1.1.4 解压缩

tar -zxvf redis-7.0.0.tar.gz

解压完成之后,将解压后的目录剪切放到 /usr/local/redis目录下 (因为Linux里面/usr/local/目录用来存放对应的软件)

mv /opt/redis-7.0.0 /usr/local/
```    
cd进入 cd /usr/local/redis-7.0.0/ 目录
```shell
cd /usr/local/redis-7.0.0/

1.1.5 编译安装

make && make install

默认安装完毕之后,会将Redis的相关命令(bash脚本)安装到 /usr/local/bin/目录下

该目录已经默认配置到环境变量,所以不用我们再去配置环境变量就可以在任意目录下运行以下这些命令了

其中:
redis-benchmark: 性能测试工具,服务启动后运行该命令,可以测试自己电脑的性能
redis-check-aof: 修复有问题的AOF文件
redis-check-rdb: 修复有问题的RDB文件
redis-cli(重要): 连接redis的命令行客户端
redis-sentinel(重要): 是redis的哨兵启动脚本
redis-server(重要): redis服务的启动脚本

1.1.6 查看当前安装的Redis版本号, 验证是否安装成功

redis-server -v

1.1.7 启动Redis

1.1.7.1 指定配置文件启动

如果要让Redis以后台方式启动,则必须修改Redis配置文件

就在我们之前解压的redis安装包下(/usr/local/redis-7.0.0/),名字叫redis.conf:

我们先将这个配置文件备份一份:(养好良好的习惯,修改配置文件之前都需要先备份)

cd /usr/local/redis-7.0.0/
cp redis.conf redis.conf.bak

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

# 保护模式,默认为yes 只允许安装Redis服务的本机连接,其他机器无法连接。
# 线上Redis服务,为了安全,我们建议将protected-mode设置为yes (所以该参数值不建议修改)
# 该值为yes的情况下,为了我们的应用服务(比如微服务)可以正常访问Redis,我们需要额外设置Redis的bind参数或者密码参数requirepass
protected-mode yes

# 配置文件的第87行左右 
# 允许哪些来源的IP地址可以访问Redis,默认是127.0.0.1即只允许安装Redis服务的本机能够访问
# 修改为0.0.0.0则可以使用任意IP访问Redis, 注意:生产环境不要设置为0.0.0.0
bind 0.0.0.0

# 配置文件的第1036行左右
# 密码,设置后访问Redis必须输入密码
requirepass redis_password

# 守护进程,默认为no,需要修改为yes(让其可以后台运行)
daemonize yes

# 监听的端口(这个一般不用修改)
port 6379

# 数据库数量,设置为1,代表只使用1个库,默认有16个库,编号0~15 (这个一般不用修改)
databases 1

# 设置redis能够使用的最大内存,超过了这个就会按照配置的内存淘汰策略maxmemory-policy对内存中的数据进行淘汰
maxmemory 512mb

# 内存淘汰策略,默认是 noeviction 即不会淘汰任何数据,内存不足时再次写入会直接报错
# maxmemory-policy noeviction


# 设置样本数量,LRU算法和最小TTL算法都并非是精确的算法,而是估算值,所以你可以设置样本的大小
# Redis 的 LRU 是取出配置的数目的key,然后从中选择一个最近最不经常使用的 key 进行淘汰,默认是每次选取5个key,如下
# maxmemory-samples 5


# 设置redis允许的最大连接数, 默认为1万,即允许同时1万个客户端连接Redis
# 如果达到了此限制,redis则会拒绝新的连接请求,并且向这些连接请求方发出“max number of clients reached”
# maxclients 10000

# 工作目录,默认是当前目录,也就是在哪个目录下运行redis-server,日志、持久化等文件就会保存到哪个目录下
# 建议修改,这里修改为了如下路径,注意,需要先创建该目录
dir /usr/local/redis-7.0.0/redis-working-directory/

# 日志文件,默认为空,不记录日志,可以指定日志文件名(建议修改,注意有双引号)
logfile "redis.log"

# 开启Redis的AOF持久化
appendonly yes

# 指定AOF日志的文件名,默认为appendonly.aof
# 建议修改成 appendonly端口号.aof 方便知道是哪台
# 如果一台服务器上安装了多个Redis服务, 比如使用 Docker在一台机器上创建了多个Redis用于搭建Redis主从+哨兵集群
# 那么我们可能会修改Redis的配置文件给每个Redis实例指定不同的端口号(以便能够在一台机器上同时启动多个Redis实例)
appendfilename appendonly6379.aof

# 指定触发将AOF缓存刷新到AOF磁盘文件的条件,共有3个可选值: 
# no:由操作系统接管什么时候刷新到磁盘(快) 
# always:每次更新操作后都立即刷新到磁盘(慢,安全) 
# everysec:每秒刷新一次(折衷,默认值)
appendfsync everysec

# 开启Redis的RDB持久化 
# (默认持久化文件为dump.rdb (即RDB二进制快照文件名称),会存放到上述dir所制定的目录下)

# rdbchecksum默认为yes 在存储快照后,还可以让redis使用CRC64算法来进行数据校验,但是这样做会增加大约
# 10%的性能消耗,如果希望获取到最大的性能提升,可以关闭此功能
rdbchecksum yes

# rdbcompression默认为yes 对于存储到磁盘中的快照,可以设置是否进行压缩存储。
# 如果是的话,redis会采用LZF算法进行压缩。如果你不想消耗CPU来进行压缩的话,可以设置为关闭此功能
rdbcompression yes

# dump文件名称,建议修改成 dump端口号.rdb 方便知道是哪台
# 如果一台服务器上安装了多个Redis服务, 比如使用 Docker在一台机器上创建了多个Redis用于搭建Redis主从+哨兵集群
# 那么我们可能会修改Redis的配置文件给每个Redis实例指定不同的端口号(以便能够在一台机器上同时启动多个Redis实例)
dbfilename dump6379.rdb

# 配置文件的第414行左右, 可以通过配置 save <seconds> <changes> 来设置自动触发生成RDB的时机
# save 10 2     10秒内被修改了2次就会触发bgsave
# save 10 2 20 5    10秒内被修改了2次 或者 20秒内被修改了5次 就会触发bgsave

# 生产环境的时候,在配置文件的第1072行左右 添加上如下配置, 禁用 CONFIG,KEYS,FLUSHDB,FLUSHALL 命令
# rename-command CONFIG ""
# rename-command KEYS ""
# rename-command FLUSHALL ""
# rename-command FLUSHDB ""


# 设置当本机为slav服务时,设置master服务的IP地址及端口,在Redis启动时,它会自动从master进行数据同步
# slaveof <masterip> <masterport>

# 当master服务设置了密码保护时,slav服务连接master的密码
# masterauth <master-password>


# 配置文件的第42行左右,指定包含其它的配置文件,可以在同一主机上多个Redis实例之间使用同一份配置文件,而同时各个实例又拥有自己的特定配置文件
# 通过配置这个参数,在主从复制的架构中,可以将主从相同的配置抽取到一个配置文件中,然后将不同的配置保留到各自的配置文件中
# include /path/to/local.conf

创建Redis的工作目录

cd /usr/local/redis-7.0.0/
mkdir redis-working-directory

启动Redis

# 使用指定的配置文件启动Redis
redis-server /usr/local/redis-7.0.0/redis.conf

注意: 以后只要修改了Redis配置文件,都必须执行上述命令↑重启Redis才能使配置文件生效

验证Redis是否后台启动成功

ps -ef | grep redis

使用客户端连接Redis

# -h 指定Redis所在服务器IP,-p指定连接的端口 --raw可以让控制台展示存入的中文key和value
[root@VM-4-5-centos redis-7.0.0]# redis-cli -h 127.0.0.1 -p 6379 --raw

# 输入AUTH 后输入密码连接上Redis
127.0.0.1:6379> AUTH redis_password
OK

# 输入ping 会返回PONG,代表连接成功
127.0.0.1:6379> ping
PONG
127.0.0.1:6379>

退出客户端连接

quit

停止Redis服务(不建议直接kill进程的方式)

# 先使用客户端连接上Redis, 然后执行shutdown命令即可
[root@VM-4-5-centos redis-7.0.0]# redis-cli -h 127.0.0.1 -p 6379 --raw
127.0.0.1:6379> AUTH redis_password
OK
127.0.0.1:6379> ping
PONG
127.0.0.1:6379> shutdown
not connected> quit
[root@VM-4-5-centos redis-7.0.0]#

1.1.7.2 设置Redis开机自启

首先,先停止Redis服务
参见: 1.1.7.1章节 停止Redis服务

然后,新建一个系统服务文件

vim /etc/systemd/system/redis.service

内容如下:

[Unit]
Description=redis-server
After=network.target

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

[Install]
WantedBy=multi-user.target

然后重新加载系统服务

systemctl daemon-reload

然后,我们就可以用下面这组命令来启停redis了

# 启动
systemctl start redis
# 停止
systemctl stop redis
# 重启
systemctl restart redis
# 查看状态
systemctl status redis

最后,执行下面的命令,让redis开机自启

systemctl enable redis

1.1.7.3 卸载Redis

第1步: 停止Redis服务
参见: 1.1.7.1章节 停止Redis服务

第2步: 删除/usr/local/redis-7.0.0目录

rm -rf /usr/local/redis-7.0.0

第3步: 删除/usr/local/bin/目录下所有redis-xx文件即可

rm -rf /usr/local/bin/redis-*

1.1.8 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 redis-password: 指定redis的访问密码

其中的commonds就是Redis的操作命令,例如:

# 与redis服务端做心跳测试,服务端正常会返回PONG
ping

1.1.9 IDEA中连接Redis

上一篇:
JVM & GC
下一篇:
NIO