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

标签 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, 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 是从数据库检索数据并返回 List[Providers]

的调用

但是当我编译时,我不断收到这些错误

IntelliJ IDEA Error - Scala

欢迎任何帮助。

谢谢,利亚姆。

最佳答案

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

例如

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

    memcached.awaitGet[String]("pol_celestia_providers") match {
      case Some(data:String) => return (new JSONPickle(data)).unpickle[List[Provider]]
      case None => {
        val providers = getProviders
        memcached.awaitSet("pol_celestia_providers", providers.pickle.value, Duration.create(300, "seconds"))
        return providers
      }
    }
  }

关于mysql - 在 memcached 中存储不同案例类的列表,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27261673/

相关文章:

scala - Actor 的图表工具

C++ : Send an object through a named pipe

mysql - Node.js 更新 mysql 数据库

mysql - 通过连接到自身和子选择来更新表

scala - 如何在 Scala 中将 Comparable<A> 转换为 Ordering[A]

algorithm - 一种用可变或不可变状态替换序列中事件的有效技术

php - 比较来自两个不同 mysql 表的数据插入新数据并更新不匹配的数据

mysql - 无法添加外键约束

c# - 将值从字符串转换为流时出错

iphone - 如何序列化一个 UIView?