redis的hash结构用法

本文涉及的产品
云数据库 Redis 版,社区版 2GB
推荐场景:
搭建游戏排行榜
简介: 我们都知道redis支持5种数据类型的存储,今天主要来说一下hash散列的使用:String: 字符串Hash: 散列List: 列表Set: 集合Sorted Set: 有序集合Redis hash是一个string类型的field和value的映射表,hash特别适合用于存储对象。

我们都知道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的哪种存储结构.


相关实践学习
基于Redis实现在线游戏积分排行榜
本场景将介绍如何基于Redis数据库实现在线游戏中的游戏玩家积分排行榜功能。
云数据库 Redis 版使用教程
云数据库Redis版是兼容Redis协议标准的、提供持久化的内存数据库服务,基于高可靠双机热备架构及可无缝扩展的集群架构,满足高读写性能场景及容量需弹性变配的业务需求。 产品详情:https://www.aliyun.com/product/kvstore     ------------------------------------------------------------------------- 阿里云数据库体验:数据库上云实战 开发者云会免费提供一台带自建MySQL的源数据库 ECS 实例和一台目标数据库 RDS实例。跟着指引,您可以一步步实现将ECS自建数据库迁移到目标数据库RDS。 点击下方链接,领取免费ECS&RDS资源,30分钟完成数据库上云实战!https://developer.aliyun.com/adc/scenario/51eefbd1894e42f6bb9acacadd3f9121?spm=a2c6h.13788135.J_3257954370.9.4ba85f24utseFl
相关文章
|
3月前
|
存储 NoSQL Redis
redis中Hash命令的基础操作
redis中Hash命令的基础操作
39 1
|
3月前
|
存储 NoSQL Serverless
Redis数据结构之——hash
Redis数据结构之——hash
|
1月前
|
存储 NoSQL Java
【Redis】1、学习 Redis 的五大基本数据类型【String、Hash、List、Set、SortedSet】
【Redis】1、学习 Redis 的五大基本数据类型【String、Hash、List、Set、SortedSet】
49 0
|
2月前
|
存储 监控 NoSQL
解锁Redis Stream新境界:高级用法大揭秘【二】
解锁Redis Stream新境界:高级用法大揭秘【二】
35 0
|
3月前
|
存储 NoSQL 关系型数据库
深度图解 Redis Hash(散列表)实现原理
深度图解 Redis Hash(散列表)实现原理
41 0
|
3月前
|
存储 NoSQL Java
深入了解 Redis Hash
深入了解 Redis Hash
26 0
|
3月前
|
存储 NoSQL Redis
Redis(三)存储原理与数据模型(hash冲突、渐进式rehash)
Redis(三)存储原理与数据模型(hash冲突、渐进式rehash)
30 0
|
3月前
|
存储 监控 NoSQL
redis7.0源码阅读(二):redis的基本存储结构
redis7.0源码阅读(二):redis的基本存储结构
40 0
|
3月前
|
存储 缓存 算法
Redis进阶-分布式存储 Sequential partitioning & Hash partitioning
Redis进阶-分布式存储 Sequential partitioning & Hash partitioning
38 0
|
3月前
|
存储 消息中间件 缓存
Redis不止能存储字符串,还有List、Set、Hash、Zset,用对了能给你带来哪些优势?
Redis不止能存储字符串,还有List、Set、Hash、Zset,用对了能给你带来哪些优势?