Mysql 在memcached中存储不同案例类的列表

Mysql 在memcached中存储不同案例类的列表,mysql,scala,serialization,memcached,deserialization,Mysql,Scala,Serialization,Memcached,Deserialization,我自己被一个问题困住了。我试图将MySQL数据库中的数据存储在memcached中5分钟,以减少对数据库的调用。我正在尝试将memcached中的数据存储在不同案例类的列表中。这些是我的案例类 case class Provider(id:Int, name:String, region:String, auth_url:String, tenant:String, user:String, pass:String) case class Plan(id:Int, name:String, p

我自己被一个问题困住了。我试图将MySQL数据库中的数据存储在memcached中5分钟,以减少对数据库的调用。我正在尝试将memcached中的数据存储在不同案例类的列表中。这些是我的案例类

case class Provider(id:Int, name:String, region:String, auth_url:String, tenant:String, user:String, pass:String)

case class Plan(id:Int, name:String, price:Int, currency:String, flavor_ref:String, provider:Provider,
            cpus:Int, memory:Int, bandwidth:Int, disk:Int, priv_ips:Int, pub_ips:Int)

case class ServerGroup(id:Int, group_name:String, min_servers:Int, max_servers:Int, group_conf_id:String, plan:Plan, cloud:Provider)

case class Server(id:Int, ip:String, owner:String, config_id:String, root_user:String, root_pass:String, chefRun:Date, group:ServerGroup, plan:Plan, cloud:Provider)
下面是一个我如何将其存储在memcached中的示例

def getProvidersCache: List[Provider] = {
   val memcached = Memcached(Configuration("10.16.32.2:11211"), ec)

   memcached.awaitGet[List[Provider]]("pol_celestia_providers") match {
      case Some(providers) => return providers
      case None => {
        val providers = getProviders
        memcached.awaitSet("pol_celestia_providers", providers, Duration.create(300, "seconds"))
        return providers
      }
   }
 }
getProviders
是一个从数据库检索数据并返回
列表[提供者]

但是当我编译的时候,我不断地得到这些错误

欢迎任何帮助


谢谢,利亚姆。

我已经解决了这个问题,我对这个主题做了更多的研究,发现了scala/pickling,我现在使用scala/pickling将列表转换为json并存储在memcached中

def getProvidersCache: List[Provider] = {
   val memcached = Memcached(Configuration("10.16.32.2:11211"), ec)

   memcached.awaitGet[List[Provider]]("pol_celestia_providers") match {
      case Some(providers) => return providers
      case None => {
        val providers = getProviders
        memcached.awaitSet("pol_celestia_providers", providers, Duration.create(300, "seconds"))
        return providers
      }
   }
 }
e、 g