您当前的位置: 首页 >  数据结构

陈橙橙丶

暂无认证

  • 2浏览

    0关注

    107博文

    0收益

  • 0浏览

    0点赞

    0打赏

    0留言

私信
关注
热门博文

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

陈橙橙丶 发布时间:2021-05-28 17:46:59 ,浏览量:2

本系列会持续输出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集群架构下不适合大规模使用

关注
打赏
1648473527
查看更多评论
立即登录/注册

微信扫码登录

0.0384s