scala - 使用 Redis 存储 ListBuffer[List[Double]]

标签 scala redis jedis

我在播放应用程序中使用 Redis 作为捕捉。使用 Redis,我可以存储一些与键字符串相关联的字符串列表,就像在 case class Cache1 中一样:

    case class Cache1(val hostname : String, val port : Int, val timeout : Int) {
    val pool : Pool =
      new Pool(new JedisPool(new JedisPoolConfig(), hostname, port, timeout))
    val j = pool.underlying.getResource
    j.flushAll
    pool.underlying.returnResourceObject(j)


    def set(key : String, value : String) : Unit = pool.withClient { client => 
      client.lpush(key, value)
    }

    def get(key : String) : Option[List[String]] = {
      pool.withClient { client =>
        val l : List[String] =
          Dress.up(client).lrange(key, 0, Dress.up(client).llen(key)-1)
        if(l.length == 0) return None else return Some(l)
      }
    }
  }

我想重现相同的案例类,但不是将 String 存储为值,我想存储一个 ListBuffer[List[Double]]。但是我在 redis API 中找不到这样做的方法,这就是我在这里问这个问题的原因。

最佳答案

我会将整个结构存储为 JSON,并以 JSON 读取它。这很简单且易于维护。

Redis 存储列表

object MyJacksonMapper extends JacksonMapper
val jsonListBuffer= MyJacksonMapper.serializeJson(myListBuffer)
Dress.up(client).set("listbuffer",jsonListBuffer)

Redis 获取

val json = Dress.up(client).get("listbuffer") 
val myNewObject = MyJacksonMapper.deserializeJson[ListBuffer](json)

关于scala - 使用 Redis 存储 ListBuffer[List[Double]],我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33756073/

相关文章:

java - 从 Spring 框架迁移到 Play 框架 (Scala)

Spring OAuth2 Redis 客户端详细信息

Redis 在 Windows7 上不作为 Windows 服务启动

java - 绝地武士:破管

用于将字符串转换为元组的正则表达式

java - 幕后的 Groovy、Scala 和 Java

scala - Spark 多类分类示例

python - 如果从数据库中删除相关对象,为什么 Redis 会删除对象中的关系?

spring - @Cacheable 标签在 Spring 上的 JUnit 测试期间似乎被忽略

redis - 某些 JedisCommands 之间有什么区别,它们在功能上似乎等同于 java.lang.String 类