redis重启命令(Redis重启命令)

创业分享 2024-07-24 09:51:22

redis启动,停止

1.直接启动

redis重启命令(Redis重启命令)redis重启命令(Redis重启命令)


redis重启命令(Redis重启命令)


进入redis根目录,执行命令:

#加上‘&’号使redis以后台程序方式运行

./redis-server &

2.通过指定配置文件启动

可以为redis服务启动指定配置文件,例如配置为/etc/redis/6379.conf

进入redis根目录,输入命令:

./redis-server /etc/redis/6379.conf

#如果更改了端口,使用`redis-cli`客户端连接时,也需要指定端口,例如:

redis-cli -p 6380

后台方式启动

修改redis.conf,把daemonize no修改成daemonize yes

停止:redis-cli shutdown

查找进程号

ps -ef | grep redis

杀进程

kill -6 pid

redis快照问题错误信息如下:

MISCONF Redis is configured to se RDB snapshots, but is currently not able to persist on disk. Commands that may modify the data set are disabled. Please check Redis logs for details about the error.

排查与解决步骤:

进入redis使用命令查看,会发现一次快照失败的信息

rdb_last_bgse_status:err

处理方法:

1.进入redis临时关闭配置(如果需要,要再redis.conf上写上该配置,不然下次重启redis配置会失效)

config set stop-writes-on-bgse-error no

Redis持久化的几种方式——RDB深入解析

点击上方“Ja中文社群”,选择“设为星标”

终身学习者,以编程为乐!

Redis 的读写都是在内存中,所以它的性能较高,但在内存中的数据会随着的重启而丢失,为了保证数据不丢失,我们需要将内存中的数据存储到磁盘,以便 Redis 重启时能够从磁盘中恢复原有的数据,而整个过程就叫做 Redis 持久化。 Redis 持久化也是 Redis 和 Memcached 的主要区别之一,因为 Memcached 不具备持久化功能。

1.持久化的几种方式

Redis 持久化拥有以下三种方式:

快照方式(RDB, Redis DataBase)将某一个时刻的内存数据,以二进制的方式写入磁盘;

文件追加方式(AOF, Append Only File),记录所有的作命令,并以文本的形式追加到文件中;

混合持久化方式,Redis 4.0 之后新增的方式,混合持久化是结合了 RDB 和 AOF 的优点,在写入的时候,先把当前的数据以 RDB 的形式写入文件的开头,再将后续的作命令以 AOF 的格式存入文件,这样既能保证 Redis 重启时的速度,又能简单数据丢失的风险。

因为每种持久化方案,都有特定的使用场景,让我们先从 RDB 持久化说起吧。

2.RDB

RDB(Redis DataBase)是将某一个时刻的内存快照(Snapshot),以二进制的方式写入磁盘的过程。

3.持久化触发

RDB 的持久化触发方式有两类:一类是手动触发,另一类是自动触发。

1)手动触发

手动触发持久化的作有两个:se 和 bgse ,它们主要区别体现在:是否阻塞 Redis 主线程的执行。

① se 命令

在客户端中执行 se 命令,就会触发 Redis 的持久化,但同时也是使 Redis 处于阻塞状态,直到 RDB 持久化完成,才会响应其他客户端发来的命令,所以在生产环境一定要慎用。

se 命令使用如下: 从可以看出,当执行完 se 命令之后,持久化文件 dump.rdb 的修改时间就变了,这就表示 se 成功的触发了 RDB 持久化。se 命令执行流程,如下图所示:

② bgse 命令

bgse(background se)既后台保存的意思, 它和 se 命令的区别就是 bgse 会 fork() 一个子进程来执行持久化,整个过程中只有在 fork() 子进程时有短暂的阻塞,当子进程被创建之后,Redis 的主进程就可以响应其他客户端的请求了,相对于整个流程都阻塞的 se 命令来说,显然 bgse 命令更适合我们使用。bgse 命令使用,如下图所示: bgse 执行流程,如下图所示:

2)自动触发

说完了 RDB 的手动触发方式,下面来看如何自动触发 RDB 持久化?RDB 自动持久化主要来源于以下几种情况。

① se m n

