Redis主从遇到的两个问题解决

最近在使用redis主从的时候做了下面两件事情:1 希望redis主从从操作上分析,所有写操作都在master上写,所有读操作都在从上读。

最近在使用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是否已经过期

查了下,也有人吐槽这个问题:?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上触发上面两个条件,在从中就永远会被取到。。。

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

推荐阅读:

Ubuntu 12.10下安装Redis(图文详解)+ Jedis连接Redis

Redis系列-安装部署维护篇

CentOS 6.3安装Redis

分场合可以对关系%ignore_a_1%起到很好的补充作用。它提供了Python,Ruby,,Erlang,PHP客户端,使用很方便。

Redis 的详细介绍:请点这里
Redis 的下载地址:请点这里

linux

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌抄袭侵权/违法违规的内容, 请发送邮件至253000106@qq.com举报,一经查实,本站将立刻删除。

发布者:PHP中文网,转转请注明出处:https://www.chuangxiangniao.com/p/1880854.html

(0)
上一篇 2025年2月22日 11:14:47
下一篇 2025年2月22日 11:15:02

AD推荐 黄金广告位招租... 更多推荐

相关推荐

  • navicat 怎么连接服务器上的数据库

      本来没有开启秘钥的远程服务器端数据库连接非常方便,就在新建连接上填入数据就ok了,但是开启SSH秘钥后的服务器连接有一个大坑,下面来详细讲讲navicat怎么连接服务器上的数据库。 推荐教程:navicat图文教程  其实开启了秘钥,在…

    2025年2月23日 数据库
    000
  • 如何使用navicat为数据库表增加新记录

    下面介绍如何使用Navicat为数据库表增加新记录的具体操作方法。 推荐教程:navicat图文教程 1、打开Navicat 2、打开数据表所在的数据库,右击需要新增记录的数据库表,然后点击【打开表】 3、此时显示数据库表已有数据,例中并无…

    2025年2月23日 数据库
    100
  • navicat不显示数据库

    最近,发现自己半年前在navicat里建立的数据库不见了,查本地mysql发现 此数据库完好的还在,就是在navicat里隐藏不显示了。下面就为大家讲解一下问题的原因几解决办法。 推荐教程:Navicat图文教程 解决过程:开始怀疑是MyS…

    2025年2月23日
    100
  • navicat怎么连数据库

      Navicat中文版可谓是强大的可视化数据库管理工具,其中包含了多个数据库组件,可以满足与不同的数据库软件相连接。就比如其中的Navicat for MySQL组件,该组件可以与任何3.21或以上版本的MySQL一起工作,并支持大部分的…

    2025年2月23日 数据库
    100
  • navicat怎么连别人的数据库

        做项目期间,项目组成员之间需要相互访问对方的数据库,连接对方Mysql数据库需要以下几个步骤: 推荐教程:navicat图文教程 0)前提条件      两台电脑必须处于同一网段下; 1)查询双方IP地址      方法1:打开cm…

    2025年2月23日
    100
  • navicat怎么导出整个数据库

      我们在开发网站,或者运营网站的时候,要养成经常备份数据库的习惯,因为这样可以预防数据的丢失。常见的数据库备份操作就是数据库的导入与导出。可以把数据库导出来,放在一个地方保存。下面就由小编教你如何用Navicat for mysql操作数…

    2025年2月23日 数据库
    100
  • 怎么把数据库导入navicat

    在开发时,数据库的设计与程序的设计是分开进行的。你在开发时经常会需要导入别的给你的数据库到你的电脑上进行调试。下面我们就为大家介绍一下navicat如何导入数据库文件。 推荐教程:navicat使用图文教程 1、首先打开navicat软件。…

    2025年2月23日 数据库
    100
  • 怎么用navicat创建数据库

    1、首先登陆Navicat,然后顺利连接数据库,如下图所示: 相关推荐:《Navicat for mysql使用图文教程》 2、在IP地址为192.168.255.131数据库上右键,然后点击“新建数据库”,如下图所示: 3、之后弹出“新建…

    2025年2月23日 数据库
    100
  • 怎么向navicat导入一个数据库

    首先我们打开Navicat,并且连接上本地数据库,选中连接,右键打开连接,直接双击也可以的。 在本地数据库中我们新建一个数据库用于存放导入的sql文件。 相关推荐:《Navicat for mysql使用图文教程》 设置编码,排序规则。 接…

    2025年2月23日 数据库
    100
  • navicat删除的数据库是否可以找回

    打开Navicat for MySQL,打开连接并激活数据库。 在上方选项栏找到备份并点击,点击新建备份,点击对象选择,选择所需要的对象。 相关推荐:《Navicat for mysql使用图文教程》 点击开始,点击保存,输入设置文件名。 …

    2025年2月23日 数据库
    100

发表回复

登录后才能评论