随笔分类 - Redis
摘要:突然收到告警,提示redis挂了,同时大群也在说某某redis连接超时了,过了一会儿就恢复了。这时登上服务器,查看监控。首先看看qps: 可以看到qps并不高,但是中间有段时间没取到数据是怎么回事?那么继续看看redis的cpu使用率: 可以看到cpu已经饱和,这也就能解释为何断图了,因为redis
阅读全文
摘要:几个月没有更新博客了,已经长草了,特意来除草。本次主要分享如何利用consul来实现redis以及mysql的高可用。以前的公司mysql是单机单实例,高可用MHA加vip就能搞定,新公司mysql是单机多实例,那么显然这个方案不适用,后来也实现了故障切换调用dns api来修改域名记录,但是还是没
阅读全文
摘要:Redis目前高可用的架构非常多,比如keepalived+redis,redis cluster,twemproxy,codis,这些架构各有优劣,今天暂且不说这些架构,今天主要说说redis sentinel高可用架构。它的主要功能有以下几点不时地监控redis是否按照预期良好地运行;如果发现某...
阅读全文
摘要:Twemproxy是一种代理分片机制,由Twitter开源。Twemproxy作为代理,可接受来自多个程序的访问,按照路由规则,转发给后台的各个Redis服务器,再原路返回。该方案很好的解决了单个Redis实例承载能力的问题。当然,Twemproxy本身也是单点,需要用Keepalived做高可用方...
阅读全文
摘要:Redis Cluster终于出了Stable,这让人很是激动,等Stable很久了,所以还是先玩玩。一. 集群简单概念。Redis 集群是一个可以在多个 Redis 节点之间进行数据共享的设施(installation)。Redis 集群不支持那些需要同时处理多个键的 Redis 命令, 因为执行...
阅读全文
摘要:很久没有写博客了,最近简单的学习了一下Redis,其中学习了一下用Redis实现优先级消息队列。关于更多更为详细的可以在www.redis.cn找到相关资料。对于熟悉Redis的童鞋提到队列很自然的想到使用Redis的列表类型。其中也自然能够想到LPUSH和RPOP命令实现队列的概念。如果要实现任务...
阅读全文
摘要:写操作的流程首先我们来看一下数据库在进行写操作时到底做了哪些事,主要有下面五个过程。客户端向服务端发送写操作(数据在客户端的内存中)数据库服务端接收到写请求的数据(数据在服务端的内存中)服务端调用write(2) 这个系统调用,将数据往磁盘上写(数据在系统内存的缓冲区中)操作系统将缓冲区中的数据转移到磁盘控制器上(数据在磁盘缓存中)磁盘控制器将数据写到磁盘的物理介质中(数据真正落到磁盘上)故障分析上面的5个流程看一下各种级别的故障。当数据库系统故障时,这时候系统内核还是OK的,那么此时只要我们执行完了第3步,那么数据就是安全的,因为后续操作系统会来完成后面几步,保证数据最终会落到磁盘上。当系统
阅读全文
摘要:Redis简介redis是一个key-value存储系统。和Memcached类似,它支持存储的value类型相对更多,包括string(字符串)、 list(链表)、set(集合)和zset(有序集合)。这些数据类型都支持push/pop、add/remove及取交集并集和差集及更丰富的操 作,而且这些操作都是原子性的。在此基础上,redis支持各种不同方式的排序。与memcached一样,为了保证效率,数据都是缓存在内存中。区别的 是redis会周期性的把更新的数据写入磁盘或者把修改操作写入追加的记录文件,并且在此基础上实现了master-slave(主从)同步。Redis 是一个高性能的
阅读全文