se m n 是指在 m 秒内,如果有 n 个键发生改变,则自动触发持久化。参数 m 和 n 可以在 Redis 的配置文件中找到,例如, se601 则表明在 60 秒内,至少有一个键发生改变,就会触发 RDB 持久化。自动触发持久化,本质是 Redis 通过判断,如果满足设置的触发条件,自动执行一次 bgse 命令。注意:当设置多个 se m n 命令时,满足任意一个条件都会触发持久化。例如,我们设置了以下两个 se m n 命令:

se 60 10

se 600 1

当 60s 内如果有 10 次 Redis 键值发生改变,就会触发持久化;如果 60s 内 Redis 的键值改变次数少于 10 次,那么 Redis 就会判断 600s 内,Redis 的键值是否至少被修改了一次,如果满足则会触发持久化。

② flushall

flushall 命令用于清空 Redis 数据库,在生产环境下一定慎用,当 Redis 执行了 flushall 命令之后,则会触发自动持久化,把 RDB 文件清空。执行结果如下图所示: ③ 主从同步触发

在 Redis 主从中,当从节点执行全量作时,主节点会执行 bgse 命令,并将 RDB 文件发送给从节点,该过程会自动触发 Redis 持久化。

4.配置说明

合理的设置 RDB 的配置,可以保障 Redis 高效且稳定的运行,下面一起来看 RDB 的配置项都有哪些?

RDB 配置参数可以在 Redis 的配置文件中找见,具体内容如下:

# RDB 保存的条件

se

9001

se

30010

se

6010000

# bgse 失败之后,是否停止持久化数据到磁盘,yes 表示停止持久化,no 表示忽略错误继续写文件。

stop-writes-on-bgse-error yes

# RDB 文件压缩

rdbcompression yes

# 写入文件和读取文件时是否开启 RDB 文件检查,检查是否有无损坏,如果在启动是检查发现损坏,则停止启动。

rdbchecksum yes

# RDB 文件名

dbfilename

dump

.rdb

# RDB 文件目录

dir ./

其中比较重要的参数如下列表:

① se 参数

它是用来配置触发 RDB 持久化条件的参数,满足保存条件时将会把数据持久化到硬盘。默认配置说明如下:

se 900 1:表示 900 秒内如果至少有 1 个 key 值变化,则把数据持久化到硬盘;

se 300 10:表示 300 秒内如果至少有 10 个 key 值变化,则把数据持久化到硬盘;

se 60 10000:表示 60 秒内如果至少有 10000 个 key 值变化,则把数据持久化到硬盘。

② rdbcompression 参数

它的默认值是 yes 表示开启 RDB 文件压缩,Redis 会采用 LZF 算法进行压缩。如果不想消耗 CPU 性能来进行文件压缩的话,可以设置为关闭此功能,这样的缺点是需要更多的磁盘空间来保存文件。

③ rdbchecksum 参数

它的默认值为 yes 表示写入文件和读取文件时是否开启 RDB 文件检查,检查是否有无损坏,如果在启动是检查发现损坏,则停止启动。

5.配置查询

Redis 中可以使用命令查询当前配置参数。查询命令的格式为:configgetxxx ,例如,想要获取 RDB 文件的存储名称设置,可以使用 configgetdbfilename ,执行效果如下图所示: 查询 RDB 的文件目录,可使用命令 configgetdir ,执行效果如下图所示:

6.配置设置

设置 RDB 的配置,可以通过以下两种方式:

手动修改 Redis 配置文件;

使用命令行设置,例如,使用 configsetdir"/usr/data" 就是用于修改 RDB 的存储目录。

注意:手动修改 Redis 配置文件的方式是全局生效的,即重启 Redis 设置参数也不会丢失,而使用命令修改的方式,在 Redis 重启之后就会丢失。但手动修改 Redis 配置文件,想要立即生效需要重启 Redis ,而命令的方式则不需要重启 Redis 。

小贴士:Redis 的配置文件位于 Redis 安装目录的根路径下,默认名称为 redis.conf。

7.RDB 文件恢复

当 Redis 启动时,如果 Redis 根目录存在 RDB 文件 dump.rdb,Redis 就会自动加载 RDB 文件恢复持久化数据。如果根目录没有 dump.rdb 文件,请先将 dump.rdb 文件移动到 Redis 的根目录。

验证 RDB 文件是否被加载

