[root@10-27-0-224 ~]# wget http://download.redis.io/releases/redis-3.0.7.tar.gz
[root@10-27-0-224 ~]# tar -zxvf redis-3.0.7.tar.gz
[root@10-27-0-224 ~]# ln -s redis-3.0.7 redis # 增加软连接,方便管理与升级
[root@10-27-0-224 ~]# ll
total 1344
lrwxrwxrwx 1 root root 11 Nov 3 09:12 redis -> redis-3.0.7
drwxrwxr-x 6 root root 306 Jan 25 2016 redis-3.0.7
[root@10-27-0-224 ~]# cd redis
[root@10-27-0-224 redis]# make && make install
[root@10-27-0-224 ~]# cd redis/src/
[root@10-27-0-224 src]# ls * |grep redis-
redis-benchmark
redis-check-aof
redis-check-dump
redis-cli
redis-sentinel
redis-server
可执行文件 | 说明 |
---|---|
redis-server | Redis服务器 |
redis-cli | Redis命令行客户端 |
redis-benchmark | Redis性能测试 |
redis-check-aof | AOF文件修复工具 |
redis-check-dump | RDB文件检查工具 |
redis-sentinel | sentinel服务器(2.8以后) |
(1)最简启动Redis(默认配置文件启动)
[root@10-27-0-224 ~]# redis-server
130445:C 03 Nov 09:22:45.434 # Warning: no config file specified, using the default config. In order to specify a config file use redis-server /path/to/redis.conf
_._
_.-``__ ''-._
_.-`` `. `_. ''-._ Redis 3.0.7 (00000000/0) 64 bit
.-`` .-```. ```\/ _.,_ ''-._
( ' , .-` | `, ) Running in standalone mode
|`-._`-...-` __...-.``-._|'` _.-'| Port: 6379
| `-._ `._ / _.-' | PID: 130445
`-._ `-._ `-./ _.-' _.-'
|`-._`-._ `-.__.-' _.-'_.-'|
| `-._`-._ _.-'_.-' | http://redis.io
`-._ `-._`-.__.-'_.-' _.-'
|`-._`-._ `-.__.-' _.-'_.-'|
| `-._`-._ _.-'_.-' |
`-._ `-._`-.__.-'_.-' _.-'
`-._ `-.__.-' _.-'
`-._ _.-'
`-.__.-'
(2)动态参数启动(指定端口)
[root@10-27-0-224 ~]# redis-server --port 6380
_._
_.-``__ ''-._
_.-`` `. `_. ''-._ Redis 3.0.7 (00000000/0) 64 bit
.-`` .-```. ```\/ _.,_ ''-._
( ' , .-` | `, ) Running in standalone mode
|`-._`-...-` __...-.``-._|'` _.-'| Port: 6380
| `-._ `._ / _.-' | PID: 130539
`-._ `-._ `-./ _.-' _.-'
|`-._`-._ `-.__.-' _.-'_.-'|
| `-._`-._ _.-'_.-' | http://redis.io
`-._ `-._`-.__.-'_.-' _.-'
|`-._`-._ `-.__.-' _.-'_.-'|
| `-._`-._ _.-'_.-' |
`-._ `-._`-.__.-'_.-' _.-'
`-._ `-.__.-' _.-'
`-._ _.-'
`-.__.-'
(3)指定配置文件启动
[root@10-27-0-224 ~]# vim redis-6379.conf
daemonize yes # 以守护进程的方式启动
pidfile "/var/run/redis-6379.pid"
logfile "6379.log"
#save 900 1
#save 300 10
#save 60 10000
dbfilename "dump-6379.rdb"
dir "/root/redis-3.0.7/data"
slave-read-only yes
appendfilename "appendonly-6379.aof"
[root@10-27-0-224 ~]# mkdir /root/redis-3.0.7/data
[root@10-27-0-224 ~]# redis-server redis-6379.conf
[root@10-27-0-224 ~]# netstat -antulp |grep 6379
tcp 0 0 0.0.0.0:6379 0.0.0.0:* LISTEN 542/redis-server *:
tcp6 0 0 :::6379 :::* LISTEN 542/redis-server *:
(1)RDB触发机制之SAVE(同步)
[root@10-27-0-224 ~]# redis-cli
127.0.0.1:6379> save
OK
[root@10-27-0-224 ~]# ll /root/redis/data/
total 8
-rw-r--r-- 1 root root 2181 Nov 3 09:56 6379.log
-rw-r--r-- 1 root root 18 Nov 3 09:56 dump-6379.rdb # 生成了RDB文件
◆ 文件策略:如存在老的RDB文件,新替换老
◆ 复杂度:O(N)
(2)RDB触发机制之bgsave(异步)
[root@10-27-0-224 ~]# redis-cli
127.0.0.1:6379> bgsave
Background saving started
[root@10-27-0-224 ~]# ll /root/redis/data/
total 8
-rw-r--r-- 1 root root 2434 Nov 3 09:57 6379.log
-rw-r--r-- 1 root root 18 Nov 3 09:57 dump-6379.rdb # RDB时间已经更新
◆ 文件策略:如存在老的RDB文件,新替换老
◆ 复杂度:O(N)
(3)RDB触发机制之save与bgsave对比
命令 | save | bgsave |
---|---|---|
IO类型 | 同步 | 异步 |
阻塞? | 是 | 是(阻塞发生在fork) |
复杂度 | O(n) | O(n) |
优点 | 不会消耗额外内存 | 不阻塞客户端命令 |
缺点 | 阻塞客户端命令 | 需要fork,消耗内存 |
(4)RDB触发机制之自动生成RDB
[root@10-27-0-224 ~]# vim redis-6379.conf
……
save 900 1
save 300 10
save 60 10000
……
(1)AOF运行原理-创建
(2)AOF运行原理-恢复
(1)AOF三种策略之Always
(2)AOF三种策略之Everysec(默认)
(3)AOF三种策略之NO
(4)AOF三种策略之对比
命令 | always | everysec | no |
---|---|---|---|
优点 | 不丢失数据 | 每秒一次fsync丢1秒数据 | 不用管 |
缺点 | IO开销较大,一般的sata盘只有几百TPS | 丢1秒数据 | 不可控 |
原生AOF | AOF重写 |
---|---|
set hello worldset hello javaset hello heheincr counterincr counterrpush mylist arpush mylist brpush mylist c过期数据 | set hello heheset counter 2rpush mylista bc |
◆ 减少硬盘占用量
◆ 加速恢复速度
(1)AOF重写实现的两种方式之 bgrewriteaof
[root@10-27-0-224 ~]# redis-cli
127.0.0.1:6379> bgrewriteaof
Background append only file rewriting started
[root@10-27-0-224 ~]# ll /root/redis/data/
total 8
-rw-r--r-- 1 root root 3160 Nov 3 10:21 6379.log
-rw-r--r-- 1 root root 0 Nov 3 10:21 appendonly-6379.aof
-rw-r--r-- 1 root root 18 Nov 3 09:57 dump-6379.rdb
(2)AOF重写实现的两种方式之“AOF重写配置”
配置名 | 含义 |
---|---|
auto-aof-rewrite-min-size | AOF文件重写需要的尺寸 |
auto-aof-rewrite-percentage | AOF文件增长率 |
统计名 | 含义 |
---|---|
aof_current_size | AOF当前尺寸(单位:字节) |
aof_base_size | AOF上次启动和重写的尺寸(单位:字节) |
自动触发时机:
◆ aof_current_size > auto-aof-rewrite-min-size
◆ aof_current_size - aof_base_size/aof_base_size > auto-aof-rewrite-percentage
原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。
如有侵权,请联系 cloudcommunity@tencent.com 删除。
原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。
如有侵权,请联系 cloudcommunity@tencent.com 删除。