一直有一个好奇,如果网站用 redis 作为唯一的数据库,会怎样? - V2EX
V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
zzzmh
V2EX    Redis

一直有一个好奇,如果网站用 redis 作为唯一的数据库,会怎样?
  •  
  •   zzzmh 2020-06-28 14:56:15 +08:00 11227 次点击

    这是一个创建于 1981 天前的主题,其中的信息可能已经有所发展或是发生改变。

    其实我心里大概是有一个答案的,就是怕断电丢 5 分钟左右的数据?
    如果不考虑断电的情况呢,因为阿里云腾讯云我用了好多年都没遇到过断电,而且就丢失 5 分钟,概率上还没有中勒索病毒大。
    其他的我暂时也想不到什么坏处,顶多是逻辑要自己写,大表拆分起来要动动脑。
    好处不用说了,速度起飞,内存占用低。
    所以还是想请教一下各位大佬,到底有没有可行性

    41 条回复    2020-07-26 10:34:25 +08:00
    kiracyan
        1
    kiracyan  
       2020-06-28 14:58:38 +08:00
    本来就可以这样做 只不过看你能承担的风险是多少而已
    Jooooooooo
        2
    Jooooooooo  
       2020-06-28 15:01:09 +08:00
    运维过好几 T 的 redis 集群?
    monsterxx03
        3
    monsterxx03  
       2020-06-28 15:02:12 +08:00 via Android
    你的数据库大小不能超过机器内存喽,开了 aof 也就丢一秒,还有 redis 那个事务不堪用
    pastgift
        4
    pastgift  
       2020-06-28 15:04:49 +08:00 via iPhone
    怎么会内存占用低呢? redis 的内存也是内存呀
    比如正常 mysql 里存了 10 个 G 数据,换 redis 岂不是要 10 个 G 内存?
    你真的只考虑数据全内存里读写,sqlite 放内存,或者 mysql 内存表,加个定时刷到硬盘不就行了
    takemeaway
        5
    takemeaway  
       2020-06-28 15:06:42 +08:00
    哪来的丢 5 分钟? 可以不丢的。 就是看你内存够不够。
    luckyrayyy
        6
    luckyrayyy  
       2020-06-28 15:06:44 +08:00
    不光断电,硬件坏掉的问题?进程挂掉?系统意外死了?另外备份也不是五分钟吧,你完全可以调更低。要是丢数据对你来说完全不重要,那当然只用 redis
    GM
        7
    GM  
       2020-06-28 15:07:31 +08:00
    看你是用来干嘛的了,个人网站随意。
    公司正式用途的,别瞎想。
    vivipure
        8
    vivipure  
       2020-06-28 15:11:37 +08:00   2
    数据库只是一种方式,你用个 json 或者 txt 文件存数据也没问题啊,只是效率问题。
    lshero
        9
    lshero  
       2020-06-28 15:36:06 +08:00
    对运维的要求挺高的,之前的公司大部分项目就是 Redis
    所有的 Redis 实例每一次存取都有监控
    阻塞操作热点 key 之类的问题过一会儿就可以反馈给业务部门
    DBA 对 RDB 文件解析恢复使用的贼溜
    xuanbg
        10
    xuanbg  
       2020-06-28 15:39:19 +08:00
    楼主说的速度起飞,大概就是 30 毫秒的响应时间变成 3 毫秒。这点提升其实体验并没有那么明细,所以根本不重要。
    realpg
        11
    realpg  
    PRO
       2020-06-28 15:39:47 +08:00
    会很爽
    技术实力不够,就会很酸爽
    zzzmh
        12
    zzzmh  
    OP
       2020-06-28 15:43:48 +08:00
    多谢回答,了解了,先开个虚拟机试试水好了。redis 一直也就作为缓存在用,之前没有足够的深入了解。
    defunct9
        13
    defunct9  
       2020-06-28 15:47:05 +08:00 via iPhone
    @lshero 请教怎么监控每次存取的,还有阻塞热点 key 怎么监控
    est
        14
    est  
       2020-06-28 15:53:38 +08:00   3
    redis 自己的官网和博客就是跑在一个纯 redis 上的。所以呢

    /t/652191
    /t/652220
    /t/652232
    /t/652217
    liuguang
        15
    liuguang  
       2020-06-28 15:59:31 +08:00
    小数据量可以用用,海量数据的时候内存限制了
    swulling
        16
    swulling  
       2020-06-28 16:00:51 +08:00 via iPhone
    redis 主从配好 断电也只损失同步延迟内的数据
    lshero
        17
    lshero  
       2020-06-28 16:01:42 +08:00
    @defunct9 自己搞了个代理呗,把分片监控的问题都解决了,然而代理的可用性又是下一个问题了。
    不过业务都允许用 RDB 恢复数据了代理的高可用性也没有这么重要了。
    jifengg
        18
    jifengg  
       2020-06-28 16:17:34 +08:00
    redis 不是“关系型”数据库,所以有“关系型”的业务的时候,只用 redis 来存数据读数据,不管是开发还是运行其实都不是很好。开发就不用说了,可能需要在存的时候就存很多对应关系。读的时候,需要读好几次才能读完你要的数据。所以,还是看具体需求了。
    没有什么“关系型”业务的,很适合,比如上面说的博客。
    像一般的什么管理系统,就不太适合。
    yinjunjian0
        19
    yinjunjian0  
       2020-06-28 17:45:20 +08:00
    脱离场景没什么好讨论的吧
    DreamH
        20
    DreamH  
       2020-06-28 18:28:20 +08:00
    陌陌一直都是用 redis 当数据库,主要是操作方便,抗量简单
    wysnylc
        21
    wysnylc  
       2020-06-28 18:36:43 +08:00
    @est #13 连 redis 官网都能因为 redis 宕机而整体宕机,生产环境你宕机 5 分钟试试?
    arloor
        22
    arloor  
       2020-06-28 18:59:39 +08:00 via Android
    nodebb
    ClarkAbe
        23
    ClarkAbe  
       2020-06-28 19:06:44 +08:00 via iPhone
    之前用 Golang 嵌入式纯 kv 数据库写了个漫画网站....从推荐到分类,用户模块到记录每一次访问者信息都 ok......不过推荐那些最好别即时....而且查找什么的由于对算法实在头疼也没什么算法就是把数据分(数据总数 /5-10)份然后每一份一个 goroutine 暴力遍历因为用的是 json 的原因所以要转 map 不过我在转 map 前先让他匹配一下是否包含要查找的 value 所以速度超快......当然数据量到 n 亿条了就........

    就是架构挺麻烦.....一共搞了 10 个架构然后一个个实现再一个个测试性能大概用了一个季度......写完差不多就半年过后了
    ClarkAbe
        24
    ClarkAbe  
       2020-06-28 19:09:01 +08:00 via iPhone
    跑起来后日活 ip 2000 左右,内存占用 130M-300M 左右根据 goroutine 的数量变化

    vultr 最低配鸡稳定跑到现在还跑着
    emanci
        25
    emanci  
       2020-06-28 19:09:52 +08:00
    会这样?当然是费钱了。
    dobelee
        26
    dobelee  
       2020-06-28 19:10:04 +08:00 via iPhone
    存储成本剧增,不方便复杂查询,维护成本高。别的跟数据库一样。
    LukeChien
        27
    LukeChien  
       2020-06-28 19:23:31 +08:00 via Android
    ssdb 可以试试
    qwerthhusn
        28
    qwerthhusn  
       2020-06-28 20:01:13 +08:00
    这得看是什么网站
    murmur
        29
    murmur  
       2020-06-28 20:03:47 +08:00
    不需要持久化么? redis 的持久化跟传统 mysql 这些比呢
    liaokylin2v
        30
    liaokylin2v  
       2020-06-28 20:43:31 +08:00 via Android
    应用场景合理就可以,有啥问题
    pmispig
        31
    pmispig  
       2020-06-28 21:17:12 +08:00
    你不如把 mysql 的表文件放到内存,自己写个内存文件系统定时 sync 到磁盘
    wangyzj
        32
    wangyzj  
       2020-06-28 22:09:28 +08:00
    内存贵
    Nicoco
        33
    Nicoco  
       2020-06-28 22:10:02 +08:00
    CSDN 曾经搞过去 SQL 化,全站上 xml 的。

    结果呢?
    lihongming
        34
    lihongming  
       2020-06-28 22:57:58 +08:00 via iPhone
    别被复杂查询吓到,即使是 amazon,也只有百分之十几的查询是关系型查询,其他都可以用 nosql 。

    为了这百分之十几的查询而降低那百分之八十多查询的效率不值,所以 amazon 转向了 dynamodb

    至于复杂的那一小部分,用程序拼凑就好。
    lithbitren
        35
    lithbitren  
       2020-06-28 23:22:05 +08:00
    在知乎上看到好像有公司是真的堆 redis 做数据存储的,就是太费钱,不过老板喜欢,其他暂时没有太严重的问题。
    不过也就看过这么一例,也不知道是不是编的,网上绝大多数碰到这个问题的都是劝退,也几乎没人敢尝试放在业务上。
    594duck
        36
    594duck  
       2020-06-29 08:11:18 +08:00   1
    丁香园的 CTO feng 大用 redis 做底层,结果事后大家都知道了。


    不要老想搞个大新闻 ,什么 IOT 替代计划。真的商业数据库能力甩 MYSQL 一百条马路,除了穷没有不用的道理。而至于 Redis,他只是个 KV,KV 就只干 KV 的活,任何的想象都是犯罪。
    P0P
        37
    P0P  
       2020-06-29 10:54:11 +08:00
    要是想用简单的关系型数据库的话,sqlite 也是不错的,可以运行在纯内存模式或者基于文件模式, pv 不高的话很好用
    heiheidewo
        38
    heiheidewo  
       2020-06-29 13:02:38 +08:00
    kv 一把梭哈(可以用 leveldb 省内存),关系数据全部读到内存处理
    zzzmh
        39
    zzzmh  
    OP
       2020-06-29 14:19:06 +08:00
    @heiheidewo 刚了解了一下 leveldb,好东西适合我的项目,正在入门了
    shyangs
        40
    shyangs  
       2020-07-25 13:49:36 +08:00
    内存好的。
    ychost
        41
    ychost  
       2020-07-26 10:34:25 +08:00
    如果觉得关系型数据库的速度太慢,可以考虑使用 Orcale/SQLServer 的「内存表」,这样既有事务支持,而且内存加持速度还很快,还能定时通过快照持久化,也支持水平扩展
    关于     帮助文档     自助推广系统     博客     API     FAQ     Solana     4975 人在线   最高记录 6679       Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 34ms UTC 01:20 PVG 09:20 LAX 17:20 JFK 20:20
    Do have faith in what you're doing.
    ubao msn snddm index pchome yahoo rakuten mypaper meadowduck bidyahoo youbao zxmzxm asda bnvcg cvbfg dfscv mmhjk xxddc yybgb zznbn ccubao uaitu acv GXCV ET GDG YH FG BCVB FJFH CBRE CBC GDG ET54 WRWR RWER WREW WRWER RWER SDG EW SF DSFSF fbbs ubao fhd dfg ewr dg df ewwr ewwr et ruyut utut dfg fgd gdfgt etg dfgt dfgd ert4 gd fgg wr 235 wer3 we vsdf sdf gdf ert xcv sdf rwer hfd dfg cvb rwf afb dfh jgh bmn lgh rty gfds cxv xcv xcs vdas fdf fgd cv sdf tert sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf shasha9178 shasha9178 shasha9178 shasha9178 shasha9178 liflif2 liflif2 liflif2 liflif2 liflif2 liblib3 liblib3 liblib3 liblib3 liblib3 zhazha444 zhazha444 zhazha444 zhazha444 zhazha444 dende5 dende denden denden2 denden21 fenfen9 fenf619 fen619 fenfe9 fe619 sdf sdf sdf sdf sdf zhazh90 zhazh0 zhaa50 zha90 zh590 zho zhoz zhozh zhozho zhozho2 lislis lls95 lili95 lils5 liss9 sdf0ty987 sdft876 sdft9876 sdf09876 sd0t9876 sdf0ty98 sdf0976 sdf0ty986 sdf0ty96 sdf0t76 sdf0876 df0ty98 sf0t876 sd0ty76 sdy76 sdf76 sdf0t76 sdf0ty9 sdf0ty98 sdf0ty987 sdf0ty98 sdf6676 sdf876 sd876 sd876 sdf6 sdf6 sdf9876 sdf0t sdf06 sdf0ty9776 sdf0ty9776 sdf0ty76 sdf8876 sdf0t sd6 sdf06 s688876 sd688 sdf86