【Redis实战】散列类型(Hash)

本文涉及的产品
云数据库 Tair(兼容Redis),内存型 2GB
Redis 开源版,标准版 2GB
推荐场景:
搭建游戏排行榜
简介: Redis的散列类型(Hash)

1、赋值与取值(HSET)

  HSET命令用来给字段赋值,而HGET命令用来获得字段的值。用法如下:

127.0.0.1:6379> HSET car price 500
(integer) 1
127.0.0.1:6379> HSET car name BMW
(integer) 1
127.0.0.1:6379> HGET car name
"BMW"
127.0.0.1:6379> HSET car price 600
(integer) 0

  HSET命令的方便之处在于不区分插入和更新操作,这意味着修改数据时不用事先判断字段是否存在,来决定要执行的是插入操作(update)还是更新操作(insert)。当执行的是插入操作时(即之前字段不存在)HSET命令会返回1,当执行的是更新操作时(即之前的字段已经存在)HSET命令会返回0。更进一步,当键本身不存在时,HSET命令还会自动建立它。

2、同时设置多个字段(HMSET)

127.0.0.1:6379> HMSET car price 500 name BMW
OK
127.0.0.1:6379> HMGET car price name
1) "500"
2) "BMW"

3、判断字段是否存在(HEXISTS)

  HEXISTS命令用来判断一个字段是否存在。如果存在则返回1,否则返回0。

127.0.0.1:6379> HEXISTS car model
(integer) 0
127.0.0.1:6379> HSET car model C200
(integer) 1
127.0.0.1:6379> HEXISTS car model
(integer) 1

4、当字段不存在时赋值(HSETNX)

  HSETNX命令和HSET命令类似,区别在于如果字段已经存在,HSENX命令将不执行任何操作。其实现可以表示为如下伪代码:

def hsetnx($key,$field,$value)
    $isExists=HEXISTS $key,$field
    if $isExists is 0
        HSET $key,$field,$value
        return 1
    else
        return 0
127.0.0.1:6379> hsetnx car price 600
(integer) 0
127.0.0.1:6379> hget car price
"500"

5、增加数字(HINCRBY)

  散列类型没有HINCR命令,但是可以通过HINCRBY key value 1来实现。

127.0.0.1:6379> HINCRBY person score 90
(integer) 90
127.0.0.1:6379> HGET person score
"90"

6、删除字段(HDEL)

  HDEL命令可以删除一个或多个字段,返回值是被删除的字段个数。

127.0.0.1:6379> HDEL car model
(integer) 1
127.0.0.1:6379> HDEL car model
(integer) 0

7、只获取字段名或字段值(HKEYS)

127.0.0.1:6379> HKEYS car
1) "price"
2) "name"
127.0.0.1:6379> HVALS car
1) "500"
2) "BMW"

8、获取字段数量(HLEN)

127.0.0.1:6379> HLEN car
(integer) 2
相关实践学习
基于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
相关文章
|
2月前
|
NoSQL 安全 测试技术
Redis游戏积分排行榜项目中通义灵码的应用实战
Redis游戏积分排行榜项目中通义灵码的应用实战
63 4
|
2月前
|
存储 NoSQL 算法
Redis地理散列GeoHash
GeoHash作为一种高效的地理位置编码算法,在Redis中得到了很好的支持。通过使用Redis的GeoHash命令,可以方便地进行地理位置的存储、查询和计算。GeoHash在位置存储、附近位置搜索、距离计算和实时定位等场景中有着广泛的应用。掌握GeoHash及其在Redis中的使用方法,可以极大地提高地理位置相关应用的开发效率和性能。
31 5
|
2月前
|
存储 消息中间件 NoSQL
Redis数据结构:List类型全面解析
Redis数据结构——List类型全面解析:存储多个有序的字符串,列表中每个字符串成为元素 Eelement,最多可以存储 2^32-1 个元素。可对列表两端插入(push)和弹出(pop)、获取指定范围的元素列表等,常见命令。 底层数据结构:3.2版本之前,底层采用**压缩链表ZipList**和**双向链表LinkedList**;3.2版本之后,底层数据结构为**快速链表QuickList** 列表是一种比较灵活的数据结构,可以充当栈、队列、阻塞队列,在实际开发中有很多应用场景。
|
3月前
|
NoSQL 关系型数据库 MySQL
MySQL与Redis协同作战:优化百万数据查询的实战经验
【10月更文挑战第13天】 在处理大规模数据集时,传统的关系型数据库如MySQL可能会遇到性能瓶颈。为了提升数据处理的效率,我们可以结合使用MySQL和Redis,利用两者的优势来优化数据查询。本文将分享一次实战经验,探讨如何通过MySQL与Redis的协同工作来优化百万级数据统计。
107 5
|
3月前
|
存储 NoSQL Redis
Redis 哈希(Hash)
10月更文挑战第16天
51 1
|
3月前
|
缓存 NoSQL Java
Spring Boot与Redis:整合与实战
【10月更文挑战第15天】本文介绍了如何在Spring Boot项目中整合Redis,通过一个电商商品推荐系统的案例,详细展示了从添加依赖、配置连接信息到创建配置类的具体步骤。实战部分演示了如何利用Redis缓存提高系统响应速度,减少数据库访问压力,从而提升用户体验。
167 2
|
3月前
|
消息中间件 存储 监控
redis 的List类型 实现 排行榜
【10月更文挑战第8天】
50 2
|
3月前
|
存储 NoSQL Redis
redis-set类型
【10月更文挑战第6天】
57 1
|
3月前
|
消息中间件 分布式计算 NoSQL
大数据-41 Redis 类型集合(2) bitmap位操作 geohash空间计算 stream持久化消息队列 Z阶曲线 Base32编码
大数据-41 Redis 类型集合(2) bitmap位操作 geohash空间计算 stream持久化消息队列 Z阶曲线 Base32编码
32 2
|
2月前
|
存储 NoSQL 关系型数据库
Redis的ZSet底层数据结构,ZSet类型全面解析
Redis的ZSet底层数据结构,ZSet类型全面解析;应用场景、底层结构、常用命令;压缩列表ZipList、跳表SkipList;B+树与跳表对比,MySQL为什么使用B+树;ZSet为什么用跳表,而不是B+树、红黑树、二叉树