Redis常用操作及应用(二)

一、Hash结构

1、常用操作

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

2、理解

1)HSET key field value

将哈希表 key 中的域 field 的值设为 value 。

如果 key 不存在,一个新的哈希表被创建并进行 HSET 操作。

如果域 field 已经存在于哈希表中,旧值将被覆盖。

redis> HSET website google "www.g.cn"       # 设置一个新域
(integer) 1
redis> HSET website google "www.google.com" # 覆盖一个旧域
(integer) 0

2)HSETNX key field value

将哈希表 key 中的域 field 的值设置为 value ,当且仅当域 field 不存在。

若域 field 已经存在,该操作无效。

如果 key 不存在,一个新哈希表被创建并执行 HSETNX 命令。

redis> HSETNX nosql key-value-store redis
(integer) 1
redis> HSETNX nosql key-value-store redis       # 操作无效,域 key-value-store 已存在
(integer) 0

3)HGET key field

返回哈希表 key 中给定域 field 的值。

# 域存在
redis> HSET site redis redis.com
(integer) 1
redis> HGET site redis
"redis.com"
# 域不存在
redis> HGET site mysql
(nil)

4)HDEL key field [field …]

删除哈希表 key 中的一个或多个指定域,不存在的域将被忽略。

# 测试数据
redis> HGETALL abbr
1) "a"
2) "apple"
3) "b"
4) "banana"
5) "c"
6) "cat"
7) "d"
8) "dog"
# 删除单个域
redis> HDEL abbr a
(integer) 1
# 删除不存在的域
redis> HDEL abbr not-exists-field
(integer) 0
# 删除多个域
redis> HDEL abbr b c
(integer) 2
redis> HGETALL abbr
1) "d"
2) "dog"

5)HLEN key

返回哈希表 key 中域的数量。

redis> HSET db redis redis.com
(integer) 1
redis> HSET db mysql mysql.com
(integer) 1
redis> HLEN db
(integer) 2
redis> HSET db mongodb mongodb.org
(integer) 1
redis> HLEN db
(integer) 3

6)HGETALL key

返回哈希表 key 中,所有的域和值。

在返回值里,紧跟每个域名(field name)之后是域的值(value),所以返回值的长度是哈希表大小的两倍。

redis> HSET people jack "Jack Sparrow"
(integer) 1
redis> HSET people gump "Forrest Gump"
(integer) 1
redis> HGETALL people
1) "jack"          # 域
2) "Jack Sparrow"  # 值
3) "gump"
4) "Forrest Gump"

二、应用场景

1、对象缓存

HMSET  user  {userId}:name  zhuge  {userId}:balance  1888
HMSET  user  1:name  zhuge  1:balance  1888
HMGET  user  1:name  1:balance  

2、电商购物车

1)以用户id为key
2)商品id为field
3)商品数量为value

4)购物车操作
a.添加商品->hset cart:1001 10088 1
b.增加数量->hincrby cart:1001 10088 1
c.商品总数->hlen cart:1001
d.删除商品->hdel cart:1001 10088
e.获取购物车所有商品->hgetall cart:1001

三、优缺点

1、优点

1)同类数据归类整合储存,方便数据管理

2)相比string操作消耗内存与cpu更小

3)相比string储存更节省空间

2、缺点

1)过期功能不能使用在field上,只能用在key上

2) Redis集群架构下不适合大规模使用

点11)1)过期功能不能使用在field上,只能用在key上2) Redis集群架构下不适合大规模使用过期功能不能使用在field上,只能用在key上2) Redis集群架构下不适合大规模使用

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.hqwc.cn/news/225123.html

如若内容造成侵权/违法违规/事实不符,请联系编程知识网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

黄金比例设计软件Goldie App mac中文版介绍

Goldie App mac是一款测量可视化黄金比例的工具。专门为设计师打造,可以帮助他们在Mac上测量和可视化黄金比例,从而轻松创建出完美、平衡的设计。 Goldie App mac体积小巧,可以驻留在系统的菜单栏之上,随时提供给用户调用。 拥有独…

【外汇天眼】概率之道:规则交易背后的心态与风险控制