Redis 在启动时有日志信息,会显示是否加载了 RDB 文件,我们执行 Redis 启动命令:src/redis-server redis.conf ,如下图所示: 从日志上可以看出, Redis 服务在启动时已经正常加载了 RDB 文件。

小贴士:Redis 在载入 RDB 文件期间,会一直处于阻塞状态,直到载入工作完成为止。

8.RDB 优缺点

1)RDB 优点

RDB 的内容为二进制的数据,占用内存更小,更紧凑,更适合做为备份文件;

RDB 对灾难恢复非常有用,它是一个紧凑的文件,可以更快的传输到远程进行 Redis 服务恢复;

RDB 可以更大程度的提高 Redis 的运行速度,因为每次持久化时 Redis 主进程都会 fork() 一个子进程,进行数据持久化到磁盘,Redis 主进程并不会执行磁盘 I/O 等作;

与 AOF 格式的文件相比,RDB 文件可以更快的重启。

2)RDB 缺点

因为 RDB 只能保存某个时间间隔的数据,如果中途 Redis 服务被意外终止了,则会丢失一段时间内的 Redis 数据;

RDB 需要经常 fork() 才能使用子进程将其持久化在磁盘上。如果数据集很大,fork() 可能很耗时,并且如果数据集很大且 CPU 性能不佳,则可能导致 Redis 停止为客户端服务几毫秒甚至一秒钟。

9.禁用持久化

禁用持久化可以提高 Redis 的执行效率,如果对数据丢失不敏感的情况下,可以在连接客户端的情况下,执行 configsetse"" 命令即可禁用 Redis 的持久化,如下图所示: 10.小结

通过本文我们可以得知,RDB 持久化分为手动触发和自动触发两种方式,它的优点是存储文件小,Redis 启动时恢复数据比较快,缺点是有丢失数据的风险。RDB 文件的恢复也很简单,只需要把 RDB 文件放到 Redis 的根目录,在 Redis 启动时就会自动加载并恢复数据。

11.思考题

如果 Redis CPU 占用过高,可能是什么原因导致的?

欢迎各位读者在评论区,写下自己的。

【END】

关注下方二维码,更多精彩内容 老王著

转发更佳

稀罕作者

Redis持久化的几种方式——RDB深入解析

标签:创建读取文件选择手动err注意验证备份文件编程

Redis持久化的几种方式——深入解析RDB

Redis 持久化也是 Redis?和 Memcached 的主要区别之一,因为 Memcached?是不具备持久化功能的。

1.持久化的几种方式

Redis 持久化拥有以下三种方式:

快照方式(RDB, Redis DataBase)将某一个时刻的内存数据,以二进制的方式写入磁盘;

文件追加方式(AOF, Append Only File),记录所有的作命令,并以文本的形式追加到文件中;

混合持久化方式,Redis 4.0 之后新增的方式,混合持久化是结合了 RDB 和 AOF 的优点,在写入的时候,先把当前的数据以 RDB 的形式写入文件的开头,再将后续的作命令以 AOF 的格式存入文件,这样既能保证?Redis?重启时的速度,又能简单数据丢失的风险。

因为每种持久化方案,都有特定的使用场景,让我们先从 RDB?持久化说起吧。

2.RDB

RDB(Redis DataBase)是将某一个时刻的内存快照(Snapshot),以二进制的方式写入磁盘的过程。

3.持久化触发

RDB?的持久化触发方式有两类:一类是手动触发,另一类是自动触发。

1)手动触发

手动触发持久化的作有两个: se?和 bgse,它们主要区别体现在:是否阻塞?Redis?主线程的执行。

① se?命令

在客户端中执行 se?命令,就会触发 Redis 的持久化,但同时也是使 Redis 处于阻塞状态,直到 RDB?持久化完成,才会响应其他客户端发来的命令,所以在生产环境一定要慎用。

se?命令使用如下:

从可以看出,当执行完?se?命令之后,持久化文件 dump.rdb?的修改时间就变了,这就表示 se?成功的触发了?RDB 持久化。

se?命令执行流程,如下图所示: ② bgse?命令

bgse(background se)既后台保存的意思, 它和 se?命令的区别就是 bgse?会 fork() 一个子进程来执行持久化,整个过程中只有在 fork() 子进程时有短暂的阻塞,当子进程被创建之后,Redis 的主进程就可以响应其他客户端的请求了,相对于整个流程都阻塞的?se?命令来说,显然?bgse?命令更适合我们使用。

