深入学习Redis:Redis常见问题以及优化方案

常见问题以及优化方案

1. fork耗时导致高并发请求延时

一般来说,如果父进程内存有1个G的数据,那么fork可能会耗费在20ms左右,如果是10G~30G,那么就会耗费20 * 10,甚至20 * 30,也就是几百毫秒的时间 。
info stats中的latest_fork_usec,可以看到最近一次form的时长 。
redis单机QPS一般在几万,fork可能一下子就会拖慢几万条操作的请求时长,从几毫秒变成1秒 。

优化思路:
fork耗时跟redis主进程的内存有关系,一般控制redis的内存在10GB以内,slave -> master,全量复制。

[阅读全文]

深入学习Redis:Redis经典三节点哨兵集群搭建

Redis哨兵介绍

哨兵是redis集群架构中非常重要的一个组件,主要功能如下

(1)集群监控,负责监控redis master和slave进程是否正常工作

(2)消息通知,如果某个redis实例有故障,那么哨兵负责发送消息作为报警通知给管理员

(3)故障转移,如果master node挂掉了,会自动转移到slave node上

(4)配置中心,如果故障转移发生了,通知client客户端新的master地址

[阅读全文]

深入学习Redis:CentOS 7 安装Redis 4.0.11以及生产环境启动配置

Redis简介

Redis 是完全开源免费的,遵守BSD协议,是一个高性能的key-value数据库。
Redis 与其他 key - value 缓存产品有以下三个特点:

  • Redis支持数据的持久化,可以将内存中的数据保存在磁盘中,重启的时候可以再次加载进行使用。

  • Redis不仅仅支持简单的key-value类型的数据,同时还提供list,set,zset,hash等数据结构的存储。

  • Redis支持数据的备份,即master-slave模式的数据备份。

[阅读全文]

Redis实现分布式锁

常用的分布式锁实现方式

分布式锁一般有三种实现方式:

  1. 基于数据库的唯一索引;
  2. 基于 Redis 的NX EX参数;
  3. 基于 ZooKeeper 的临时有序节点。
[阅读全文]

Redis持久化介绍

简单介绍一下Redis两种持久化策略RDB和AOF的区别。

一些简单的配置,比如端口号port, 日志位置logfile等基本配置可自行配置。

快照RDB持久化配置:

# Save the DB on disk:
#  设置sedis进行数据库镜像的频率。
#  900秒(15分钟)内至少1个key值改变(则进行数据库保存--持久化)。
#  300秒(5分钟)内至少10个key值改变(则进行数据库保存--持久化)。
#  60秒(1分钟)内至少10000个key值改变(则进行数据库保存--持久化)。
save 900 1
save 300 10
save 60 10000

stop-writes-on-bgsave-error yes
# 在进行镜像备份时,是否进行压缩。yes:压缩,但是需要一些cpu的消耗。no:不压缩,需要更多的磁盘空间。
rdbcompression yes
# 一个CRC64的校验就被放在了文件末尾,当存储或者加载rbd文件的时候会有一个10%左右的性能下降,为了达到性能的最大化,你可以关掉这个配置项。
rdbchecksum yes
# 快照的文件名
dbfilename dump.rdb
# 存放快照的目录
dir /var/lib/redis
[阅读全文]