【Redis】Hash类型介绍

【Redis】Hash类型介绍

目录

一、简介

在 Redis 中,哈希类型是指值本⾝⼜是⼀个键值对结构,形如 key = “key”,value = { { field1, value1 }, …, {fieldN, valueN} },在Redis中为了与key - value作区分,将Hash类型键值对结构表示为filed - value。

String与Hash对比图:

二、相关命令

2.1 hset 和 hget

hset: 设置 hash 中指定的字段(field)的值(value)。

语法:hset key field value [field value ...]
命令有效版本:2.0.0 之后

时间复杂度:插⼊⼀组 field 为 O(1), 插⼊ N 组 field 为 O(N)
返回值:添加的字段的个数。

也可以当修改字段的效果:

hget:获取 hash 中指定字段的值。

语法:hget key filed

命令有效版本:2.0.0 之后

时间复杂度:O(1)
返回值:字段对应的值或者 nil。

2.2 hexists

hexists判断 hash 中是否有指定的字段。

语法:hexists key filed

命令有效版本:2.0.0 之后

时间复杂度:O(1)
返回值:1 表⽰存在,0 表⽰不存在。

2.3 hdel

hdel删除 hash 中指定的字段。

语法:hdel key field [field ...]

命令有效版本:2.0.0之后

时间复杂度:删除⼀个元素为 O(1). 删除 N 个元素为 O(N).
返回值:本次操作删除的字段个数。

2.4 hkeys

hkeys获取 hash 中的所有字段。

语法:hkeys key

命令有效版本:2.0.0 之后

时间复杂度:O(N), N 为 field 的个数.
返回值:字段列表。

2.5 hvals

hvals 获取 hash 中的所有的值。

语法:hvals key

命令有效版本:2.0.0 之后

时间复杂度:O(N), N 为 field 的个数.
返回值:Hash所有value列表。

2.6 hgetall

hgetall获取 hash 中的所有的字段和值。

语法:hgetall key

命令有效版本:2.0.0 之后

时间复杂度:O(N), N 为 field 的个数.
返回值:Hash所有字段和对应的值。

2.7 hmget

hmget⼀次获取 hash 中多个字段的值。

hmget key field [field ...]

命令有效版本:2.0.0 之后

时间复杂度:只查询⼀个元素为 O(1), 查询多个元素为 O(N), N 为查询元素个数.
返回值:字段对应的值或者 nil。

2.8 hlen

hlen获取 hash 中的所有字段的个数。

语法:hlen key

命令有效版本:2.0.0 之后

时间复杂度:O(1)
返回值:字段个数。

2.9 hsetnx

hsetnx在字段不存在的情况下,设置 hash 中的字段和值。

语法:hsetnx key field value

命令有效版本:2.0.0 之后

时间复杂度:O(1)
返回值:1表⽰设置成功,0 表⽰失败。

2.10 hincrby

hincrby将 hash 中字段对应的数值(必须是整数)添加指定的值。

语法: hincrby key field increment

命令有效版本:2.0.0之后

时间复杂度:O(1)
返回值:该字段变化之后的值。

2.11 hincrbyfloat

hincrbyfloathincrby的浮点数版本, 将 hash 中字段对应的数值(可以是整数和浮点数)添加指定的值。

语法: hincrbyfloat key field increment

命令有效版本:2.6.0之后

时间复杂度:O(1)
返回值:该字段变化之后的值。

2.12 小结

命令执⾏效果时间复杂度
hset key field value设置值O(1)
hget key field获取值O(1)
hdel key field [field …]删除 fieldO(k), k 是 field 个数
hlen key计算 field 个数O(1)
hgetall key获取所有的 field-valueO(k), k 是 field 个数
hmget key field [field …]批量获取 field-valueO(k), k 是 field 个数
hmset key field value [field value …]批量获取 field-valueO(k), k 是 field 个数
hexists key field判断 field 是否存在O(1)
hkeys key获取所有的 fieldO(k), k 是 field 个数
hvals key获取所有的 valueO(k), k 是 field 个数
hsetnx key field value设置值,但必须在 field 不存在时才能设置成功O(1)
hincrby key field n对应 field-value +nO(1)
hincrbyfloat key field n对应 field-value +nO(1)
hstrlen key field计算 value 的字符串⻓度O(1)

三、编码方式

