单机版安装
mkdir -p /data/application
wget http://download.redis.io/releases/redis-4.0.9.tar.gz
tar xzf redis-4.0.9.tar.gz -C /data/application/
cd /data/application/
mv redis-4.0.9/ redis
cd redis/
yum install -y gcc make
make
mv redis.conf redis.conf.bak
vim redis.conf
bind 192.168.246.202
daemonize yes
port 6379
dir /data/application/redis/data
创建存放数据的目录
mkdir /data/application/redis/data
配置redis为systemctl启动
vim /lib/systemd/system/redis.service
[Unit]
Description=Redis
After=network.target
[Service]
ExecStart=/data/application/redis/src/redis-server /data/application/redis/redis.conf --daemonize no
ExecStop=/data/application/redis/src/redis-cli -h 127.0.0.1 -p 6379 shutdown
[Install]
WantedBy=multi-user.target
参数详解: • [Unit] 表示这是基础信息 • Description 是描述 • After
是在那个服务后面启动,一般是网络服务启动后启动
• [Service] 表示这里是服务信息 • ExecStart 是启动服务的命令 • ExecStop 是停止服务的指令
• [Install] 表示这是是安装相关信息
WantedBy =multi-user.target表明当系统以多用户方式(默认的运行级别)启动时,这个服务需要被自动运行。
8.启动服务:
systemctl daemon-reload
systemctl start redis.service
登陆redis
/data/application/redis/src/:
cd /data/application/redis/src/
./redis-cli -h 10.8.161.200 -p 6379
10.8.161.200:6379> ping
PONG
10.8.161.200:6379> ping 111
"111"
10.8.161.200:6379> set name xiaoming
OK
10.8.161.200:6379> get name
"xiaoming"
10.8.161.200:6379>
10.8.161.200:6379> set key value [EX seconds] [PX milliseconds] [NX|XX] EX seconds : 将键的过期时间设置为 seconds 秒。 执行 SET key value EX seconds
的效果等同于执行 SETEX key seconds value。 PX milliseconds : 将键的过期时间设置为
milliseconds 毫秒。 执行 SET key value PX milliseconds 的效果等同于执行 PSETEX key
milliseconds value。 NX : 只在键不存在时, 才对键进行设置操作。 XX : 只在键已经存在时, 才对键进行设置操作。
使用 EX 选项:
10.8.161.200:6379> set name1 xiaoming EX 5
OK
10.8.161.200:6379> get name1
"xiaoming"
10.8.161.200:6379> get name1
(nil)
使用 PX 选项:
10.8.161.200:6379> set name3 xiaoming NX
OK
10.8.161.200:6379> set name3 xiaoming NX
(nil)
使用 XX 选项:
10.8.161.200:6379> set name4 xiaoli XX
(nil)
10.8.161.200:6379> set name3 xiaoli XX
OK
10.8.161.200:6379> get name3
"xiaoli"
删除:
10.8.161.200:6379> del name3
(integer) 1
10.8.161.200:6379> get name3
(nil)
10.8.161.200:6379>
redis的相关工具
./redis-cli
./redis-server
./redis-check-aof
./redis-sentinel
数据持久化
为什么要数据持久化???
redis是把数据储存到内存中,那么当电脑关机的时候内存的数据就会消失这是我们不想看到的,即使它数据的读写很快。
所以内存持久化就是将内存的数据持久化到储存中在,保证数据在内存中消失的时候可以可以通过储存设备将数据读到内存当中。
-
RDB (Redis DataBase)·------默认开启
是在不同的时间点,将redis存储的数据生成快照并存储到磁盘等介质上
周期性
不影响数据写入
高效
完整性较差
解释:
周期性 这是由RDB 持久化的save规则决定的配置文件中
不影响数据写入:
RDB会启动子进程,备份所有数据,当前进程继续提供数据的读写。当备份完成,才替换老的配置文件。
高效 一次性还原所有数据
完整性较差 因为周期性的去持久化,所以遇到故障之后会丢故障点到上次做持久化之间的数据。
每次快照持久化都是将内存数据完整写入到磁盘一次,如果数据量大的话,而且写操作比较多,必然会引起大量的磁盘io操作,可能会严重影响性能。
-
AOF (Append Only File) 默认关闭
记录的是操作指令,在下次开启redis时将以前记录的写指令再重新执行一遍从而实现数据恢复
特点:
实时性:
这是有aof的持久化规则决定的
完整性
因为实时性每次写入数据的同时可以将写入的记录都记录下来
体积大
因为会记录你的操作行为,你的删操作也会被记录,所以文件的体积一直在增大。
RDB和AOF两种方式也可以同时使用,在这种情况下,如果redis重启的话,则会优先采用AOF方式来进行数据恢复,这是因为AOF方式的数据恢复完整度更高。官方的建议也是将两种持久化的方式都开启
持久化配置
bind 10.8.161.200
daemonize yes
port 6379
dbfilename dump.rdb
dir /data/application/redis/data
save 900 1
save 300 10
save 60 10000
stop-writes-on-bgsave-error yes
rdbcompression yes
bind 10.8.161.200
daemonize yes
port 6379
dir /data/application/redis/data
appendonly yes
appendfilename appendonly.aof
appendfsync everysec
redis备份
其实备份很简单,持久化的过程就是数据备份,当你开机启动redis时redis从你做数据化持久的文件中读取数据,这个过程就是恢复数据,所以当你从一台redis备份从另一台redis恢复数据时,你只需要把rdb或者aof文件移动到相应的位置,然后redis重启读取数据,这就是形成了备份到恢复的过程。
总结:
rdb的方式就是备份数据本身的文件,用save的策略实行持久化,有周期性
aof的方式就是sql语句的记录,用appendfsync的三个选项来实施持久化的策略
其中rdb的方式是redis默认的持久化的方法,但是开启aof的持久化方式时,redis会首先选择aof
save 900 1
appendfsync everysec
always
everysec
no