Codis 3集群搭建详解
一、Codis 3介绍 对于Redis集群方案有好多种,基本常用的就是twemproxy,codis、redis cluster这三种解决方案,本人有幸工作中都大量使用过,各有利有弊,下面这篇文章详解讲解一下豌豆尖的Codis 3。由于业务中还使用有Codis 2,所以对于Codis 2也写了一篇文章Codis 2集群搭建。Codis总体来说还算不错,仅供大……
Redis Cluster应用最佳实践
1、稳定性 不扩容时集群非常稳定。 扩容resharding时候,早期版本的Jedis端有时会出现“max-redirect”异常。 分析Jedis源码,请求重试次数达到了上限,仍然没有请求成功。两方面分析:redis连接不上?还是集群节点信息不一致? 存活检测机制缺陷:Redis存活检测机制可能因为master节点上慢查询、阻塞式命令、或者其它的性能问题……
使用CacheCloud管理Redis实例
一、CacheCloud是什么? 最近在使用CacheCloud管理Redis,所以简单说一下,这里主要说一下我碰到的问题。CacheCloud官网从安装到使用文档非常详细了。 CacheCloud提供一个Redis云管理平台:实现多种类型(Redis Standalone、Redis Sentinel、Redis Cluster)自动部署、解决Redis实……
Redis AOF刷新策略分析
Redis AOF刷新策略 Redis支持使用aof来进行持久化,防止数据丢失,aof的刷新策略通过参数appendfsync控制,有三个值:always、everysec、no,默认是everysec。 下面从源码的角度剖析一下aof的刷新策略。 每次redis进入event循环准备执行这个event时,会调用beforeSleep方法。 ……
Redis Key过期删除机制
Redis 是 k-v 数据库,我们可以设置 Redis 中缓存的 key 的过期时间。那么 Redis 缓存失效(key 过期)的故事要从 EXPIRE 这个命令说起,EXPIRE 命令允许用户为某个 key 指定其过期时间,当 key 超过这个时间后,我们应该就访问不到这个值了。接下来我们继续深入探究这个问题,Redis 缓存失效机制是如何实现的呢?也就……
Python操作Redis哨兵(三)
Sentinel的客户端 如果要做到应用程序(客户端)对Redis的failover透明Transparent),客户端需要监控sentinel的频道信息,并自动连接新的主节点。官方提供了一个专门的topic来讲解这个问题:Guidelines for Redis clients with support for Redis Sentinel,而一些常用的开……
Redis PiPeline提升性能实践
一、背景 Redis是一种基于客户端-服务端模型以及请求/响应协议的TCP服务。这意味着通常情况下一个请求会遵循以下步骤: 客户端向服务端发送一个查询请求,并监听Socket返回,通常是以阻塞模式,等待服务端响应。 服务端处理命令,并将结果返回给客户端。 因此,例如下面是4个命令序列执行情况: Client: INCR X ……
Redis Cluster故障恢复机制(三)
在一个集群中,每个节点都会定期向其他节点发送PING命令,并通过有没有收到回复来判断目标节点是否已经下线了。具体来说,集群中的每个节点每隔1秒钟就会随机选择5个节点,然后选择其中最久没有响应的节点发送PING命令。 如果一定时间内目标节点没有响应回复,则发起PING命令的节点会认为目标节点疑似下线。疑似下线可以与哨兵的主观下线类比,两者都表示某一节点从自身的……
Redis内存和key为什么不易过大?
近几年来,随着Redis的发展壮大,被越来越多的人所熟知,越来越多的企业也使用了Redis。首先说一下为什么Key不易过大,然后来分享下Redis单实例内存过大遇到的问题以及解决方案。 为什么Key不易过大? 由于Redis是单进程工作只能使用单核CPU,所以在Redis中不易单key过大,这个单key指的是string类型的。我曾经碰到过单key大小为5G……
Redis Cluster迁移遇到的各种坑及解决方案
作者:董泽润【高级DBA】【我把迁移工具从redis-port换成redis-migrate-tool】 2010—2012年在搜狐畅游,负责游戏Mysql相关的运维。 2012—2015年在赶集网担任DBA,负责整个数据库团队的建设,主要研究 Mysql、Redis、MongoDB 等技术。 2015—至今在一家图片社交公司,专注于 Redis 的运维和自……
Redis Cluster增加删除节点(二)
一、Redis Cluster增加删除节点 Redis cluster技术应用实践(一) 前面介绍了redis-trib.rb是使用CLUSTER MEET命令来使每个节点认识集群中的其他节点的,可想而知如果想要向集群中添加新的节点,也需要使用CLUSTER MEET命令来实现。加入新节点非常简单,只需要向新节点发送如下命令即可: ……
Redis异构集群之间数据迁移方案
一、Redis集群迁移工具 最近在做Redis数据迁移,网上找了两款开源的Redis迁移工具。 第一种:redis-port Codis官方提供的一个工具,redis-port是一个Redis工具,通过解析rdb文件,实现Redis主节点和从节点的数据同步,我具体没有测试过。 简单来说,redis-port就是把自已伪装成slave,欺骗master来达到数……