哈希的内部编码有两种:

  • ziplist(压缩列表):当哈希类型元素个数⼩于 hash-max-ziplist-entries 配置(默认 512 个)、同时所有值都⼩于 hash-max-ziplist-value 配置(默认 64 字节)时,Redis 会使⽤ ziplist 作为哈希的内部实现,ziplist 使⽤更加紧凑的结构实现多个元素的连续存储,所以在节省内存⽅⾯⽐ hashtable 更加优秀。
  • hashtable(哈希表):当哈希类型⽆法满⾜ ziplist 的条件时,Redis 会使⽤ hashtable 作为哈希的内部实现,因为此时 ziplist 的读写效率会下降,⽽ hashtable 的读写时间复杂度为 O(1)。

四、应用场景

4.1 作为缓存

存储结构化的数据的时候,使用 hash 更加合适。

使用hash表示:

Read more

idea-claude-code-gui——Atomgit平台上的新玩具-不降智版本

idea-claude-code-gui——Atomgit平台上的新玩具-不降智版本

开源地址 gitcode:https://gitcode.com/zhukunpenglinyutong/idea-claude-code-gui github:https://github.com/zhukunpenglinyutong/idea-claude-code-gui  请留下你的star 目录 开源地址 核心价值 使用效果 安装与使用 具体配置 账号注册与登录 创建APIKey 配置操作 配置APIKey 效果测试 难度测试 模型show 额外总结 一、插件核心信息 二、安装与配置流程 三、功能测试效果 四、适用场景 核心价值 为开发者提供可视化操作界面,集成 Claude Code 和 OpenAI Codex 双 AI 工具,助力 AI 辅助编程,

By Ne0inhk
如何在VS Code中安装GitHub Copilot进行AI编程

如何在VS Code中安装GitHub Copilot进行AI编程

本文教您轻松在VS Code中玩转GitHub Copilot:从安装认证到实战网页开发,5分钟解锁AI编程神器,还能自由切换模型、实时调试代码! 在Visual Studio Code中搭建GitHub Copilot编程环境需要经过几个关键步骤,以下是详细指南: 环境准备阶段 1. 安装最新版VS Code(当前版本≥1.85)官网下载地址:https://code.visualstudio.com/ 2. 拥有有效的GitHub账户(建议启用双重验证) 注册地址:https://github.com/ 3. 稳定的网络连接(Copilot需实时云端交互) 安装流程 1、安装VS Code后,选择”Use All features with Copilot for free”。如果已经安装VS Code,可以打开VS Code扩展市场(

By Ne0inhk
开源智能体搭建平台MaxKB4j 技术文档

开源智能体搭建平台MaxKB4j 技术文档

MaxKB4j 技术文档 项目概述 MaxKB4j (Max Knowledge Base for Java) 是一个基于 Java/Spring Boot 和 LangChain4j 构建的开源的 RAG(检索增强生成)知识库和 LLM 工作流平台,支持多模型集成、可视化工作流编排、知识库问答和多模态能力,专为构建企业级智能问答系统而设计。 核心特性 * 开箱即用的知识库问答: 支持上传本地文档或自动抓取网页内容,自动完成文本分块 → 向量化 → 向量数据库存储 → RAG 流程构建 * 模型无关的灵活集成: 支持多种主流大语言模型(OpenAI、Claude、Gemini、DeepSeek、Qwen、Ollama 等) * 可视化工作流编排: 内置低代码 AI 工作流引擎,支持条件分支、函数调用、多轮对话记忆 * MCP

By Ne0inhk
VLM Unlearning 有关论文阅读总结与梳理

VLM Unlearning 有关论文阅读总结与梳理

文章目录 目录 前言 一、什么是 Unlearning 二、AUVIC 三、Neuron Pruning 四、 Neuron Path Editing 五、 MLLM Eraser 前言 本文整理了当前多模态大模型(VLM)中常见的 Unlearning 技术路线,主要包括: * AUVIC * Neuron Pruning * Neuron Path Editing * MLLM Eraser 这些方法的核心目标都是: 让模型“遗忘”指定知识,同时尽量不影响其它知识。 一、什么是 Unlearning 在多模态大模型(Vision-Language Model / VLA)中,我们经常需要: * 删除隐私数据 * 移除不安全知识 * 删除特定人物或敏感概念

By Ne0inhk