Redis基本操作及常用设置

使用redis-cli登录

1
2
3
# 格式:redis-cli -h <redis服务器> -p <PORT> -a <PASSWORD>
root@ubuntu2204:~# redis-cli -h 10.0.0.7 -p 6379 -a 12345678
Warning: Using a password with '-a' or '-u' option on the command line interface may not be safe.

获取redis当前配置

1
2
3
4
5
6
7
8
9
10
11
12
13
14
10.0.0.7:6379> config get *
1) "aof-use-rdb-preamble"
2) "yes"
3) "enable-protected-configs"
4) "no"
5) "bio_cpulist"
6) ""
7) "cluster-announce-ip"
8) ""
9) "syslog-facility"
10) "local0"
11) "dir"
12) "/"
…………

查询数据库中的总数据量

1
2
10.0.0.7:6379> DBSIZE
(integer) 10000

使用set配置redis参数

1
2
3
4
5
6
7
# 设置redis密码
10.0.0.7:6379> config set requirepass 123456
OK

# 设置最大内存使用量(默认为0不限制,建议设置物理内存的一半。计算公式如下:2{G}*1024{MB}*1024{KB}*1024 {Kbyte})= 2147483648
10.0.0.7:6379> CONFIG SET MAXMEMORY 2147483648
OK

开启慢查询

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
# 修改配置文件
root@ubuntu2204:~# vim /apps/redis/etc/redis.conf
slowlog-log-slower-than 10000 # 查询超过域值 单位:us 默认10000us
slowlog-max-len 1000 # 慢查询日志记录数,可适当加大,默认128

10.0.0.7:6379> slowlog len
(integer) 2
10.0.0.7:6379> slowlog get
1) 1) (integer) 1
2) (integer) 1715851690
3) (integer) 1927
4) 1) "keys"
2) "*"
5) "10.0.0.7:56682"
6) ""
2) 1) (integer) 0
2) (integer) 1715851681
3) (integer) 1700
4) 1) "COMMAND"
2) "DOCS"
5) "10.0.0.7:56682"
6) ""

开启数据持久化(RDB模式)

RDB模式:保存基于某个时间点的数据快照,由redis主进程生成一个子进程,保存内存中的数据为一个<子进程id>.rdb,当保存完成后,再改为名RDB文件。redis只保留最后一个RDB文件

缺点:不能实时保存数据;数据量大时,fork()进程会比较耗时

实现方法:

  • save指令:同步执行,不推荐使用,使用主进程完成快照,会阻塞其它命令
  • bgsave:异步后台执行,不影响其它命令执行
  • 配置文件实现自动保存:在配置文件中制定规则,满足规则自动执行,bgsave模式
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
# redis默认配置
root@ubuntu2204:~# cat /apps/redis/etc/redis.conf
# save ""
#
# Unless specified otherwise, by default Redis will save the DB:
# * After 3600 seconds (an hour) if at least 1 change was performed
# * After 300 seconds (5 minutes) if at least 100 changes were performed
# * After 60 seconds if at least 10000 changes were performed
#
# You can set these explicitly by uncommenting the following line.
#
# save 3600 1 300 100 60 10000

#含义:以在下条件满足时执行
#* 3600秒(一小时)后,如果至少执行了一次更改
#* 如果至少进行了100次更改,则在300秒(5分钟)后
#* 60秒后,如果至少执行了10000次更改

10.0.0.7:6379> config get save
1) "save"
2) "3600 1 300 100 60 10000"

修改配置实现自动保存:

1
2
3
4
root@ubuntu2204:~# vim /apps/redis/etc/redis.conf
save 60 5 # 间隔时间及条件
dbfilename dump.rdb # 文件名
dir /apps/redis/data/ # 保存位置
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
root@ubuntu2204:~# tree /apps/redis/
/apps/redis/
├── bin
│   ├── redis-benchmark
│   ├── redis-check-aof -> redis-server
│   ├── redis-check-rdb -> redis-server
│   ├── redis-cli
│   ├── redis-sentinel -> redis-server
│   └── redis-server
├── data
│   └── dump.rdb
├── etc
│   └── redis.conf
├── log
└── run
└── redis_6379.pid

5 directories, 9 files

开启数据持久化(AOF模式)

AOF采用COW机制,通过记录日志的方式将数据变化追加记录到AOF文件尾部中

第一次启用AOF时会对数据做完全备份,后续将执行增量性备份

AOF文件优先级高于RDB,恢复redis服务时会优先使用AOF文件

直接修改配置文件开始AOF,会创建空的AOF文件加载,造成数据丢失

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
# AOF持久化的正确开启方式:
1、通过config指令开启appendonly,触发aof,自动备份所有数据到AOF文件
10.0.0.7:6379> CONFIG GET APPENDONLY
1) "APPENDONLY"
2) "no"
10.0.0.7:6379> CONFIG SET APPENDONLY YES
OK

root@ubuntu2204:~# tree /apps/redis
/apps/redis
├── bin
│   ├── redis-benchmark
│   ├── redis-check-aof -> redis-server
│   ├── redis-check-rdb -> redis-server
│   ├── redis-cli
│   ├── redis-sentinel -> redis-server
│   └── redis-server
├── data
│   ├── appendonlydir
│   │   ├── appendonly.aof.1.base.rdb
│   │   ├── appendonly.aof.1.incr.aof
│   │   └── appendonly.aof.manifest
│   └── dump.rdb
├── etc
│   └── redis.conf
├── log
└── run
└── redis_6379.pid

6 directories, 12 files

2、修改配置文件,以在服务重启时保持AOF开启
root@ubuntu2204:~# vim /apps/redis/etc/redis.conf
appendonly yes

AOF相关配置项

1
2
3
4
appendonly yes
appendfilename "appendonly.aof" # AOF文件名
appenddirname "appendonlydir" # APF存放目录
appendfsync everysec # AOF持久化同步策略(三个选项可选)

rewrite相关

由于追加式的AOF文件会不断增长文件大小,其中包含一些过期的无效记录,可以通过rewrite重写来生成新的AOF文件,从而节省磁盘空间

可以通过”bgrewriteaof” 来触发

1
2
3
10.0.0.7:6379> bgrewriteaof
Background append only file rewriting started
10.0.0.7:6379>

也可通过配置文件以下选项定义触发策略

1
2
3
no-appendfsync-on-rewrite no					# 重写时是否允许追加同步
auto-aof-rewrite-percentage 100 # 文件超出100%时进行重写
auto-aof-rewrite-min-size 64mb # 文件最小64M时进行重写

RDB和AOF的选择

  • 如果主要充当缓存功能,或者可以允许较长时间,比如数分种数据的丢失,通常只需启用RDB即可(redis默认已开启)
  • 如果数据不允许丢失,可以选择同时开始RDB和AOF
  • 不建议只开启AOF

Redis基本操作及常用设置
https://www.xcjyc.top/2024/05/16/Redis基本操作及常用设置/
作者
XCJYC
发布于
2024年5月16日
许可协议