bgse?命令使用,如下图所示:

bgse?执行流程,如下图所示: 2)自动触发

说完了?RDB?的手动触发方式,下面来看如何自动触发?RDB?持久化?

RDB?自动持久化主要来源于以下几种情况。

① se m n

se m n?是指在 m 秒内,如果有 n 个键发生改变,则自动触发持久化。

参数 m?和?n?可以在?Redis?的配置文件中找到,例如,se 60 1?则表明在 60 秒内,至少有一个键发生改变,就会触发?RDB?持久化。

自动触发持久化,本质是?Redis?通过判断,如果满足设置的触发条件,自动执行一次?bgse?命令。

注意:当设置多个 se m n 命令时,满足任意一个条件都会触发持久化。

例如,我们设置了以下两个 se m n 命令:

se 60 10

se 600 1

当 60s 内如果有 10 次 Redis 键值发生改变,就会触发持久化;如果 60s 内 Redis 的键值改变次数少于 10 次,那么 Redis 就会判断 600s 内,Redis 的键值是否至少被修改了一次,如果满足则会触发持久化。

② flushall

flushall?命令用于清空 Redis 数据库,在生产环境下一定慎用,当 Redis 执行了 flushall?命令之后,则会触发自动持久化,把?RDB 文件清空。

执行结果如下图所示: ③ 主从同步触发

在 Redis 主从中,当从节点执行全量作时,主节点会执行 bgse?命令,并将 RDB 文件发送给从节点,该过程会自动触发 Redis 持久化。

4.配置说明

合理的设置 RDB 的配置,可以保障 Redis 高效且稳定的运行,下面一起来看 RDB 的配置项都有哪些?

RDB 配置参数可以在? Redis 的配置文件中找见,具体内容如下:

# RDB 保存的条件

se 900 1

se 300 10

se 60 10000

# bgse 失败之后,是否停止持久化数据到磁盘,yes 表示停止持久化,no 表示忽略错误继续写文件。

stop-writes-on-bgse-error yes

# RDB 文件压缩

rdbcompression yes

# 写入文件和读取文件时是否开启 RDB 文件检查,检查是否有无损坏,如果在启动是检查发现损坏,则停止启动。

rdbchecksum yes

# RDB 文件名

dbfilename dump.rdb

# RDB 文件目录

dir ./

其中比较重要的参数如下列表:

① se 参数

它是用来配置触发 RDB 持久化条件的参数,满足保存条件时将会把数据持久化到硬盘。

默认配置说明如下:

se 900 1:表示 900 秒内如果至少有 1 个 key 值变化,则把数据持久化到硬盘;

se 300 10:表示 300 秒内如果至少有 10 个 key 值变化,则把数据持久化到硬盘;

se 60 10000:表示 60 秒内如果至少有 10000 个 key 值变化,则把数据持久化到硬盘。

② rdbcompression 参数

它的默认值是 yes?表示开启 RDB 文件压缩,Redis 会采用 LZF 算法进行压缩。如果不想消耗 CPU 性能来进行文件压缩的话,可以设置为关闭此功能,这样的缺点是需要更多的磁盘空间来保存文件。

③ rdbchecksum 参数

它的默认值为 yes?表示写入文件和读取文件时是否开启 RDB 文件检查,检查是否有无损坏,如果在启动是检查发现损坏,则停止启动。

5.配置查询

Redis 中可以使用命令查询当前配置参数。查询命令的格式为:config get xxx,例如,想要获取 RDB 文件的存储名称设置,可以使用 config get dbfilename,执行效果如下图所示:

查询 RDB 的文件目录,可使用命令 config get dir,执行效果如下图所示: 6.配置设置

设置 RDB 的配置,可以通过以下两种方式:

手动修改 Redis 配置文件;

使用命令行设置,例如,使用?config set dir "/usr/data"?就是用于修改 RDB 的存储目录。

注意:手动修改 Redis 配置文件的方式是全局生效的,即重启?Redis?设置参数也不会丢失,而使用命令修改的方式,在 Redis 重启之后就会丢失。但手动修改?Redis?配置文件,想要立即生效需要重启?Redis?,而命令的方式则不需要重启?Redis?。

