redis简介与部署使用
redis是一款可基于内存也可持久化存储的非关系型数据库缓存服务。
官网:redis.io
redis优点:
- 丰富的数据结构,list,set,hash
- 支持磁盘持久化存储
- 支持事物
- 支持主从
redis缓存的两种方式:
- 页面缓存
- 数据缓存
redis部署流程
创建一个工作目录,例:/data/application,并下载解压redis安装包到该目录下
[root@redis-1 ~] mkdir -p /data/application
[root@redis-1 ~] wget http://download.redis.io/releases/redis-4.0.9.tar.gz
[root@redis-1 ~] tar xf redis-4.0.9.tar.gz -C /data/application
[root@redis-1 ~] cd /data/application
[root@redis-1 application] mv redis-4.0.9 redis
安装编译工具:gcc,make并在redis目录下编译
[root@redis-1 redis] yum -y install gcc make
[root@redis-1 redis] make
修改配置文件,建议重写
配置文件一定不能有多余的空格,前后都不能有,否则端口起不来
[root@redis-1 redis]# cat redis.conf
bind 0.0.0.0 #监听的主机ip,若只监听内网则写自己的ip
daemonize yes #开启后台模式
timeout 300 #连接超时时间
port 6379 #端口号
dir /data/application/redis/data #本地数据库存放持久化数据的目录,需要自己创建
pidfile /var/run/redis_6379.pid #pidfile存储路径(不用自己创建,会自动生成)
logfile /var/log/redis.log #log日志存放路径(不用自己创建,会自动生成)
appendonly yes
appendfsync everysec
no-appendfsync-on-rewrite no
auto-aof-rewrite-min-size 64mb
auto-aof-rewrite-percentage 100
protected-mode no
创建存放本地持久化数据的存放路径(与配置文件中对应)
[root@redis-1 redis] mkdir -p /data/application/redis/data
配置redis为systemctl启动
[root@redis-1 ~] vi /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表明当系统以多用户方式(默认的运行级别)启动时,这个服务需要被自动运行。
启动服务
[root@redis-1 ~] systemctl daemon-reload
[root@redis-1 ~] systemctl start redis.service
查看端口6379状态
登陆redis,测试与使用
[root@redis-1 ~] /data/application/redis/src/redis-cli -h 192.168.178.135 -p 6379
192.168.246.202:6379> ping ---测试redis是否可以用
PONG ---返回PONE即为连通
192.168.246.202:6379> set name yiki #设置key--name,并设置值
OK
192.168.246.202:6379> get name #获取到key
"yiki"
*-h 后面是要连接的redis服务器的ip,单机就写自己的ip
redis数据持久化
上一篇文章中介绍的memcached为了提高提供服务的效率,将数据都存放在内存中,所以重启后数据就没有了,同样作为缓存服务器的redis,不仅可以把数据存在内存中提高速率,还可以把数据持久化地存到磁盘中,运用了rdb和aof两种方法,默认开始开启使用rdb,aof则需要手动开启,若同时开启rdb和aof,则有限运用aof方法。
数据持久化的两种方式
-
RDB:redis database,在固定的时间点,将当时redis存储的数据生成快照保存到磁盘。类似于mysql的完整备份。
-
AOF:将redis所有执行过的写指令都备份下来,在下次重启redis时,把所有的写指令在执行一遍(相当于逻辑备份)。
rdb默认开启,aof需要手动开启,若同时开启两种模式,重启后会优先使用aof。
-
RDB特点:
- 周期性。
- 不影响数据写入:RDB启用子进程来备份数据,同时进行,等到备份完才替换旧数据。
- 高效,一次性还原所有的数据。
- 完整性差:故障点到上一次备份之间数据丢失。
-
AOF特点:
- 实时性
- 由于实时性,所以完整性较好
- 体积大
开启RDB
在配置文件redis.conf中添加以下内容
dbfilename dump.rdb #开启rdb缓存(原配置文件默认开启)
dir /data/application/redis/data #本地数据库数据持久化的存放目录,需要自己创建
save 900 1 #900秒后,至少有一个变更操作,才会snapshot
save 300 10 #save的设置需要谨慎评估
save 60 10000
stop-writes-on-bgsave-error yes #当快照发生错误时,阻塞客户端对数据的修改操作
rdbcompression yes #是否启用rdb文件压缩
客户端使用命令进行持久化save存储
[root@redis-1 ~] /data/application/redis/src/redis-cli -h [ip] -p 6379 save
开启AOF
在配置文件redis.service中添加以下内容:
appendonly yes #开启AOF功能
appendfilename "appendonly.aof" #指定aof文件名称
appendfsync everysec
no-appendfsync-on-rewrite no #在aof-rewrite期间,appendfsync不开启暂缓文件同步
auto-aof-rewrite-min-size 64mb #触发aof rewrite的最小文件尺寸
auto-aof-rewrite-percentage 100 #当Aof log增长超过指定比例时,重写log file, 设置为0表示不自动重写Aof 日志