我们都知道redis支持5种数据类型的存储,今天主要来说一下hash散列的使用:
String: 字符串
Hash: 散列
List: 列表
Set: 集合
Sorted Set: 有序集合
Redis hash是一个string类型的field和value的映射表,hash特别适合用于存储对象。
使用场景:当你需要往redis里面保存一些字段,第二次如果有新增的字段就添加进去,已经有的字段如果值发生了变化,就更新,或者需要判断某个字段是否已经存在的时候,用hash结构就再合适不过了,直接看下面的代码:
package test import net.sf.json.JSONObject import redis.clients.jedis.Jedis import scala.collection.JavaConverters._ object scalaMap { def main(args: Array[String]): Unit = { val jedis = new Jedis("10.200.10.73", 6379) var map = scala.collection.mutable.Map[String, String]() map += ("name" -> "jason") map += ("age" -> "800") map += ("sex" -> "男") jedis.hmset("person", map.asJava) var map_new = scala.collection.mutable.Map[String, String]() map_new += ("name" -> "jason") map_new += ("sex" -> "女") map_new += ("city" -> "beijing") jedis.hmset("person", map_new.asJava) val isExist = jedis.hmget("person", "price", "name", "age", "yoo")//获取某几个field的值;返回的是一个list; println(isExist) //输出:[256, jason, 800, null] println(isExist.get(1)) //获取对应的值;输出jason; jedis.hdel("person","name","age") //删除某个或多个field val person = jedis.hgetAll("person") //输出:{name=jason, city=beijing, age=800, sex=女} val json = JSONObject.fromObject(person) println(json) //输出:{"sex":"女","city":"beijing"} jedis.hset("person","heigh","10000") //新增加field val add_persion = jedis.hgetAll("person") println(add_persion) //输出:{heigh=10000, city=beijing, sex=女} } }
Redis Hmget 命令用于返回哈希表中,一个或多个给定字段的值。
如果指定的字段不存在于哈希表,那么返回一个 null 值。
是不是发现redis的hash结构很方便呢.大家要根据自己的场景来选择具体使用redis的哪种存储结构.