版权声明:本文为 小异常 原创文章,非商用自由转载-保持署名-注明出处,谢谢! 本文网址:https://blog.csdn.net/sun8112133/article/details/102833102
注: 该命令执行后,自动会在 Redis 安装目录 中创建 dump.rdb文件 ,当前的所有键值都会被持久化到此文件中。
对于数据备份 Redis 还提供了另一种数据备份的命令 —— BGSAVE命令。
注: 该命令执行后,同样会自动在 Redis安装目录 中创建 dump.rdb文件,当前的所有键值也都会被持久化到此文件中。
这两个备份命令在使用方面是完全相同的,都会在 Redis安装目录 中创建 dump.rdb文件。可能有些小伙伴们就会问了,既然都一样,那为什么要有两个相同功能的命令呢?其实他们是在性能上有很大差异的。
它的优点是节约系统资源,但是会阻塞 Redis进程,阻塞期间,服务器无法响应其他的处理,直到执行完成为止。如果数据量小,用此命令可能感觉不出有什么区别,但是当数据量很大的时候,就不推荐大家使用这个命令了。
它的优点是执行此命令的时候,Redis 会 fork 出一个子进程去完成备份持久化,而不会影响 Redis 处理其他的请求。但是由于会 fork 一个进程,因此会更消耗内存。(fork 的意思就是分支,相当于在当前进程所运行到的位置分一个支流出来,然后,新进程与老进程都是从分叉点开始继续运行 )
总的来说: SAVE命令 比 BGSAVE命令 更节省内存,如果数据量小的时候推荐大家使用 SAVE命令,但是此命令一旦执行就得等着,直到备份完毕;而数据量大的时候推荐大家使用 BGSAVE命令,因为它执行后我们还可以做其他的事情,不需要一直等着。
综上所述: 我个人还是更推荐大家使用 BGSAVE命令,毕竟这条命令不需要我们一直等着它。
如果需要恢复数据,只需将 备份文件(dump.rdb) 移动到 Redis安装目录 并启动服务即可。
如果有小伙伴不清楚自己 Redis安装目录 在哪里,可以使用 CONFIG命令 来获取 Redis安装目录,如下所示:
redis 127.0.0.1:6379> config get dir 1) "dir" 2) "D:\\Redis\\64bit"通过以上命令 CONFIG GET dir 可以看出的 Redis 安装目录 为: D:\\Redis\\64bit
Redis服务器 的安全是必须要防范的,我们可以通过 Redis 的配置文件(redis.conf) 或 CONFIG命令 设置访问的密码,这样客户端连接到 Redis服务器 时就需要进行密码验证,这样可以让你的 Redis服务器 更安全。
这种方式只是临时生效,如果重新启动 Redis服务器 后,此设置将会失效。
127.0.0.1:6379> config get requirepass 1) "requirepass" 2) (nil) redis 127.0.0.1:6379> config set requirepass youguess OK redis 127.0.0.1:6379> config get requirepass # 如果没有输入密码进入 redis,就会提示以下错误 (error) ERR operation not permitted redis 127.0.0.1:6379> set name zs # 密码不正确就不能操作 Redis服务器 (error) ERR operation not permitted注: 默认情况下 requirepass 参数是空的,你无需输入密码就可以连接到 Redis服务器。设置密码后,客户端连接 Redis服务器 就需要密码验证,否则进入 Redis服务器 后无法进行操作,操作时就会提示: (error) ERR operation not permitted 的报错信息。
打开 Redis安装目录 中的 redis.conf文件,在这个文件中 查找 关键字:requirepass,找到以下内容:
将前面的 # 去掉,然后将后面的 foobared 改为您想设置的密码即可。
注意: 如果想启动 Redis服务器 的时候使用配置文件,就要通过配置文件的方式启动 Redis服务器:
命令格式: redis-cli -h 主机 -p 端口 -a 密码
..> redis-cli -h 127.0.0.1 -p 6379 -a youguess # 正确输入密码后,就不会再提示以上错误了 redis 127.0.0.1:6379> config get requirepass 1) "requirepass" 2) "youguess"Auth命令 用于检测给定的密码和配置文件中的密码是否相符。如果检验正确,就可以对 Redis服务器 进行操作;如果检验失败,则不能对 Redis服务器 进行操作。
密码匹配时返回 OK ,否则返回一个错误。
注: 如果你没有输入密码进入 Redis服务器,此时进行密码检验,如果检验正确,也是可以对 Redis服务器 进行操作的;但如果你正确输入密码进入 Redis服务器,如果检验失败,则不能对 Redis服务器 进行操作。
博客中若有不恰当的地方,请您一定要告诉我。前路崎岖,望我们可以互相帮助,并肩前行!