最近在使用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. Android 的EditText实现不可编辑

    android:editable is deprecated: Use an <EditText> to make it editable android:editable is depr ...

  2. JAVA “Run as administrator” “UAC disabled” alternative solution

    Technorati 标签: psexec,run as administrator,UAC java.io.IOException: Cannot run program "psexec. ...

  3. samba4.1.9安装

    ./configure \ --prefix=/usr \ --sysconfdir=/etc \ --localstatedir=/var \ --with-piddir=/run/samba \ ...

  4. 高大上技术之sql解析

    Question: 为何sql解析和高大上有关系?Answer:因为数据库永远都是系统的核心,CRUD如此深入码农的内心...如果能把CRUD改造成高大上技术,如此不是造福嘛... CRUD就是Cre ...

  5. Android 解压boot.img

    其实解压.打包boot.img没什么难度一看就会咯!!   1.先下附件:工具. 点击打开链接 6.0 KB, 下载次数: 60)      解压到bin文件夹里,方便以后使用.   2.解压boot ...

  6. 恶心的hadoop集群

    具体配置:网上一堆,我说一下我的问题好了! “完全” 分布式集群 注意地方有三点: 1.你的"master" dfs目录中的某个Id不一致,具体位置,有空我再找找.(经过我找了一下 ...

  7. "无法启动应用程序,工作组信息文件丢失,或是已被其他用户已独占方式打开"解决办法

    当程序用ado的jet4.0方式连接mdb数据库的时候,对于设有access数据库密码的mdb的访问居然报错“无法启动应用程序,工作组信息文件丢失,或是已被其他用户已独占方式打开”. ADOConne ...

  8. Ant自动编译打包&发布 android项目

    Eclipse用起来虽然方便,但是编译打包android项目还是比较慢,尤其将应用打包发布到各个渠道时,用Eclipse手动打包各种渠道包就有点不切实际了,这时候我们用到Ant帮我们自动编译打包了. ...

  9. 使用git提交内容到网盘

    1.创建版本库(注意勾选纯版本库的选项) 2.客户端获取版本库代码 3.提交及获取 master是git默认的主要分支(主干),适合单人独自开发.多人开发时可以给每个人创建一个分支 参考资料: htt ...

  10. Zynq学习笔记(1)

    做硬件的第一个实例,一般当然是LED点灯啦~ 硬件:ZedBoard 软件:ISE 14.7 1.新建工程 2.选择平台 3.新建完成后,输入如下代码: `timescale 1ns / 1ps // ...