V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
• 请不要在回答技术问题时复制粘贴 AI 生成的内容
seedhk
V2EX  ›  程序员

求一款符合需求的 Redis 开源中间件

  •  
  •   seedhk · 14 天前 · 2238 次点击

    需求:

    增:支持将数据写入到 Redis ,隔一段时间自动将数据同步到 MySQL/sqlserver ,同步完成后,Redis 中已同步的数据会自动清除;

    删:支持根据指定业务字段(或者 KEY )将数据从 Redis 删除,删除后的数据不会同步到 Redis ;

    改:删+增的逻辑;

    查:支持 Redis 数据查询,最好能像查询数据库一样,使用类似 SQL 语言查询 Redis ,如果未查到会主动去数据库查询并写入 Redis 等,有 Java 版本的客户端;

    请问没有这样的中间件,全部符合或者符合若干个条件都可以推荐下,

    谢谢大佬们!

    第 1 条附言  ·  13 天前

    看了大佬们的回复,觉得这个想法确实太奇怪了,在此贴一下我的原始需求和产生这个需求的问题

    问题

    数据库版本: 阿里云RDS SQLSERVER 产生这个问题的需求是因为老项目的长SQL实在是过于多了,几百行的SQL一找一个准,去优化SQL工作量非常大。

    导致生产环境数据库很不稳定,经常因为SQL引起数据库不可用导致被客户投诉罚钱,但是阿里云高可用对于小企业来说实在是太贵了。迁移下云又需要一个比较专业的DBA来运维数据库,小企业老板估计也不会同意。

    于是便有了以下这几个步骤:

    • 使用了DTS,同步主库的数据到从库,基本上实现了读写分离;

    • 拆分了核心业务,但是核心业务仍然有访问数据库的需求,因此万一数据库不可用时,如何保证核心业务的正常运行,成为了一个大问题;

    领导于是提了一个点:

    • 能否通过在中间加一层缓存层的方式,比如Redis,核心业务的增删改查先走Redis。一段时间后落库,这样即使数据库挂了,只要能撑住10分钟数据库就能恢复。

    基于以上的点,才提了这个问题,不知道有没有其他更好的方案,求大佬们指教,谢谢~
    shangfabao
        1
    shangfabao  
       14 天前
    应该是没有,自己手撸一个吧
    THESDZ
        2
    THESDZ  
       14 天前
    pisay
        3
    pisay  
       14 天前
    使用 nifi 拉流程实现吧
    mindddd
        4
    mindddd  
       14 天前
    感觉自己可以根据需求撸一个
    spritecn
        5
    spritecn  
       14 天前
    @mindddd 实话,感觉撸一个就俩工作日的事
    BuggerL
        6
    BuggerL  
       14 天前 via iPhone   ❤️ 2
    @spritecn 认真的吗,sql 查 redis 就不是一两天能做完的。。可以说是做不了了
    sampeng
        7
    sampeng  
       14 天前 via iPhone
    @BuggerL 你的查就想多了,实际情况没人这么用,是属于自己给自己找不痛快。正常业务我算你 100 个接口,1000 条不同类型的 sql.。这是一个比较有规模和复杂度的项目了吧。你需要 1000 个 sql 都过 redis 做一层缓存?顶天十分之一最重要的访问量最大的。100 个了不起了。然后就为这点鸡毛蒜皮的事整个 sql 解析出来?不过也不是没有,找 sql 查 redis 的开源项目挺多的…没啥意义
    zt5b79527
        8
    zt5b79527  
       14 天前
    奇奇怪怪,倒不如把你的原始需求贴出来,让大佬们给你改改方案
    ala2008
        9
    ala2008  
       14 天前
    没有,你这个太不通用,偏向业务。自己搞吧
    securityCoding
        10
    securityCoding  
       14 天前
    没有,这是纯业务跟中间件没啥关系
    BuggerL
        11
    BuggerL  
       14 天前
    @sampeng 回错人了吧。。redis 实现 sql 解析本来就是异想天开。。。
    zzmark06
        12
    zzmark06  
       14 天前
    你的第二句话,好像不太通畅。

    以前我们有做过利用 redis 批量写 db 。
    拿 redis 当 buffer 用。
    逻辑基本是手搓的。redis 只管 SET ,定时会用 SCAN 扫,都是时序数据没有 update 。

    不要问为啥不用 kafka ,甲方有安规,kafka 被卡供应了过不去。
    sampeng
        13
    sampeng  
       14 天前
    @BuggerL 为啥是异想天开。。。https://zeesql.com/随便搜了一个。我的意思是没有任何价值。所以开源社区几乎没有几个实现。像 redis 这类只要你搞开发就要上的中间件,如果价值大,开源实现一抓一大把。无非就是语法解析罢了。缓存要设计逻辑的。。绝对不是抽象的和数据库一样。。。。鬼知道是不是 redis 里值错的或者瞬时变化或是逻辑 bug ,还有缓存穿透,冷热数据启动,全局锁,分布式异步状态的切换等等。。这些问题都碰到过,都得单拿出来设计数据结构和读/存的逻辑。。可能 1000 个接口你全用这种方式缓存了。。所有数据都是要走一个中间件。想想查 bug 的恐怖程度就难受
    BuggerL
        14
    BuggerL  
       14 天前
    @sampeng 这东西搜了搜,压根没人在生产环境用。他绝对不能完整兼容 sql 语法,应该就是简单的 sql 可以支持。所以这东西应该就是个玩具。没必要争了,反正用 redis 跑 sql 不现实
    seedhk
        15
    seedhk  
    OP
       13 天前
    @THESDZ 看了下不满足,谢谢老哥
    @zzmark06 请问您当时是怎么实现的,可以说下具体的方案吗?
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   1813 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 42ms · UTC 16:22 · PVG 00:22 · LAX 08:22 · JFK 11:22
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.