V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
tonghuashuai
V2EX  ›  Redis

Redis 中的数据需不需要持久化到 DB 中?

  •  
  •   tonghuashuai ·
    tonghs · 2015-08-31 12:10:54 +08:00 · 7120 次点击
    这是一个创建于 3160 天前的主题,其中的信息可能已经有所发展或是发生改变。
    举个例子:

    文章信息 id, title, content 存在 DB (例如 MySQL )中,文章的查看次数存在 redis 中(例如 有序集合,文章 id 作为 key ,查看次数作为 score ),然后定期 持久化到 dump 文件中。这是目前用法。

    然后呢,前几天看了一篇文章的做法是:
    在文章信息表中加一个查看次数字段(比如: view_count ),然后定期( crontab )同步 redis 中的查看次数到这个字段中。

    先问一下有没有必要这样呢?
    14 条回复    2015-09-01 06:02:05 +08:00
    wingoo
        1
    wingoo  
       2015-08-31 12:13:20 +08:00
    你觉得这个信息重不重要,
    大都是把 redis 当作 cache 使用, 既然是 cache, 就还需要其他的存储
    如果你把 redis 当作存储使用, 那就没关系
    oott123
        2
    oott123  
       2015-08-31 12:17:16 +08:00 via Android
    你不设置 TTL 然后用 redis 当数据库不就不用手动持久化了么…
    tshwangq
        3
    tshwangq  
       2015-08-31 12:41:56 +08:00
    你没多少量的话,全部放在 redis 中,把 redis 做数据库也挺好。速度快。
    太大量了,平衡 性价比在考虑是否要放到 mysql
    cnhongwei
        4
    cnhongwei  
       2015-08-31 12:44:38 +08:00
    redis 是数据库,不只是 cache 。不知道你看一个这文章的环境是怎么样的?不放心 redis ,怕丢数据?不放心运维,不能正常保证 redis 正常运行?还是想放到 sql 数据库中做数据分析?
    如果是前两种,那你怎么不担心 mysql ,还使用 redis 做什么?不放心还要放数据到 redis 。
    tigerstudent
        5
    tigerstudent  
       2015-08-31 12:46:31 +08:00 via Android
    楼上貌似都没看楼主的主题内容。。
    9hills
        6
    9hills  
       2015-08-31 13:16:22 +08:00 via iPhone
    有,容错更好,分析数据更方便
    cnhongwei
        7
    cnhongwei  
       2015-08-31 13:30:26 +08:00
    @tigerstudent 当然看了他的内容, redis 能持久化,为什么非要同步回 mysql ?而且集中同步对数据库压力也大,容易锁表。你要同步,总得有个理由或所谓的需求。我想没有人会说:因为我看了一个文章说脱了裤子放屁好,所以我也一定要脱了裤子放屁。当然可以也应在论坛上讨论一下到底好不好。

    最后的观点就是,根本没有必要。就算是分析数据,一般也会有分析数据库,同步到那里更好。
    chenwen
        8
    chenwen  
       2015-08-31 13:32:37 +08:00
    是我记错了么,我记得 redis 稍微配置下是可以持久化的吧
    ccbikai
        9
    ccbikai  
       2015-08-31 13:42:23 +08:00
    原来公司的架构,直接把 MySQL 数据往 Redis 全部存了一份。。。
    hildert
        10
    hildert  
       2015-08-31 14:26:19 +08:00
    我个人观点:
    如果单纯为了数据备份,完全没必要。 redis 本身有持久化机制,写一个 crontab 定时备份数据文件就可以保证数据安全。
    如果是业务需要, MySQL 那边需要有一份,那就另当别论了。
    tigerstudent
        11
    tigerstudent  
       2015-08-31 14:39:10 +08:00 via Android
    @cnhongwei 嗯。。是我回复时还没看到你的回复……

    redis 自身是可以持久化的
    akira
        12
    akira  
       2015-08-31 14:53:22 +08:00
    看你怎么用 redis 了啊。如果你 redis 服务重启 /迁移的时候,不需要从数据库恢复数据,那当然不是必要了。
    不过,从长远的角度来说,还是在数据库里面保存一份比较好。所有的数据应当尽量可以从某一个点完整获得。
    Comdex
        13
    Comdex  
       2015-08-31 15:21:53 +08:00
    文章查看次数字段存在 redis 和存在 mysql 相比有什么好处?
    msg7086
        14
    msg7086  
       2015-09-01 06:02:05 +08:00
    写一个 crontab 定时备份数据文件才叫多此一举吧。

    mysql 好歹有权限控制, redis 的话你登录进去 flush 一下就呵呵了。
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   我们的愿景   ·   实用小工具   ·   1031 人在线   最高记录 6543   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 31ms · UTC 19:34 · PVG 03:34 · LAX 12:34 · JFK 15:34
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.