Redis——部署
上一篇我们介绍了redis,这里我们讲一下部署
官网地址:http://redis.io/
下载地址:https://download.redis.io/releases/ 通过wget下载
wget https://download.redis.io/releases/redis-8.2.0.tar.gz
1、redis下载安装
[root@node1 ~]# wget https://download.redis.io/releases/redis-8.2.0.tar.gz
--2026-03-06 09:52:46-- https://download.redis.io/releases/redis-8.2.0.tar.gz
正在解析主机 download.redis.io (download.redis.io)... 104.18.26.34, 104.18.27.34, 2606:4700::6812:1b22, ...
正在连接 download.redis.io (download.redis.io)|104.18.26.34|:443... 已连接。
已发出 HTTP 请求,正在等待回应... 200 OK
长度:3897586 (3.7M) [application/octet-stream]
正在保存至: “redis-8.2.0.tar.gz”redis-8.2.0.tar.gz 100%[========================================================================>] 3.72M 1.67MB/s 用时 2.2s
2026-03-06 09:52:49 (1.67 MB/s) - 已保存 “redis-8.2.0.tar.gz” [3897586/3897586])
[root@node1 ~]# tar -xvf redis-8.2.0.tar.gz -C /opt/
[root@node1 opt]# cd /opt/redis-8.2.0/
[root@node1 opt]# make
[root@node1 redis-8.2.0]# make install PREFIX=/usr/local/redis
[root@node1 redis]# echo 'export PATH=/usr/local/redis/bin:$PATH' >> /etc/profile
[root@node1 redis]# source /etc/profile
[root@node1 redis]# redis-cli --version
redis-cli 8.2.0
[root@node1 redis]# redis-server --version
Redis server v=8.2.0 sha=00000000:0 malloc=jemalloc-5.3.0 bits=64 build=f452bfd4f886f252
2、redis启动
前台启动:redis-server,ctrl+c中断
[root@node1 redis]# redis-server
6823:C 06 Mar 2026 10:05:46.701 * oO0OoO0OoO0Oo Redis is starting oO0OoO0OoO0Oo
6823:C 06 Mar 2026 10:05:46.702 * Redis version=8.2.0, bits=64, commit=00000000, modified=0, pid=6823, just started
6823:C 06 Mar 2026 10:05:46.702 # Warning: no config file specified, using the default config. In order to specify a config file use redis-server /path/to/redis.conf
6823:M 06 Mar 2026 10:05:46.702 * Increased maximum number of open files to 10032 (it was originally set to 1024).
6823:M 06 Mar 2026 10:05:46.702 * monotonic clock: POSIX clock_gettime
_._
_.-``__ ''-._
_.-`` `. `_. ''-._ Redis Open Source
.-`` .-```. ```\/ _.,_ ''-._ 8.2.0 (00000000/0) 64 bit
( ' , .-` | `, ) Running in standalone mode
|`-._`-...-` __...-.``-._|'` _.-'| Port: 6379
| `-._ `._ / _.-' | PID: 6823
`-._ `-._ `-./ _.-' _.-'
|`-._`-._ `-.__.-' _.-'_.-'|
| `-._`-._ _.-'_.-' | https://redis.io
`-._ `-._`-.__.-'_.-' _.-'
|`-._`-._ `-.__.-' _.-'_.-'|
| `-._`-._ _.-'_.-' |
`-._ `-._`-.__.-'_.-' _.-'
`-._ `-.__.-' _.-'
`-._ _.-'
`-.__.-'6823:M 06 Mar 2026 10:05:46.703 * Server initialized
6823:M 06 Mar 2026 10:05:46.703 * Ready to accept connections tcp
后台启动:
拷贝redis.conf到安装的bin下,修改配置文件,把daemonize no改为yes,保存退出
[root@node1 redis]# cp /opt/redis-8.2.0/redis.conf /usr/local/redis/bin/
[root@node1 redis]# vi bin/redis.conf
daemonize yes
[root@node1 redis]# redis-server /usr/local/redis/bin/redis.conf
[root@node1 redis]# ss -anplt | grep redis
LISTEN 0 511 127.0.0.1:6379 0.0.0.0:* users:(("redis-server",pid=6850,fd=8))
LISTEN 0 511 [::1]:6379 [::]:* users:(("redis-server",pid=6850,fd=9))
关闭:
[root@node1 redis]# redis-cli shutdown
[root@node1 redis]# ss -anplt | grep redis
在实际生产环境中,建议使用正常关闭。禁止使用kill -9
因为redis作为缓存来使用的话,将数据存储到内存中,如果使用正常关闭,则会将内存数据持久化到本地之后,再关闭。
如果是强制关闭,则不会进行持久化操作,可能会造成部分数据的丢失。
3、redis连接
本地连接
[root@node1 redis]# redis-cli -h 127.0.0.1 -p 6379
127.0.0.1:6379>
远程连接
(1)修改bind:这bind意思是本地监听的网卡地址,不是设置允许连接的ip。通过bind绑定自己redis服务器的网卡ip,然后配合firewalld或iptables来限制
[root@node1 bin]# more redis.conf | grep '^bind'
bind 127.0.0.1 -::1默认绑定在127上,修改绑定到自身网卡ip
[root@node1 bin]# more redis.conf | grep '^bind'
bind 192.168.137.135
重启服务[root@node1 bin]# ss -anplt | grep redis
LISTEN 0 511 192.168.137.135:6379 0.0.0.0:* users:(("redis-server",pid=7073,fd=8))另一台测试连接
[root@node2 ~]# telnet 192.168.137.135 6379
Trying 192.168.137.135...
Connected to 192.168.137.135.
Escape character is '^]'.
^]
telnet> q
Connection closed.
[root@node2 ~]# redis-cli -h 192.168.137.135 -p 6379
192.168.137.135:6379>
(2)防火墙
设置允许规则
iptables -A INPUT -p tcp --dport 6379 -s 192.168.1.100 -j ACCEPT
iptables -A INPUT -p tcp --dport 6379 -j DROP
(3)protected-mode 保护模式
[root@node1 bin]# more redis.conf | grep protected-mode
protected-mode no当满足以下所有条件时,保护模式自动开启,只允许本地连接:
protected-mode yes没有设置
bind没有设置密码(
requirepass)如果你配置了
bind或设置了密码,保护模式会自动失效
4、redis工具
图形化工具:https://redisdesktop.com/download
github:https://github.com/uglide/RedisDesktopManager


5、redis库
Redis的“库”其实更准确地应该叫命名空间或逻辑数据库,它并不是传统关系型数据库中的“数据库”概念。
通过修改databases来修改库的数量
[root@node1 bin]# more redis.conf | grep '^databases'
databases 16
特点:
数量固定:默认16个(0-15),可在
redis.conf通过databases配置修改相互隔离:不同库的key是隔离的,但共享同一份内存和CPU资源
无独立权限:ACL可以控制用户访问哪些库
无独立持久化:所有库一起RDB/AOF,不能单独备份某个库
切换:
[root@node1 bin]# redis-cli -h 192.168.137.135
192.168.137.135:6379>
192.168.137.135:6379>
192.168.137.135:6379> select 10 #选择库
OK
192.168.137.135:6379[10]> dbsize #查看当前库key的数量
(integer) 0
192.168.137.135:6379[10]> move mykey 5 #移动key到另一个库,0失败,1成功
(integer) 0
192.168.137.135:6379[10]> flushdb #清空当前库
OK192.168.137.135:6379[10]> flushall #清空所有库
OK
192.168.137.135:6379[10]> info keyspace #查看所有库的key统计
# Keyspace
192.168.137.135:6379[10]>
注意事项:
1、所有库共享内存、CPU,一个库的慢查询会影响其
2、连接指定库需要密码认证
[root@node1 bin]# redis-cli -h 192.168.137.135 -p 6379 -a 密码 -n 10
3、无法单独备份库,rdb/aof只能全备份
6、redis操作命令
(1)赋值取值
set和get
192.168.137.135:6379> set test 123
OK
192.168.137.135:6379> get test
"123"
(2)取值并赋值
getset:原子性地完成两个操作 —— 先获取指定 key 的旧值,再给这个 key 设置新值
192.168.137.135:6379> getset test2 456
(nil)
192.168.137.135:6379> get test2
"456"192.168.137.135:6379> getset test2 789
"456"
192.168.137.135:6379> get test2
"789"
(3)一次赋值多个并取多个
mset和mget
192.168.137.135:6379> mset apple 10 banana 5 origin 8
OK
192.168.137.135:6379> mget apple banana origin
1) "10"
2) "5"
3) "8"
(4)删除
del:1成功 0失败
192.168.137.135:6379> del apple
(integer) 1
(5)数值递增
incr:当存储的字符串是整数时,Redis提供了一个实用的命令INCR,其作用是让当前键值递增,并返回递增后的值。
192.168.137.135:6379> incr a1
(integer) 1
192.168.137.135:6379> incr a1
(integer) 2
192.168.137.135:6379> incr a1
(integer) 3
192.168.137.135:6379> incr a1
(integer) 4
192.168.137.135:6379> incr a1
(integer) 5
incrby:增加指定的整数
192.168.137.135:6379> incrby a1 2
(integer) 7
192.168.137.135:6379> incrby a1 2
(integer) 9
192.168.137.135:6379> incrby a1 2
(integer) 11
192.168.137.135:6379> incrby a1 100
(integer) 111
decr:递减
192.168.137.135:6379> decr a1
(integer) 110
192.168.137.135:6379> decr a1
(integer) 109
192.168.137.135:6379> decr a1
(integer) 108
decrby:指定递减整数
192.168.137.135:6379> decrby a1 10
(integer) 98
192.168.137.135:6379> decrby a1 10
(integer) 88
192.168.137.135:6379> decrby a1 10
(integer) 78
(6)尾部追加
append
192.168.137.135:6379> set test5 redis
OK
192.168.137.135:6379> get test5
"redis"
192.168.137.135:6379> append test5 project
(integer) 12
192.168.137.135:6379> get test5
"redisproject"
192.168.137.135:6379> strlen test5
(integer) 12
7、redis持久化方案
Redis 的持久化机制是其核心功能之一,旨在将内存中的数据保存到硬盘上,以防止数据丢失,并在重启时恢复数据。
Redis 提供了两种主要的持久化方式:RDB 和 AOF。从 Redis 4.0 开始,还支持一种混合方式。
(1)RDB: redis database——快照模式
RDB 持久化会在指定的时间间隔内,将内存中的数据集快照(Snapshot)写入磁盘。它生成的是一个经过压缩的二进制文件,默认文件名是 dump.rdb
工作原理:
Redis 主进程会
fork一个子进程(bgsave命令)。子进程将内存中的数据写入一个临时的 RDB 文件。
写入完成后,用临时文件替换旧的 RDB 文件。
触发方式:
自动触发:根据
redis.conf配置文件中的save规则,如save 900 1(900 秒内至少 1 个键被修改)。[root@node1 bin]# more redis.conf | grep '^save'
save 900 1
save 300 10
save 60 10000手动触发:执行
SAVE命令(同步阻塞)或BGSAVE命令(异步后台执行)。192.168.137.135:6379> save
OK
192.168.137.135:6379> bgsave
Background saving started
同步执行 RDB 快照:save;Redis 主线程直接写入数据到 RDB 文件,期间会阻塞所有客户端请求(直到快照完成)。OK 表示快照已生成完毕。
异步执行 RDB 快照:bgsave;Redis fork 子进程来生成 RDB 文件,主线程不阻塞,依然可以处理请求。该输出表示子进程已启动,快照开始在后台执行。
优点:
文件紧凑:RDB 文件是压缩的二进制文件,非常适合用于备份、灾难恢复,以及在不同版本间迁移数据。
恢复速度快:恢复大数据集时,RDB 的速度通常比 AOF 快,因为它直接加载数据到内存即可。
性能影响小:父进程只需
fork子进程来完成后续的持久化工作,自身无需执行磁盘 I/O。
缺点:
可能丢失数据:如果 Redis 意外宕机,最后一次快照之后修改的数据会全部丢失。数据丢失的多少取决于备份间隔的设置。
时间消耗:
fork操作在数据集很大时可能会阻塞主进程几百毫秒甚至更久。如果数据集很大,频繁生成快照对 CPU 和磁盘 I/O 的消耗也比较可观。
(2)AOF: Append Only File——日志追加模式
AOF 持久化会将 Redis 执行的每一条写命令以 Redis 协议格式追加到 AOF 文件的末尾。当 Redis 重启时,会通过重新执行 AOF 文件中的所有命令来恢复数据集。
工作原理:
所有的写命令会被追加到 AOF 缓冲区。
根据配置的策略(
appendfsync),缓冲区的内容会被同步(fsync)到磁盘上的 AOF 文件。随着文件越来越大,Redis 会自动或手动执行 AOF 重写,以压缩文件体积(去除冗余命令,合并操作)。
触发方式:
配置文件(redis.conf) 本地磁盘的 redis.conf 文件 重启 Redis 后生效 永久生效(修改后保存) 生产环境核心配置(比如 AOF 开关、刷盘策略) 动态命令(config set) Redis 内存中 执行命令后立即生效 重启后失效 临时调整、测试配置、无需重启的场景
1、配置文件静态修改
1. 开启 AOF 持久化
[root@node1 bin]# more redis.conf | grep '^appendonly'
appendonly yes
[root@node1 bin]# more redis.conf | grep '^appendfilename'
appendfilename "appendonly.aof"
2. 配置 AOF 刷盘策略(核心:权衡性能与数据安全性)
appendfsync always:每次有新命令追加时,就执行一次fsync。最安全,但速度慢。
appendfsync everysec:每秒执行一次fsync。推荐配置,兼顾性能和数据安全,最多丢失 1 秒数据。
appendfsync no:由操作系统决定何时fsync。速度快,但不可控,Linux 默认通常是 30 秒。
3. AOF 文件重写(避免文件过大)
# 自动重写触发条件(满足其一即触发)
auto-aof-rewrite-percentage 100 # 当前 AOF 文件比上次重写后的文件大 100%(即翻倍) auto-aof-rewrite-min-size 64mb # AOF 文件最小达到 64MB 才会触发重写(避免小文件频繁重写)
# 重写期间是否暂停刷盘(默认 no,推荐保持)
no-appendfsync-on-rewrite no
4. AOF 损坏修复(容错配置)
如果 AOF 文件损坏,Redis 启动时会报错,可配置自动修复:
# 启动时检测 AOF 文件是否损坏,若损坏则自动修复(推荐 yes)
aof-load-truncated yes
# 开启 AOF 重写时的增量同步(Redis 4.0+ 推荐 yes,避免数据丢失)
aof-use-rdb-preamble yes
2、动态命令修改
[root@node1 bin]# redis-cli -h 192.168.137.135 config set appendonly yes
OK
[root@node1 bin]# redis-cli -h 192.168.137.135 config get appendonly
1) "appendonly"
2) "yes"
但是重启redis后,配置会恢复为配置文件中的值
3、动态+写入配置文件
[root@node1 bin]# redis-cli -h 192.168.137.135 config set appendonly yes
OK
[root@node1 bin]# redis-cli -h 192.168.137.135 config set appendfsync everysec
OK
[root@node1 bin]# redis-cli -h 192.168.137.135 config rewrite
OK
验证:重启后配置仍然生效[root@node1 bin]# redis-cli -h 192.168.137.135 config get appendonly
输出:yes
[root@node1 bin]# redis-cli -h 192.168.137.135 config get appendfsync
输出:everysec
8、redis密码
1、初始化Redis密码:
在配置文件中有个参数: requirepass 这个就是配置redis访问密码的参数;
比如 requirepass test123;
(Ps:需重启Redis才能生效)
redis的查询速度是非常快的,外部用户一秒内可以尝试多大150K个密码;所以密码要尽量长(对于DBA 没有必要必须记住密码);
2、不重启Redis设置密码:
在配置文件中配置requirepass的密码(当redis重启时密码依然有效)。
redis 127.0.0.1:6379> config set requirepass test123
查询密码:
redis 127.0.0.1:6379> config get requirepass
(error) ERR operation not permitted
密码验证:
redis 127.0.0.1:6379> auth test123
OK
再次查询:
redis 127.0.0.1:6379> config get requirepass
1) "requirepass"
2) "test123"
PS:如果配置文件中没添加密码 那么redis重启后,密码失效;
3、登陆有密码的Redis:
在登录的时候的时候输入密码:
redis-cli -p 6379 -a test123
更多推荐

所有评论(0)