从运维角度去了解redis

一、介绍

1.简介

redis是一个开源的、使用C语言编写的、可基于内存也可持久化的Key-Value数据库,采用单线程基于epoll模型实现IO多路复用非阻塞的处理模式。

2.特点

bash 复制代码
1.丰富的数据结构  -----Redis支持五种数据类型:string(字符串),hash(哈希),list(列表),set(集合)及zset(sorted set:有序集合)等数据结构的存储
2.支持持久化
3.支持主从、集群、哨兵
4.性能极高 -- Redis能读的速度是110000次/s,写的速度是81000次/s。
5.pub/sub模式的发布、订阅消息队列服务器

二、安装Redis

1.安装单机版Redis

bash 复制代码
wget https://download.redis.io/releases/redis-7.0.9.tar.gz    #下载redis压缩包

tar zxvf redis-7.0.9.tar.gz -C /usr/local        #解压

mv /usr/local/redis-7.0.9 /usr/local/redis       #改名

yum -y install gcc make        #下载编译工具

cd /usr/local/redis
make                            #编译

# vim /redis.conf 
bind 192.168.91.5              #监听内网IP
daemonize yes     #开启后台模式将no改为yes
dir /data/application/redis/data  #本地数据库存放持久化数据的目录该目录-----需要存在
logfile "/var/log/redis.log"  #设置日志存放路径与日志名

./src/redis-server redis.conf             #启动

pkill redis                #关闭

我们也可以配置redis为systemctl启动

bash 复制代码
#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


systemctl daemon-reload                 #重新加载
systemctl start redis-service           #启动

#测试
# /usr/local/redis/src/redis-cli -h 192.168.91.5 -p 6379         #登录redis
192.168.246.202:6379> ping          #测试redis是否可以用
PONG

2.数据持久化(把数据保存到可永久保存的存储设备中 )

bash 复制代码
redis提供了两种持久化方式(RDB和AOF)
1.RDB是在不同的时间点,将redis存储的数据生成快照并存储到磁盘等介质上
特点:
(1).周期性
(2).不影响数据写入
(3).高效
(4).完整性较差
2.AOF是换了一个角度来实现持久化,那就是将redis执行过的所有写指令记录下来,在下次redis重新启动时,只要把这些写指令从前到后再重复执行一遍,就可以实现数据恢复了
特点:
(1).实时性
(2).完整性较好
(3).体积大
bash 复制代码
如何选择持久化方式?
缓存:不用开启任何持久方式
双开:因RDB数据不实时,但同时使用两者时服务器只会找AOF文件,所以RDB留作万一的手段。
官方的建议是两个同时使用。这样可以提供更可靠的持久化方案。
写入速度快 ------------AOF
写入速度慢 ------------RDB

持久化配置

bash 复制代码
1、RDB默认开启
#vim /usr/local/redis/redis.conf

dbfilename dump.rdb             #持久化数据存储在本地的文件
dir /data/application/redis/data           #持久化数据存储在本地的路径
stop-writes-on-bgsave-error yes            #yes代表当使用bgsave命令持久化出错时候停止写RDB快照文件,no表明忽略错误继续写文件,"错误"可能因为磁盘已满/磁盘故障/OS级别异常等 
rdbcompression yes             #是否启用rdb文件压缩,默认为"yes",压缩往往意味着"额外的cpu消耗",同时也意味着较短的网络传输时间 

2.AOF默认关闭
#vim /usr/local/redis/redis.conf

appendonly yes           #此选项为aof功能的开关,默认为"no",可以通过"yes"来开启aof功能,只有在"yes"下,aof重写/文件同步等特性才会生效

3.redis数据库备份与恢复

bash 复制代码
做备份机器的redis.conf配置文件内容:
#vim /usr/local/redis/redis.conf
dbfilename dump.rdb
dir ./data
save 900 1
save 300 10
save 60 10000
stop-writes-on-bgsave-error yes
rdbcompression yes
bash 复制代码
迁移的机器上备份数据:
[root@redis-slave-1 redis]# src/redis-cli 
127.0.0.1:6379> set name3 qianfeng
OK
127.0.0.1:6379> set name4 tianyun
OK
127.0.0.1:6379> BGSAVE   执行备份,或者敲SAVE
[root@redis-slave-1 redis]# ls data/
dump.rdb
bash 复制代码
恢复数据的机器:
修改redis.conf配置文件
#vim /usr/local/redis/redis.conf
dbfilename dump.rdb
./data
bash 复制代码
迁移机器将备份数据远程传输到恢复机器
[root@redis-slave-1 redis]# scp data/dump.rdb 192.168.62.135:/data/application/redis/data/

将dump.rdb数据文件存放到配置文件制定的目录下,直接启动即可
[root@redis-master redis]# src/redis-server redis.conf &
[root@redis-master redis]# src/redis-cli
[root@redis-master redis]#
127.0.0.1:6379> get name3
"qianfeng"
127.0.0.1:6379> get name4
"tianyun"

完成以上操作,我们单机版的redis就安装成功了,并且做好备份和恢复,接下来还有redis的主从复制、redis的哨兵模式和redis集群我们日后再接着说

相关推荐
库库林_沙琪马34 分钟前
Redis 持久化:从零到掌握
数据库·redis·缓存
牵牛老人2 小时前
Qt中使用QPdfWriter类结合QPainter类绘制并输出PDF文件
数据库·qt·pdf
卡西里弗斯奥4 小时前
【达梦数据库】dblink连接[SqlServer/Mysql]报错处理
数据库·mysql·sqlserver·达梦
温柔小胖4 小时前
sql注入之python脚本进行时间盲注和布尔盲注
数据库·sql·网络安全
杨俊杰-YJ5 小时前
MySQL 主从复制原理及其工作过程
数据库·mysql
一个儒雅随和的男子5 小时前
MySQL的聚簇索引与非聚簇索引
数据库·mysql
去看日出7 小时前
CentOS 7 企业级Redis 7部署指南
linux·redis·centos
V+zmm101347 小时前
基于微信小程序的家政服务预约系统的设计与实现(php论文源码调试讲解)
java·数据库·微信小程序·小程序·毕业设计
roman_日积跬步-终至千里7 小时前
【分布式理论14】分布式数据库存储:分表分库、主从复制与数据扩容策略
数据库·分布式
hadage2338 小时前
--- Mysql事务 ---
数据库·mysql