Redis 入门到精通(五)-- redis 持久化(2)
一、redis 持久化–save 配置与工作原理
1、RDB 启动方式:反复执行保存指令,忘记了怎么办?不知道数据产生了多少变化,何时保存?
采用 redis 自动执行。
谁:redis服务器发起指令(基于条件)。
什么时间:满足条件。
干什么事情:保存数据。
2、RDB 启动方式 ——save 配置
1)配置: save second changes
2)作用:满足限定时间范围内key的变化数量达到指定数量即进行持久化。
3)参数:
second:监控时间范围。
changes:监控key的变化量。
4)位置:在 conf 文件中进行配置。
5)范例:
save 900 1
save 300 10
save 60 10000
3、修改 /conf/redis-6379.conf 配置文件,添加 redis 自动执行 save 指令相关配置。指定配置文件,启动 redis 服务,
切换到 redis 安装目录
cd /usr/local/redis/redis-4.0.0/
查看 redis 服务是否后台启动成功:
root@WIN-20240529BJA:/usr/local/redis/redis-4.0.0# ps -ef | grep redis-
root 24153 1 0 01:03 ? 00:00:21 redis-server *:6379
root 24402 1538 0 08:41 pts/3 00:00:00 grep --color=auto redis-
root@WIN-20240529BJA:/usr/local/redis/redis-4.0.0#
杀死 redis 服务进程
root@WIN-20240529BJA:/usr/local/redis/redis-4.0.0# kill -s 9 24153
root@WIN-20240529BJA:/usr/local/redis/redis-4.0.0#
root@WIN-20240529BJA:/usr/local/redis/redis-4.0.0# ps -ef | grep redis-
root 24404 1538 0 08:42 pts/3 00:00:00 grep --color=auto redis-
root@WIN-20240529BJA:/usr/local/redis/redis-4.0.0#
修改 conf/redis-6379.conf 配置文件,添加 redis 自动执行 save 指令相关配置。
vim conf/redis-6379.conf
添加如下配置(每10秒2个变化就自动保存):
save 10 2
删除 data 目录下的其他 dump.rdb 文件
rm -rf data/dump*
指定配置文件,启动 redis 服务:
root@WIN-20240529BJA:/usr/local/redis/redis-4.0.0# redis-server conf/redis-6379.conf
客户端执行 save 后,再次查看 dump-6379.rdb 文件内容:
root@WIN-20240529BJA:/usr/local/redis/redis-4.0.0# ll data
root@WIN-20240529BJA:/usr/local/redis/redis-4.0.0# cat data/dump-6379.rdb
REDIs0008dis-ver4.0.0edis-bitsctimefed-memf-preamblerepl-id(3807de8be5a58a80693a6a91fb91d33a68ce217ap1-offsetlname
redis-6379age 0;root@WIN-20240529B1A: /usr/local/redis/redis-4.0.0root@wIN-20240529BJA:/usr/1ocal/redis/redis-4.0.0#
当客户端 创建1个数据时,查询 data 下,只有日志文件。
root@WIN-20240529BJA:/usr/local/redis/redis-4.0.0# ll data
total 20
drwxr-xr-x 2 root root 4096 Jul 16 08:43 ./
drwxrwxr-x 8 root root 4096 Jul 15 22:28 ../
-rw-r--r-- 1 root root 6899 Jul 16 08:45 6379.log
-rw-r--r-- 1 root root 1754 Jul 15 23:26 6380.log
root@WIN-20240529BJA:/usr/local/redis/redis-4.0.0#
当客户端 创建2个数据时,再次查询data 下,多了一个 dump-6379.rdb 文件。
root@WIN-20240529BJA:/usr/local/redis/redis-4.0.0# ll data
total 24
drwxr-xr-x 2 root root 4096 Jul 16 08:51 ./
drwxrwxr-x 8 root root 4096 Jul 15 22:28 ../
-rw-r--r-- 1 root root 7224 Jul 16 08:51 6379.log
-rw-r--r-- 1 root root 1754 Jul 15 23:26 6380.log
-rw-r--r-- 1 root root 186 Jul 16 08:51 dump-6379.rdb
root@WIN-20240529BJA:/usr/local/redis/redis-4.0.0#
执行2次get,数据无变化,也不会自动保存
root@WIN-20240529BJA:/usr/local/redis/redis-4.0.0# ll data
total 24
drwxr-xr-x 2 root root 4096 Jul 16 08:51 ./
drwxrwxr-x 8 root root 4096 Jul 15 22:28 ../
-rw-r--r-- 1 root root 7224 Jul 16 08:51 6379.log
-rw-r--r-- 1 root root 1754 Jul 15 23:26 6380.log
-rw-r--r-- 1 root root 186 Jul 16 08:51 dump-6379.rdb
root@WIN-20240529BJA:/usr/local/redis/redis-4.0.0#
执行2次 get,数据无变化,也不会自动保存
root@WIN-20240529BJA:/usr/local/redis/redis-4.0.0# ll data
total 24
drwxr-xr-x 2 root root 4096 Jul 16 08:51 ./
drwxrwxr-x 8 root root 4096 Jul 15 22:28 ../
-rw-r--r-- 1 root root 7224 Jul 16 08:51 6379.log
-rw-r--r-- 1 root root 1754 Jul 15 23:26 6380.log
-rw-r--r-- 1 root root 186 Jul 16 08:51 dump-6379.rdb
执行2次 del 和 set,数据有变化,自动保存
root@WIN-20240529BJA:/usr/local/redis/redis-4.0.0# ll data
total 24
drwxr-xr-x 2 root root 4096 Jul 16 09:01 ./
drwxrwxr-x 8 root root 4096 Jul 15 22:28 ../
-rw-r--r-- 1 root root 7549 Jul 16 09:01 6379.log
-rw-r--r-- 1 root root 1754 Jul 15 23:26 6380.log
-rw-r--r-- 1 root root 169 Jul 16 09:01 dump-6379.rdb
root@WIN-20240529BJA:/usr/local/redis/redis-4.0.0#
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
4、打开另一终端,连接 redis 客户端,创建的数据,测试是否自动保存。
启动另一客户端:
切换到 redis 安装目录
cd /usr/local/redis/redis-4.0.0/
指定端口号,启动 redis 客户端:
root@WIN-20240529BJA:/usr/local/redis/redis-4.0.0# redis-cli -p 6379
查看所有 key
127.0.0.1:6379> keys *
创建一个数据,查看服务端,不会自动保存
127.0.0.1:6379> set name redis-6379
OK
创建第2个数据,查看服务端,已经自动保存
127.0.0.1:6379> set age 38
OK
执行2次 get,数据无变化,也不会自动保存
127.0.0.1:6379> get name
"redis-6379"
127.0.0.1:6379> get age
"38"
执行2次 del 和 set,数据有变化,自动保存
127.0.0.1:6379> del name
(integer) 1
127.0.0.1:6379> set age 33
OK
127.0.0.1:6379>
原文链接:https://blog.csdn.net/qfyh_djh/article/details/140455217