开发者社区> 问答> 正文

一个项目中的不同业务应该使用几个redis db库:报错

我们的项目现在使用redis作为多种业务的数据存储

我们的做法是将不同的业务存储在不同的db中。比如Tonken存储在db0,点赞数据在db1,缓存在db2。这种做法的好处是不同的业务数据可已完全分开。

但是在高并发下这种方式出现了问题。在核心存取redis的类中要不停的切换db,但是在高并发不同db读取时会出现脏读的情况。

后来咨询了一下其他公司的人,他们表示要将所有的数据都存在db0中,使用给key加前缀的方式来区分业务。其他的db只用来做备份使用。

我就想问一下有经验的开发人员,在你们的项目中是全部使用db0还是有更好的方式去解决切换脏读的问题。

没有接触过真实的高并发项目的就先不要发言了,在这里先谢谢大家了。

展开
收起
kun坤 2020-06-07 17:08:37 996 0
1 条回答
写回答
取消 提交回答
  • 一个,不然有坑爹的改了长连接上的db忘记改回来就惨了

    ######你的意思就是有人要犯错误,我们就要提前为他将来犯错误做好准备?######

    搞个redis集群,合理设计key,如果有必要可对key进行一致性hash计算,尽可能的分散读写,一致性hash一般可以解决脏读的问题

    ######回复 @啊哼哼 : 集群跟使用一个差不多,redis cluster好像本身实现了一致性hash######就算搞集群是不是也都要使用一个DB0######

    引用来自“节节草”的评论

    搞个redis集群,合理设计key,如果有必要可对key进行一致性hash计算,尽可能的分散读写,一致性hash一般可以解决脏读的问题

    抱歉!误导你了,redis集群好像本身实现了一致性hash,应用应该不需要额外再去弄一个一致性hash了

    ######可以多个不过代码中不要通过切换连接操作的库,而是不同的库使用不同的连接池,操作哪个库,就从哪个连接池获取连接######放一个db里面,然后加个业务前缀标识,这样可以,不过这样如果出现宕机或者某个业务有问题可能影响多个其他业务,建议核心业务使用单独的redis实例。
    2020-06-07 17:08:42
    赞同 展开评论 打赏
问答排行榜
最热
最新

相关电子书

更多
Redis在唯品会的应用实践——架构演进与功能定制 立即下载
微博的Redis定制之路 立即下载
云数据库Redis版的开源之路 立即下载