最近在使用redis主从的时候做了下面两件事情:

1 希望redis主从从操作上分析,所有写操作都在master上写,所有读操作都在从上读。

2 由于redis的从是放在本地的,所以有的key的读写操作就直接放在从上操作了。

但是出现了下面的几个问题:

1 在主上setex的key即使过期后在从上也始终get的到。

重现:

主: setex abc 20 test

从:

get abc >> test

ttl abc >> 18

...

ttl abc >> -1

get abc >> test (这里竟然还有~!)

主:get  abc >> nil

从:get abc >> nil

所以如果只在从上获取一个key需要根据get+ttl来判断一个key是否已经过期

查了下,也有人吐槽这个问题:http://code.google.com/p/redis/issues/detail?id=519

2 在从上进行读写操作,过期时间不生效

重现:

redis 127.0.0.1:6379> get abctest
(nil)
redis 127.0.0.1:6379> setex abctest 20 test
OK
redis 127.0.0.1:6379> get abctest
"test"
redis 127.0.0.1:6379> ttl abctest
(integer) 10
redis 127.0.0.1:6379> ttl abctest
(integer) -1
redis 127.0.0.1:6379> get abctest
"test"  (这里竟然还取得出来。。)

分析

这个现象就是像说从从来不负责删除key,删除key只是主负责的。而由于redis自身删除key的机制是

1 随机选取一定比例的过期key

2 get触发过期删除。

所以导致在master上设置了过期的key如果不在master上触发上面两个条件,在从中就永远会被取到。。。

这真是个很容易踩到的坑啊。。。

redis主从遇到的两个坑的更多相关文章

  1. redis主从配置+哨兵模式

    1.搭建redis主从,一个master两个slave,加一个哨兵监听(sentinel),可以新建三个虚拟机,模拟环境,我的电脑没那么多虚拟机,就在一台虚拟机上弄的. 2.安装redis,如果是三台 ...

  2. 记自己在spring中使用redis遇到的两个坑

    本人在spring中使用redis作为缓存时,遇到两个坑,现在记录如下,算是作为自己的备忘吧,文笔不好,望大家见谅: 一.配置文件 <!-- 加载Properties文件 --> < ...

  3. Redis安装、主从配置及两种高可用集群搭建

    Redis安装.主从配置及两种高可用集群搭建 一.            准备 Kali Linux虚拟机 三台:192.168.154.129.192.168.154.130.192.168.154 ...

  4. 使用redis-py的两个类Redis和StrictRedis时遇到的坑

    使用redis-py的两个类Redis和StrictRedis时遇到的坑 前言: 今天产品经理说,有几个队列排序的功能不能用了.对比了下以前的代码查到了一个原因,这个比较的坑,总结起来也是自己没好好看 ...

  5. Redis主从+KeepAlived实现高可用

    Redis是我们当下比较流行使用的非关系数据库,可支持多样化的数据类型,多线程高并发支持,redis运行在内存拥有更快的读写.因为redis的表现如此出色,如何能保障redis在运行中能够应对宕机故障 ...

  6. Redis上踩过的一些坑

    来自: http://blog.csdn.net//chenleixing/article/details/50530419 上上周和同事(龙哥)参加了360组织的互联网技术训练营第三期,美团网的DB ...

  7. Redis主从服务部署

    Redis__WindowsServer主从服务部署及调用实例       一.先谈谈单个Redis服务的安装         使用的redis是2.8.17版本,从官网下载解压缩后文件内容为:   ...

  8. [转帖]美团在Redis上踩过的一些坑-5.redis cluster遇到的一些问题

    美团在Redis上踩过的一些坑-5.redis cluster遇到的一些问题 博客分类: redis 运维 redis clustercluster-node-timeoutfailover  转载请 ...

  9. [转帖]美团在Redis上踩过的一些坑-3.redis内存占用飙升

    美团在Redis上踩过的一些坑-3.redis内存占用飙升 博客分类: 运维 redis redismonitor内存突增client listinfo     转载请注明出处哈:http://car ...

随机推荐

  1. Undefined symbols for architecture i386: "_deflate", referenced from:

    Undefined symbols for architecture i386: "_deflate", referenced from: PlatCompress(enumCom ...

  2. How to apply Local Group Policy settings silently using the ImportRegPol.exe and Apply_LGPO_Delta.exe utilities.

    参考:http://supportishere.com/how-to-apply-local-group-policy-settings-silently-using-the-importregpol ...

  3. 10条现代EQ技术基础贴士(转)

    前言: 无论是追求复古的模拟音色还是高精度的透明音质,现代电脑音乐制作中层出不断的新EQ插件以其超强的频率塑形和个性化功能为音色的润色和重塑提供了无限可能. 虽然EQ并不是音频工程工具中最复杂的,但是 ...

  4. 2014中国软件开发者调查(二):Java、.NET、Web、云计算特点

    继上周五放出第一篇中国软件开发者调查报告后,很多初学者和开发者翘首以盼第二篇.第三篇报告--希望这些调查报告能够给他们带来指导,解决他们的疑惑.确定他们的学习和使用信心.经过笔者在周末的努力,内容更加 ...

  5. 源代码安装 MySQL 5.6.28

    本文内容 创建 MySQL 用户和组 解压 MySQL 源代码包 生成配置安装文件 编译和安装 MySQL 配置文件 创建 MySQL 授权表 MySQL 目录授权 启动 MySQL 验证 MySQL ...

  6. 注入器和发布库--AngularJS学习笔记(三)

    AngularJS的一大特性就是Module的加载和依赖注入,本文将分析一下loader.js和最后这些代码文件是怎么组织和运行的. Loader.js 该文件中只有setupModuleLoader ...

  7. Redis之高可用方案

    Redis之高可用方案   Redis以其高效的访问速度著称.但由于官方还未发布redis-cluster,而redis的replica又有诸多不便:比如一组master-slave的机器,如果之间有 ...

  8. 利用cmdline和gradle快速编译出apk

    http://blog.csdn.net/qq_16628781/article/details/49365139 gradlew.bat clean build --info > bugtag ...

  9. 让Extjs EditorGridPanel 编辑时支持方向键

    在用 extjs editorgridpanel 进行输入编辑的时候, 默认情况下只支持使用 tab 键可以实现焦点切换, 如果想让editorgridpanel 在编辑时通过方向键来实现焦点跳转切换 ...

  10. FFRPC应用之Client/Server

    摘要: Ffrpc 进行了重构,精简了代码,代码更加清晰简洁,几乎完美的达到了我的预想.接下来将写几遍文章来介绍ffrpc可以做什么.简单总结ffrpc的特性是: Ffrpc是c++ 网络通信库 全异 ...