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

时间:2015-11-17 11:44:14

标签: 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中找到这样做的方法,这就是我在这里提出这个问题的原因。

1 个答案:

答案 0 :(得分:0)

我将整个结构存储为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)