Orlion
V2EX  ›  Redis

业内有没有把 redis 开启 aof=always 当做数据库使用的?

  •  
  •   Orlion ·
    Orlion · Mar 4, 2024 · 11921 views
    This topic created in 979 days ago, the information mentioned may be changed or developed.

    个人理解对于简单的存储 kv 、读写压力都比较大的需求,完全可以开启 redis 持久化,当成一个数据库来用的。aof=always 既不会导致数据丢失,也能获取极高的读性能,虽然写性能会变差,但相比 b tree/lsm tree 这种磁盘数据库性能还是比较高的吧。

    而且还有个好处就是避免了常说的“缓存一致性问题”😄。

    各位大佬厂里有没有这样用的?如果没有原因是什么呢?

    Supplement 1  ·  Mar 4, 2024

    感谢V友们踊跃评论,这里再做一个阶段性补充:

    1. 场景是只针对KV这种非常简单的需求的哈,就是读一个k,写一个k,没有复杂查询之类的东西。
    2. 总结下各位的意见这种玩法目前有两个缺点:
      • aof文件存在损坏的可能性
      • 存储数据多之后aof文件会非常大,导致redis拉起比较慢
    33 replies  •  2024-03-04 18:13:32 +08:00
    FawkesV
    FawkesV
    Mar 4, 2024
    1
    内存太贵
    ShuA1
    ShuA1
    Mar 4, 2024
    2
    你把持久化的内容作为标准内容输出再导入试试
    LongMaoz
    LongMaoz
    Mar 4, 2024❤️10
    3
    碰到过哦,天才设计,把 Redis 当数据库用 聚合运算无法实现,想聚合运算只能把所有数据拉到内存里再计算,延迟大得吓人

    单机架构,高并发情况下 Rrdis 单线程执行,所有人全部在等待慢查询,所有 IO 也没有使用异步,整个系统高并发情况下直接崩掉
    securityCoding
    securityCoding
    Mar 4, 2024 via Android
    4
    有,很多活动数据都是直接丢 redis 里面
    bruce0
    bruce0
    Mar 4, 2024❤️1
    5
    我们就这样用, 以前的时候,这个只用在数据规模比较小的时候, 一个 redis 大约几十, 几百 MB 吧,因为以前的 redis aof 和 rdb 性能没那么好, 数据量太大性能有影响. 数据规模大的 redis 自己做了一个 monitor 工具,来做数据落地

    后来还换过 pika 这样的硬盘型的 kv 数据库, 优点:数据实时写入硬盘,不用担心断电数据丢失, 而且使用成本低, 数据量不受内存制约. 缺点, 读写延迟相对 redis 大, API 不是 100%兼容 redis

    现在直接用 云厂商的 redis, 好处就是什么都不用管, 只管用就行. 而且有多种模式, 主从, 集群都有, 基本不用担心丢数据


    !!! 最后警告, 我们的业务模式允许极端状况下 丢失少量数据, 如果涉及到非常严格的场景,纯 redis 还是有风险
    lovedebug
    lovedebug
    Mar 4, 2024
    6
    部分服务拿来做数据库,当时只限大数据量和高速查询用途
    layxy
    layxy
    Mar 4, 2024
    7
    各种关联组合查询以及数据聚合怎么办
    matrix1010
    matrix1010
    Mar 4, 2024 via iPhone
    8
    简单 kv 内存够大当然没问题。但一般情况下小公司用户少不需要那么快,大公司数据量大放内存性价比太低
    kneo
    kneo
    Mar 4, 2024 via Android
    9
    自己测一下再说。
    GlobalNPC
    GlobalNPC
    Mar 4, 2024❤️3
    10
    FrankAdler
    FrankAdler
    Mar 4, 2024 via Android❤️1
    11
    我所在的公司把 redis 当持久存储使用,有些数据只在内存有数据库没有,好几个集群的内存规模在 tb 级别,当然费用也很高,现在想做降本随随便便都是万/月😄
    thinkershare
    thinkershare
    Mar 4, 2024❤️1
    12
    大部分业务都有对写有一致性要求(而且不是简单的 K/V 写入),Redis 只能用读(也要处理缓存失效的问题),完全无法处理写的一致性问题。
    你看国内几家大型互联网公司,搞了一堆中间件,结果是一致性总会出现一堆奇奇怪怪的问题,我遇到的就有:美团&淘宝&京东&天猫&腾讯。
    PiersSoCool
    PiersSoCool
    Mar 4, 2024
    13
    我不信谁的系统里没有 select sum(amount) from money group by user_id 的需求,有的话老老实实 mysql 把
    37Y37
    37Y37
    Mar 4, 2024 via Android
    14
    接触过很多游戏项目,就是直接 Redis 做数据库,并且跑的很成熟了,用户体量很大,基本没出过什么问题。在这之前我也一直认为 Redis 只能做缓存,实践证明做数据库也可以

    单 Redis 集群有几个 T 的内存,内存太贵了,胜在现在有一些新产品可以自动分离冷热数据,降低成本到之前的 1/10 左右,很好用很划算
    version
    version
    Mar 4, 2024
    15
    活动秒杀啥的.上 redis 储存..比看什么高级架构师高并发 ppt 靠谱
    vivisidea
    vivisidea
    Mar 4, 2024
    16
    现在 nvme ssd 的性能很强,容量大的也可以很大,可以考虑楼上提到的 kvrocks 类的 ssd based redis 方案
    QWE321ASD
    QWE321ASD
    Mar 4, 2024
    17
    其他地方不知道,知乎我看见过好几个说主力数据库是 redis 的
    limingzhe123
    limingzhe123
    Mar 4, 2024
    18
    Redis 通过 proxy+instance 做成高可用集群,就是一个内存数据库
    guanzhangzhang
    guanzhangzhang
    Mar 4, 2024
    19
    如果机器配置不高,又混着用,切宕机风险高(例如小公司自建机房,随便的 vmware ,exsi ),aof 的文件会存在损坏几率的
    badbye
    badbye
    Mar 4, 2024
    20
    游戏行业很多年前就见过把 leveldb 集成到 redis 中当数据库用的
    xiaowangge
    xiaowangge
    Mar 4, 2024 via iPhone
    21
    游戏行业多年前使用腾讯云魔改版 Memcached (可持久化)当数据库用。

    后来又使用 Redis 当数据库用。
    G2bN4dbX9J3ncp0r
    G2bN4dbX9J3ncp0r
    Mar 4, 2024
    22
    nvme 性能好, 可以直接拿 pg 当 缓存用
    rails 就是这么干的
    https://discuss.rubyonrails.org/t/explaning-solid-cache-rails-new-cache-store/83970/1
    roundgis
    roundgis
    Mar 4, 2024 via Android
    23
    云风的游戏公司好像用 redis 当主数据库
    hxzhouh1
    hxzhouh1
    Mar 4, 2024
    24
    如果只有 KV 数据,没关系型运算,应该可以把,但是我不敢尝试,毕竟丢数据比较糟心
    dododada
    dododada
    Mar 4, 2024
    25
    有的,以前我们就用,IM 的 TCP 消息服务,16 台 256Gredis 。除了业务逻辑上的问题,从来没有什么并发跟不上。
    嫌贵的话可以试试 ssd ,小米有个基于 rockdb 的开源项目,我们也用过,性能比 redis 低一些,但是很便宜。
    另外当年有个新闻,某成人网站,主数据库就迁移到 redis 了
    locochen
    locochen
    Mar 4, 2024
    26
    可以对比下 SAP Hana 内存数据库
    Rickkkkkkk
    Rickkkkkkk
    Mar 4, 2024
    27
    挺多的
    fcten
    fcten
    Mar 4, 2024
    28
    想法很好,有很多人都是这么想的。但是用 Redis 来搞属实有些蹩脚,所以有了 LevelDB 。
    ZeroAsh
    ZeroAsh
    Mar 4, 2024
    29
    NoSQL 做业务数据存储如果没做详细的调研确定自己能用 Redis ,整体感觉是直接上 MongoDB 更好,功能更多更全,楼上说的 aggregate/sum 这种查询也没问题
    RedisMasterNode
    RedisMasterNode
    Mar 4, 2024
    30
    这样的玩法为啥不直接用个 KV 存储咧?
    ychost
    ychost
    Mar 4, 2024
    31
    你这个需求应该用 MongoDB 速度也够快,查询也够灵活就是不支持 join 而已
    MIUIOS
    MIUIOS
    Mar 4, 2024
    32
    问题来了。。 事务怎么办
    me1onsoda
    me1onsoda
    Mar 4, 2024
    33
    你对缓存一致性是不是有什么误解?
    About   ·   Help   ·   Advertise   ·   Blog   ·   API   ·   FAQ   ·   Privacy   ·   Solana   ·   509 Online   Highest 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 70ms · UTC 20:49 · PVG 04:49 · LAX 12:49 · JFK 15:49
    ♥ Do have faith in what you're doing.