Redis专题(三):核心数据结构以及应用场景(Hash)

本文详细介绍了Redis中的Hash数据结构及其常用命令,如HSET、HGET、HMSET等,通过实例展示了如何存储和操作哈希表。文章还探讨了Hash在对象存储和电商购物车场景中的应用,以及其内存和CPU消耗的优势。同时,指出了Hash结构的局限性,如无法为field设置过期时间。最后,讨论了在Redis集群中大规模使用Hash的不适宜性。
摘要由CSDN通过智能技术生成

本系列会持续输出Redis相关的知识整理,提升自己的同时希望能帮助到有需要的朋友,持续输出…持续输出…持续输出…

目录传送

本篇文章会简单整理一下Redis核心数据结构和基本使用。

在这里插入图片描述
Hash数据常用命令

HSET key field value //存储一个哈希表key的键值
HSETNX key field value //存储一个不存在的哈希表key的键值
HMSET key field value [field value …] //在一个哈希表key中存储多个键值对
HGET key field //获取哈希表key对应的field键值
HMGET key field [field …] //批量获取哈希表key中多个field键值
HDEL key field [field …] //删除哈希表key中的field键值
HLEN key //返回哈希表key中field的数量
HGETALL key //返回哈希表key中所有的键值
HINCRBY key field increment //为哈希表key中field键的值加上增量increment

127.0.0.1:6379> flushall
OK
127.0.0.1:6379> hset phone price 5999
(integer) 1
127.0.0.1:6379> hsetnx phone price 5888
(integer) 0
127.0.0.1:6379> hsetnx phonePlus price 5888
(integer) 1
127.0.0.1:6379> hmset product name phone12 price 9999 color black
OK
127.0.0.1:6379> hget phone price
"5999"
127.0.0.1:6379> hmget product name price color
1) "phone12"
2) "9999"
3) "black"
127.0.0.1:6379> hdel product color
(integer) 1
127.0.0.1:6379> hlen product
(integer) 2
127.0.0.1:6379> hgetall product
1) "name"
2) "phone12"
3) "price"
4) "9999"
127.0.0.1:6379> hincrby product price 1000
(integer) 10999
127.0.0.1:6379>

使用场景

  • 对象存储

HMSET user name ccc age 18
HMSET user name zs age19
HMGET user name age

在这里插入图片描述

  • 电商购物车
    1)以用户id为key
    2)商品id为field
    3)商品数量为value
    在这里插入图片描述

场景:

我们在购物车页面时我们会频繁的进行操作,并且用户可能在操作一半强制关闭进程,也就是说我们需要在用户每一次操作时都需要对此进行持久化操作,如果此时我们使用数据库进行该操作,我们会大量的频繁与数据交互,-严重会导致数据库崩溃,这里我们该类型对此进行操作,并主动或被动进行持久化操作。只需要一次数据库交互即可。

操作:

127.0.0.1:6379> hset userId:1 productId:1 1  //添加商品
(integer) 1
127.0.0.1:6379> hincrby userId:1 productId:1 1 //增加数量
(integer) 2
127.0.0.1:6379> hlen userId:1 // 获取商品数量
(integer) 1
127.0.0.1:6379> hdel userId:1 productId:1 //删除商品
(integer) 1
127.0.0.1:6379> hgetall userId:1 //获取购物车商品数量
(empty list or set)
127.0.0.1:6379>

Hash结构的优缺点

  • 优点

    1)同类数据归类整合储存,方便数据管理
    2)相比string操作消耗内存与cpu更小
    3)相比string储存更节省空间

  • 缺点

    1)过期功能不能使用在field上,只能用在key上,我们无法对属性进行设置过期时间,只能对该key(对象)使用
    2)Redis集群架构下不适合大规模使用

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

陈橙橙丶

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值