MiraiForum

    • Register
    • Login
    • Search
    • Popular
    • Recent
    • Unsolved
    • Tags
    • Groups
    • 友情链接

    Solved 关于AutoSavePluginData存储大数据的方案

    开发交流
    4
    6
    148
    Loading More Posts
    • Oldest to Newest
    • Newest to Oldest
    • Most Votes
    Reply
    • Reply as topic
    Log in to reply
    This topic has been deleted. Only users with topic management privileges can see it.
    • M
      Michael1015198808 last edited by

      如题,我目前在开发一个Mirai斗地主插件,打算支持数据持久化。对于每个人,打算用PlayerInfo来记录积分、胜场、负场等数据。如果使用AutoSavePluginData的话,当使用人数很多时,对数据的存取开销都会变大,并且对内存的要求也会变高。而实际上,我们在组织一个牌桌时,只需要知道牌桌上的三个人的数据即可。
      所以,想请教一下有没有什么代码层面的奇技淫巧能够规避这个问题,即既能使用AutoSavePluginData提供的自动存取的便利,又能够防止过高的时空开销?(不太想用MySQL之类的数据库,感觉那样会增加复杂度)

      1 Reply Last reply Reply Quote 0
      • Nekoer
        Nekoer 摸鱼 last edited by

        Redis?

        1 Reply Last reply Reply Quote 0
        • M
          Michael1015198808 last edited by

          感觉引入Redis会让插件大小变得不必要的大,我好像想到了一个解决方案,稍后尝试一下,如果可行再回来()

          1 Reply Last reply Reply Quote 0
          • H
            hundun000 ⭐2021⭐ last edited by hundun000

            自己拓展AutoSavePluginData,使其读写的实现时按照用户id划分的文件名?

            1 Reply Last reply Reply Quote 0
            • RainChan
              RainChan 摸鱼 last edited by

              多个文件可能是好办法,不过sqlite也不是很复杂

              1 Reply Last reply Reply Quote 0
              • M
                Michael1015198808 last edited by

                感谢各位,我最后想了一个多文件的惰性加载的办法。

                class PlayerInfoLoader(playerId: Long): AutoSavePluginData("players/$playerId") {
                    var score: Long by value()
                    var wins: Long by value()
                    var loses: Long by value()
                }
                

                不过这个方法没有加锁,可能存在多线程隐患。
                再次感谢各位,我主要是想找一个语言难度低一点的技巧绕开批量存取的问题,现在这个解决方案对我来说应该算是比较好的了

                1 Reply Last reply Reply Quote 0
                • 1 / 1
                • First post
                  Last post
                Powered by Mamoe Technologies & NodeBB | 友情链接 | 服务监控 | Contact