redis
文章平均质量分 58
qbw2010
这个作者很懒,什么都没留下…
展开
-
Redis Sentinel初体验
自Redis增加Sentinel集群工具以来,本博主就从未尝试过使用该工具。最近在调研目前主流的Redis集群部署方案,所以详细地看了一遍官方对于Sentinel的介绍并在自己的台式机上完成了三Redis实例+三Sentinel实例的部署,这里做一下简单的总结。 首先,下载安装Redis。目前随Redis 2.8发布的Sentinel版本被antirez称为Sentinel 2,是在转载 2015-03-26 14:35:49 · 692 阅读 · 0 评论 -
redis主从同步期间发送的各种命令和各种超时
1.从服务器向主服务器发送1种命令:REPLCONF ACK offset这个命令是主从完成同步后,从服务器定期向主服务器发送的命令。作用有2个:1.if offet > c->repl_ack_off : c->repl_ack_off = offset 2.c->repl_ack_time = server.unixtime2.主服务器原创 2016-01-11 15:26:16 · 3100 阅读 · 0 评论 -
记一次大压力测试下redis主从失败的分析过程
错误出现时序图:日志可以看出:10.1.2.37(主服务器) 在1月26号晚21:32:02触发了这个异常10.1.2.36(从服务器) 在1月26号晚21:32:18触发了全同步在21:35:37完成全同步后,立即就触发了Broken pipe错误。从开始到结束完全同步,总共用了199原创 2016-01-27 16:16:04 · 1553 阅读 · 0 评论 -
redis主从复制过程中,slave端混读PING命令的问题
最近两日在调试redis代码时遇到两个问题:1.主从复制过程中,slave端的readSyncBulkPayload会读到错误的信息(主服务器发来的PING命令的一部分),导致slave端一直在向主服务器发送同步请求。2.主从同步结束后,进入命令传播阶段。主服务器向从服务器传播命令后,如果命令执行成功,从服务器会返回+OK\r\n,主服务器不能识别这个命令,导致失败。经过两天的原创 2016-01-08 12:43:41 · 1042 阅读 · 0 评论 -
redis 从服务器给主服务器发送ACK时,主服务器长时间不读取socket,则会出现错误。
最近一直在重写redis 源码,在调试时发现一个错误:错误发生的场景如下:从服务器不下断点,而主服务器的断点一直卡在,readQueryFromClient函数中的read函数之前。在这种情况下,从服务器会一直向主服务器发送ACK,直到socket写缓冲区被写满,才停止。而主服务器由于一直被卡在read函数之前,所以socket接收缓冲区(我这缓冲区大小是335KB)的中数据一原创 2016-01-06 16:14:43 · 885 阅读 · 0 评论 -
redis rdb流程和相关函数逻辑
原创 2015-12-03 11:46:21 · 446 阅读 · 0 评论 -
redis 清除过期键算法流程
过期键清除策略分为两种: 1 FAST, 2 SLOWFAST模式下: 运行周期为2秒, 超时时间为1秒.SLOW模式下: 运行周期没有, 超时时间为25秒.原创 2015-11-20 10:17:52 · 411 阅读 · 0 评论 -
redis Can’t save in background: fork: Cannot allocate memory
碰到一个悲催的事情:一台Redis服务器,4核,16G内存且没有任何硬件上的问题。持续高压运行了大约3个月,保存了大约14G的数据,设置了比较完备的Save参数。而就是这台主机,在一次重起之后,丢失了大量的数据,14G的数据最终只恢复了几百兆而已。正常情况下,像Redis这样定期回写磁盘的内存数据库,丢失几个数据也是在情理之中,可超过80%数据丢失率实在太离谱。排除了误操作的可能性之后,开转载 2015-06-05 15:36:31 · 751 阅读 · 0 评论 -
java 版本的redis-stat不能运行在后台和daemon
在使用java版本的redis-stat时,在putty中打开redis-stat后,如果退出putty则redis-stat不能工作。而且以后台方式打开redis-stat也不行(后面加&).使用nohup还是不行,不过最后使用screen则可以,安装screen的方法是yum install screen。现在还不知道原因,下来研究。原创 2015-06-04 11:06:14 · 918 阅读 · 0 评论 -
redis过期时间和删除策略
在redis中有4种方法可以设置过期时间: expire : 设置生存时间为ttl秒pexpire: 设置生存时间为 ttl毫秒expireat : 设置过期时间为timestamp所指定的秒数时间戳.pexpireat: 设置过期时间为timestamp所指定的毫秒数时间戳.其中timestamp为unix时间戳.redisDb结构的expires字典保存了数原创 2015-05-05 18:24:31 · 2486 阅读 · 0 评论 -
深入理解数据库磁盘存储(Disk Storage)
转载自:http://blog.csdn.net/idber/article/details/8087473数据库管理系统将数据存储在磁盘、磁带以及其他的裸设备上,虽然这些设备的访问速度相比内存慢很多,但其非易失性和大容量的特点使他们成为数据存储的不二之选。本文主要讨论大型数据库产品的磁盘存储内部结构,这对于深入理解数据库各种数据结构具有至关重要的作用。数据库磁转载 2015-04-01 08:30:07 · 1162 阅读 · 0 评论 -
redis.conf配置项说明
#是否以后台进程运行,默认为no,如果需要以后台进程运行则改为yesdaemonize no #如果以后台进程运行的话,就需要指定pid,你可以在此自定义redis.pid文件的位置。pidfile /var/run/redis.pid #接受连接的端口号,如果端口是0则redis将不会监听TCP socket连接port转载 2015-03-25 17:31:47 · 431 阅读 · 0 评论 -
Redis 安装,主从配置及Sentinel配置自动Failover
主页地址:http://redis.io/topics/sentinelsentinel主要功能就是为Redis M-S(master,slaves)集群提供了1)master存活检测 2)集群中M-S服务监控 3) 自动故障转移,M-S角色转换等能力,从一个方面说是提高了redis集群的可用性.#添加并编辑配置文件/etc/sentinel.conf,新增内容如下,也转载 2015-03-26 15:39:32 · 1331 阅读 · 0 评论 -
归档Redis在Windows,linux平台下的安装配置
转载自:http://www.cnblogs.com/daizhj/articles/1956681.html 为了方便查阅资料,特将网上搜索到的Redis相关安装配置进行归档整理:=============================================================window平台Redis安装转载 2015-03-27 08:44:47 · 426 阅读 · 0 评论 -
JAVA反射机制
运行时类型识别(Run-time Type Identification, RTTI)主要有两种方式,一种是我们在编译时和运行时已经知道了所有的类型,另外一种是功能强大的“反射”机制。 要理解RTTI在Java中的工作原理,首先必须知道类型信息在运行时是如何表示的,这项工作是由“Class对象”完成的,它包含了与类有关的信息。类是程序的重要组成部分,每个类都有一个Class对象转载 2015-03-26 18:21:39 · 350 阅读 · 0 评论 -
redis c->buf=3的极限测试
今天做了一个极限的测试,把redisClient的回复静态缓冲区buf,设置为3。这样做的目的是使用c->reply作为回复缓冲。测试的时候出现了解析命令出错的问题。仔细思考了一下原因如下:当c->buf大小为3时,replconf ack 1会被组织成10个链表结点:而发送时是一个节点一个节点的发送的。如先发*3\r\n,再发$8\r\n,这时被发送方会读取数据,原创 2016-01-12 17:31:00 · 328 阅读 · 0 评论