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

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

  •  
  •   Orlion ·
    Orlion · 262 天前 · 6765 次点击
    这是一个创建于 262 天前的主题,其中的信息可能已经有所发展或是发生改变。

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

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

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

    第 1 条附言  ·  261 天前

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

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

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

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

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


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

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

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