交易的结果,无外乎盈利和亏损。 对于这些结果,我们的心态管理很重要、很重要! 这涉及到“保住江山”和“东山再起”。 先来说说交易盈利的结果 当一个人能够稳定盈利的时候,很容易产生自我麻痹、忘乎所以的飘飘然心态&#xff0…

Vatee万腾的数字化创新力:Vatee科技征途的独特探险

Vatee万腾,作为数字化创新的引领者,一直致力于在科技征途中探索独特的路径。Vatee万腾以其强大的数字化创新力,勇攀科技的高峰,为行业树立了独特的典范。 在科技征途中,Vatee万腾展现了卓越的数字化创新力。Vatee万腾通…

C语言—一维数组

一、一维数组的创建 int arr1[10];char arr2[10];flout arr3[1];double arr4[20]; 数组创建,“[ ]”中要给一个常量,不能使用变量 二、一维数组初始化 int arr1[10]{1,2,3}; //不完全初始化int arr2[4]{3,4,5,6}; //完全初始化char arr3[4]{a,b,99,d};cha…

Ubuntu 22.04安装Go 1.21.4编译器

lsb_release -r看到操作系统版本是22.04,uname -r看到内核版本是uname -r。 sudo wget https://studygolang.com/dl/golang/go1.21.4.linux-amd64.tar.gz下载编译器。 sudo tar -zxf go1.21.4.linux-amd64.tar.gz -C /goroot将文件解压到/goroot目录下,这个命令…

15 网关实战: 微服务集成Swagger实现在线文档

上节介绍了网关层面聚合API文档,通过网关的路由信息找到了各个服务的请求地址,这节讲一下微服务如何集成Swagger。 网关的API文档默认调用的是微服务的**/v2/api-docs**这个接口获取API详细信息,比如文章服务的URL:http://localhost:9000/blog-article/v2/api-docs,返回信…

elementui的table合并列,三个一组

<el-table :span-method"objectSpanMethod" :cell-style"iCellStyle" :data"tableData" height"63vh" border style"width: 100%; margin-top: 6px"><el-table-column type"index" label"序号"…

商城免费搭建之java商城 鸿鹄云商 B2B2C产品概述

【B2B2C平台】&#xff0c;以传统电商行业为基石&#xff0c;鸿鹄云商支持“商家入驻平台自营”多运营模式&#xff0c;积极打造“全新市场&#xff0c;全新 模式”企业级B2B2C电商平台&#xff0c;致力干助力各行/互联网创业腾飞并获取更多的收益。从消费者出发&#xff0c;助…

蓝桥杯day01——根据给定数字划分数组

题目描述 给你一个下标从 0 开始的整数数组 nums 和一个整数 pivot 。请你将 nums 重新排列&#xff0c;使得以下条件均成立&#xff1a; 所有小于 pivot 的元素都出现在所有大于 pivot 的元素 之前 。所有等于 pivot 的元素都出现在小于和大于 pivot 的元素 中间 。小于 piv…

如何通过内网穿透实现公网远程ssh连接kali系统

文章目录 1. 启动kali ssh 服务2. kali 安装cpolar 内网穿透3. 配置kali ssh公网地址4. 远程连接5. 固定连接SSH公网地址6. SSH固定地址连接测试 简单几步通过[cpolar 内网穿透](cpolar官网-安全的内网穿透工具 | 无需公网ip | 远程访问 | 搭建网站)软件实现ssh远程连接kali 1…

2023-11-26 LeetCode每日一题(统计子串中的唯一字符)

2023-11-26每日一题 一、题目编号 828. 统计子串中的唯一字符二、题目链接 点击跳转到题目位置 三、题目描述 我们定义了一个函数 countUniqueChars(s) 来统计字符串 s 中的唯一字符&#xff0c;并返回唯一字符的个数。 例如&#xff1a;s “LEETCODE” &#xff0c;则其…

Python爬虫之代理IP与访问控制

目录 前言 一、代理IP 1.1.使用代理IP的步骤 1.2.寻找可用的代理IP 1.3.设置代理IP 1.4.验证代理IP的可用性 二、访问控制 2.1.遵守Robots协议 2.2.设置访问时间间隔 2.3.多线程爬取 总结 前言 在进行Python爬虫过程中&#xff0c;代理IP与访问控制是我们经常需要处…