热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

redis配置及介绍

1.redis的概述Redis(RemoteDictionaryServer,远程字典服务)是一种非关系型(NoSQL)数据库,它是一个开源的使用c语

1. redis的概述

Redis(Remote Dictionary Server,远程字典服务)是一种非关系型(NoSQL)数据库 ,它是一个开源的使用 c语言编写的key-value存储系统(区别于MySQL的二维表格的形式存储)

Redis会周期性的把更新的数据写入磁盘或者把修改操作写入追加的记录文件,实现数据的持久化

redis官网地址:

https://redis.io/

中文网站
http://www.redis.cn/

redis具有如下特点:


  • 高读写性:Redis读取的速度是110000次/s,写的速度是81000次/s
  • 原子性:Redis的所有操作都是原子性的,同时Redis还支持对几个操作全并后的原子性执行
  • 支持多种数据结构:string(字符串);list(列表);hash(哈希),set(集合);zset(有序集合)
  • 稳定性:主从结构
  • 支持事务
  • 支持过期时间
  • 支持消息订阅

2. 配置redis


2.1 下载redis安装包并解压

# 下载安装包
cd /export/softwares
wget http://download.redis.io/releases/redis-3.2.8.tar.gz# 解压
cd /export/softwares
tar -zxvf redis-3.2.8.tar.gz -C ../servers/

2.2 安装C程序运行环境

yum -y install gcc-c++

2.3 安装tcl

Tcl(tool command language)是一种简单的脚本语言,主要使用于发布命令给一 些互交程序如文本编辑器、调试器和shell。它有一个简单的语法 和很强可扩充性,Tcl可以创建新的过程以增强其内建命令的能力。

其次,Tcl是一个库包,可以被嵌入应用程序,Tcl的库包含了一个分析器、用于执行内建命令的例程和可以使你扩充(定义新的 过程)的库函数。应用程序可以产生Tcl命令并执行,命令可以由用户产生,也可以从用户接口的一个输入中读取(按钮或菜单等)。但Tcl库收到命令后将它分解并执行内建的命令,经常会产生递归的调用

yum -y install tcl

2.4 编辑redis

# 编译
make MALLOC=libc 或 make
# 测试编译是否完成
make test 或者 make install

2.5 修改配置文件

先要创建logs和redisdata文件夹

cd /export/servers/redis-3.2.8/
mkdir -p /export/servers/redis-3.2.8/logs
mkdir -p /export/servers/redis-3.2.8/redisdata
# 修改redis.conf
vim redis.conf

需要修改这些地方

bind hadoop1
# 后台服务运行
daemonize yes
pidfile /var/run/redis_6379.pid
# 日志文件路径
logfile "/export/servers/redis-3.2.8/logs/redis.log"
# 数据存放
dir /export/servers/redis-3.2.8/redisdata

2.5.1 实现主从复制架构

# 在配置hadoop2和hadoop3时还需要加下面这条指令
slaveof hadoop1 6379

2.4.2 实现哨兵(Sentinel)架构

Sentinel(哨兵)是Redis 的高可用性解决方案:由一个或多个Sentinel 实例 组成的Sentinel 系统可以监视任意多个主服务器,以及这些主服务器属下的所有从服务器,并在被监视的主服务器进入下线状态时,自动将下线主服务器属下的某个从服务器升级为新的主服务器。

具体机制如下图所示:

在这里插入图片描述

在这里插入图片描述

修改sentinel.conf文件

bind hadoop1
# 后台服务运行
daemonize yes
# 修改三台机器监控的主节点,hadoop1是主节点,有两台主机监控
sentinel monitor mymaster hadoop1 6379 2

2.6 启动redis

cd /export/servers/redis-3.2.8/
src/redis-server redis.conf

redis启动没有任何提醒,可以用ps -ef | grep redis查看是否启动

在这里插入图片描述


2.7 连接redis

src/redis-cli -h hadoop1

在这里插入图片描述


3. redis的持久化

redis的持久化也就是将数据从内存上保存到磁盘中,redis中的持久化分为RDBAOF两种方式


3.1 RDB持久化方式

Redis默认开启RDB快照,会定期保存数据到一个rbd文件中,也可以通过sava或bgsave(推荐)手动的触发RDB快照保存


  • SAVE 直接调用 rdbSave ,阻塞 Redis 主进程,直到保存完成为止。在主进程阻塞期间,服务器不能处理客户端的任何请求。

  • BGSAVE 则 fork 出一个子进程,子进程负责调用 rdbSave ,并在保存完成之后向主进程发送信号,通知保存已完成。 Redis 服务器在BGSAVE 执行期间仍然可以继续处理客户端的请求


RDB方案优点

  1. 对性能影响最小。Redis在保存RDB快照时会fork出子进程进行,几乎不影响Redis处理客户端请求的效率。

  2. 每次快照会生成一个完整的数据快照文件,所以可以辅以其他手段保存多个时间点的快照(例如把每天0点的快照备份至其他存储媒介中),作为非常可靠的灾难恢复手段。

  3. 使用RDB文件进行数据恢复比使用AOF要快很多


RDB方案缺点

  1. 快照是定期生成的,所以在Redis crash时或多或少会丢失一部分数据。

  2. 如果数据集非常大且CPU不够强(比如单核CPU),Redis在fork子进程时可能会消耗相对较长的时间,影响Redis对外提供服务的能力。

redis中的原始配置如下图所示,可以自行进行修改

在这里插入图片描述

修改配置后需要重启redis服务

# 查看redis进程
ps -ef | grep redis
# kill进程# 启动redis
cd /export/servers/redis-3.2.8/
src/redis-server redis.conf

3.2 AOF持久化方式

采用AOF持久方式时,Redis会把每一个写请求都记录在一个日志文件里。在Redis重启时,会把AOF文件中记录的所有写操作顺序执行一遍,确保数据恢复到最新。

AOF有三种fsync配置:always/everysec/no


  • always:每写入一条日志就进行一次fsync操作,数据安全性最高
  • everysec:每秒进行一次fsync
  • no:不进行fsync操作,让os自动进行flush

AOF优点:

  1. 最安全,在启用appendfsync always时,任何已写入的数据都不会丢失,使用在启用appendfsync everysec也至多只会丢失1秒的数据

  2. AOF文件在发生断电等问题时也不会损坏,即使出现了某条日志只写入了一半的情况,也可以使用redis-check-aof工具轻松修复。

  3. AOF文件易读,可修改,在进行了某些错误的数据清除操作后,只要AOF文件没有rewrite,就可以把AOF文件备份出来,把错误的命令删除,然后恢复数据。


AOF的缺点:

  1. AOF文件通常比RDB文件更大

  2. 性能消耗比RDB高

  3. 数据恢复速度比RDB慢

在redis中AOF默认是关闭的,设置图下图所示,可以进行更改
在这里插入图片描述

为了防止AOF文件过大,使得恢复时间过长,redis提供AOF rewrite功能,可以重写AOF文件,只保留能够把数据恢复到最新状态的最小写操作集。

AOF rewrite可以通过BGREWRITEAOF命令触发,也可以配置Redis定期自动进行
在这里插入图片描述


推荐阅读
author-avatar
蛋狗酱_972
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有