小贴士:Redis?的配置文件位于?Redis?安装目录的根路径下,默认名称为 redis.conf。

7.RDB 文件恢复

当?Redis?启动时,如果 Redis 根目录存在?RDB?文件 dump.rdb,Redis 就会自动加载 RDB 文件恢复持久化数据。

如果根目录没有?dump.rdb 文件,请先将 dump.rdb?文件移动到 Redis 的根目录。

验证?RDB?文件是否被加载

Redis?在启动时有日志信息,会显示是否加载了?RDB?文件,我们执行 Redis 启动命令:src/redis-server redis.conf,如下图所示:

从日志上可以看出, Redis 服务在启动时已经正常加载了 RDB 文件。

小贴士:Redis 在载入 RDB 文件期间,会一直处于阻塞状态,直到载入工作完成为止。

8.RDB 优缺点

1)RDB 优点

RDB 的内容为二进制的数据,占用内存更小,更紧凑,更适合做为备份文件;

RDB 对灾难恢复非常有用,它是一个紧凑的文件,可以更快的传输到远程进行 Redis 服务恢复;

RDB 可以更大程度的提高 Redis 的运行速度,因为每次持久化时 Redis 主进程都会 fork() 一个子进程,进行数据持久化到磁盘,Redis 主进程并不会执行磁盘 I/O 等作;

与 AOF 格式的文件相比,RDB 文件可以更快的重启。

2)RDB 缺点

因为 RDB 只能保存某个时间间隔的数据,如果中途 Redis 服务被意外终止了,则会丢失一段时间内的 Redis 数据;

RDB 需要经常 fork() 才能使用子进程将其持久化在磁盘上。如果数据集很大,fork() 可能很耗时,并且如果数据集很大且 CPU 性能不佳,则可能导致 Redis 停止为客户端服务几毫秒甚至一秒钟。

9.禁用持久化

禁用持久化可以提高 Redis 的执行效率,如果对数据丢失不敏感的情况下,可以在连接客户端的情况下,执行 config set se ""?命令即可禁用 Redis 的持久化,如下图所示: 10.小结

通过本文我们可以得知,RDB?持久化分为手动触发和自动触发两种方式,它的优点是存储文件小,Redis?启动时恢复数据比较快,缺点是有丢失数据的风险。RDB?文件的恢复也很简单,只需要把?RDB?文件放到?Redis?的根目录,在?Redis?启动时就会自动加载并恢复数据。

11.思考题

如果?Redis??CPU?占用过高,可能是什么原因导致的?欢迎各位在评论区,写下你们的。

12.参考&鸣谢

Redis持久化的几种方式——深入解析RDB

标签:默认使用命令阻塞复数启动获取日志信息red小结

redis的几种启动方式(Linux)

1.直接启动

进入redis根目录,执行命令:

./redis-server &

2.通过指定配置文件启动

可以为redis服务启动指定配置文件,例如配置为/etc/redis/6379.conf

进入redis根目录,输入命令:

./redis-server /etc/redis/6379.conf

redis-cli -p 6380

redis集群 不停服务,重启某一怎么做?

为了将一台进行关机和重启,您可以按照以下步骤进行作:

关闭所有正在运行的 Redis 实例。

使用以下命令将需要关机的加入集群:

Copy coderedis-cluster add-node < IP>:<端口>

其中 < IP> 是需要加入集群的 IP 地址,<端口> 是该的 Redis 端口号。

使用以下命令将需要重启的从集群中移除:

Copy coderedis-cluster remove-node < IP>:<端口>

其中 < IP> 是需要移除集群的 IP 地址,<端口> 是该的 Redis 端口号。

关机并重启需要关机的。

Copy codesudo ctl stop <名称> sudo ctl restart <名称>

其中 <名称> 是需要关机和重启的名称。

检查 Redis 集群是否正常工作。

您可以使用以下命令检查 Redis 集群是否正常工作:

Copy coderedis-cluster status

如果一切正常,则应该可以看到所有的状态都为 "Online"。

请注意,在作 Redis 集群时必须非常小心,以免误作导致数据丢失。如果您不确定如何作 Redis 集群,请寻求专业人员的帮助。

Try again

7站VPS导航为您回答 选购VPS上

版权声明:本文内容由互联。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌抄袭侵权/违法违规的内容, 请发 a13828211729@163.com 邮箱删除。