搜索

首页  >  问答  >  正文

redis中如何保持关系数据库里的一行记录

要将关系数据库中表的一行记录保持到redis中,在redis里要采用哪种数据类型,怎么保存?希望能举个具体示例

高洛峰高洛峰2796 天前625

全部回复(4)我来回复

  • 伊谢尔伦

    伊谢尔伦2017-04-24 09:12:58

    将java对象 序列化,然后以字节数组存储

    回复
    0
  • PHP中文网

    PHP中文网2017-04-24 09:12:58

    可以直接用数据库的主键作为redis的可以,比如<YOUR_PREFIX><PRIMARY_KEY>这种,内容的话,比如直接把数据表记录json之后就可以

    然后是一致性的问题

    • 第一种方案是把redis的作为cache来使用,只在按照主键来读取记录时,先检查redis里面(get)有没有,如果没有则从数据库里面取,同时set redis中对应的值,在set时最好给记录设置一个expire时间,这样即使没有主动的清掉脏数据,一段时间后也可以通过expire的机制自动拿到新的值。在数据表记录变动时,直接删除掉redis中的记录即可。这个是我比较推荐的比较稳妥的做法。

    • 第二种方案是直接在redis中处理全部的数据读写,只有在特定时机才把数据写回数据库中。有关写回机制,可以考虑使用一个带有消息队列,在每次redis有修改时,异步的让数据写回数据,可以通过一个timestamp来保证写回到数据库的数据是最新的;或者可以考虑使用redis在expire时机的通知机制(不过这个机制没有保障,见http://redis.io/topics/notifications)。

    回复
    0
  • 怪我咯

    怪我咯2017-04-24 09:12:58

    这个还是挺麻烦的
    可以参考一下这篇文章
    http://www.cnblogs.com/enjiex/p/3618546.html

    是可以支持简单的增删改查,而且可以结合redis的事务实现简单的功能
    但是想要实现rdbms那套sql基本操作都很麻烦

    综上

    回复
    0
  • PHP中文网

    PHP中文网2017-04-24 09:12:58

    乖乖地读手册吧,别人给你的答案木有用的,手册里讲得很清楚,看完手册再考虑应用场景,到实用阶段的时候,有一些封装的第三方api可以调用,实际上你自己写也一样,从套接字开始写起,保管你对协议,语言,网络都有个新的认识

    回复
    0
  • 取消回复