我想在Redis中使用Scala存储一组Ints
我有这段代码
val redis = new RedisClient("localhost", 6379)
val mySet = Set(4,5,6,7,8)
redis.set("myKey", mySet)
redis.get("myKey")
它返回一个String:
res1: Option[String] = Some(Set(5, 6, 7, 8, 4))
如何以有效的方式执行redis存储我的设置并返回它而不是String?
答案 0 :(得分:1)
如果您想提高效率,请对集合使用Redis命令:SADD / SMEMBERS。您使用GET / SET,它们是 string 命令,这意味着它们接受并返回字符串。
此外,我不熟悉Scala驱动程序,但我怀疑它的SMEMBERS实现将返回一个数组/字符串集,即使您将值设置为整数。这是因为Redis协议是基于文本的,而所有都是作为字符串传递的。话虽如此,scala驱动程序可能会变得聪明并尝试为您转换值,我不知道。但如果你得到字符串,不要感到惊讶。
答案 1 :(得分:1)
SET / GET用于在redis中设置和获取字符串。如果您正在使用
val mySet = Set(4,5,6,7,8)
redis.set("myKey", mySet)
然后redis将接受“myset”变量中的值作为字符串类型。 如果你想存储一个集然后使用以下命令,你需要单独给出set的值,而不是在变量中(我的方式)
redis.SADD("myKey",4,5,6,7)
从redis获取集合的值
redis.SMEMBERS("myKey")
如果使用
,效率会更高val redis = new RedisClientPool("localhost", 6379)
而不是
val redis = new RedisClient("localhost", 6379)