Redis的字典数据结构跟Java的HashMap一样,也是数组+链表结构,数组是hash的位置,hash碰撞的值保存到链表种。但是跟HashMap不同的是Redis字典存储的值都是字符串类型的,而HashMap存储的值是所有数据类型

常见操作

>hset user name mango
(ingeter)1
>hmset user age 18 gender "男"OK
>hlen user(ingeter)3>hget user name"mango">hgetall user"name""mango""age""18""gender""男"

当然我们之前说过字典里面的value只能保存string,我们知道字符串类型是可以计数的,字典里面的计数命令是hincrby和incr使用方式一样。

>hincrby user age 1
(integer)18

在这里我们不禁的想起一个事情,我们在存储一个对象的时候是使用字符串保存json,还是用字典保存在容器里面呢?这里我们想明白一个事情就是,保存在字符串的数据每次获取的时候都是获取所有的字段,有时候我们只想获取对象的某个字段这里最好是使用字典存储,因为字典是可以返回某个字段的值,相对于获取整个对象来说还是相对节约网络流量的。

那么字典我们知道,当链表的数据超过最大的链表数或者hash数组满了的时候,这个字典会进行扩容。那么在Java中HashMap是通过复制一份新的空间然后遍历整个原表重新存储到新的表里。

但是在redis不同,如果我们进行复制的话就会占用资源堵塞其他的操作,那么我们Redis字典是如何处理的呢?

在Redis中我们有一种名叫“渐进式”的操作,啥意思?就是我们在rehash的时候会创建一个新的字典,查询时会同时查询两个hash结构,然后在后续的定时任务以及hash操作指令中,循序渐进地将旧hash的内容一点点地迁移到新的hash结构中。当搬迁完成了,就会使用新的 hash 结构取而代之。

值得注意的是:当移除容器最后一个元素时,该数据结构会被删除,此时内存被回收。

一名正在抢救的coder

笔名:mangolove

CSDN地址:https://blog.csdn.net/mango_love

GitHub地址:https://github.com/mangoloveYu

Redis-字典(hash)基础相关推荐

  1. 单线程照样飞起 | redis字典快速映射+hash釜底抽薪+渐进式rehash

    前言 相信你一定使用过新华字典吧!小时候不会读的字都是通过字典去查找的.在Redis中也存在相同功能叫做字典又称为符号表!是一种保存键值对的抽象数据结构 本篇仍然定位在[redis前传]系列中,因为本 ...

  2. Redis数据结构为字典Hash 实践 之 系统数据字典实时触发缓存存储

    一.项目用redis-learn,文章参考 Hash底层存储数据的方式确实跟其他数据结构有点不同,其他数据结构几乎都是:Key-Value的存储,而Hash则是:Key – [Field-Value] ...

  3. Redis数据结构为字典Hash 的 存储、获取、删除等的操作

    一.项目用redis-learn,文章参考 Hash底层存储数据的方式确实跟其他数据结构有点不同,其他数据结构几乎都是:Key-Value的存储,而Hash则是:Key – [Field-Value] ...

  4. Redis学习笔记①基础篇_Redis快速入门

    若文章内容或图片失效,请留言反馈.部分素材来自网络,若不小心影响到您的利益,请联系博主删除. 资料链接:https://pan.baidu.com/s/1189u6u4icQYHg_9_7ovWmA( ...

  5. Redis之Hash数据结构

    0.前言 redis是KV型的内存数据库, 数据库存储的核心就是Hash表, 我们执行select命令选择一个存储的db之后, 所有的操作都是以hash表为基础的, 下面会分析下redis的hash数 ...

  6. 跋山涉水——深入 Redis 字典遍历

    Redis 字典的遍历过程逻辑比较复杂,互联网上对这一块的分析讲解非常少.我也花了不少时间对源码的细节进行了整理,将我个人对字典遍历逻辑的理解呈现给各位读者.也许读者们对字典的遍历过程有比我更好的理解 ...

  7. 【《Redis深度历险》读书笔记(1)】基础:万丈高楼平地起 ——Redis 5种基础数据结构

    [时间]2021.11.16 [题目][<Redis深度历险>读书笔记(1)]基础:万丈高楼平地起 --Redis 基础数据结构 本栏目是<Redis深度历险:核心原理和应用实践&g ...

  8. 系统性详解Redis操作Hash类型数据(带源码分析及测试结果)

    1 缘起 系统讲解Redis的Hash类型CURD, 帮助学习者系统且准确学习Hash数据操作, 逐步养成测试的好习惯, 本文较长,Hash的操作比较多,请耐心看, 既可以集中时间看,亦可以碎片时间学 ...

  9. Redis学习之基础知识普及

    Redis学习之基础知识普及 1. Redis安装(单机) 2.Redis基本数据结构 3.Redis常用命令 3.1.Redis 键(key) 3.2.Redis 字符串(String) 3.3.R ...

  10. Redis进阶教程—基础篇-叶向阳-专题视频课程

    Redis进阶教程-基础篇-217人已学习 课程介绍         该系列教程涵盖了redis的方方面面,大亮点是实战经验分享总结.系列视频包含Redis基础篇.Redis提升篇.从零编写Redis ...

最新文章

  1. Mysql my.cnf配置文件记录
  2. C++ const对成员函数的修饰 及 取地址及const取地址操作符重载
  3. 机器学习 Machine Learning中正则化的学习笔记~
  4. 万人云峰会DevSecOps论坛:数字化浪潮下,安全开发与运维该如何破局?
  5. spring boot组件_Spring Boot Framework的关键组件和内部
  6. Python读取指定文件夹下指定类型数据的文件名并保存到TXT文件中
  7. 关于 LimitedConcurrencyLevelTaskScheduler 的疑惑
  8. PS钢笔工具快速删除一片区域
  9. linux系统用虚拟光驱装win7,虚拟光驱安装win7系统步骤
  10. 充分统计(sufficient statistic) 理解
  11. 巨潮网怎么下载年报_如何下载A股上市公司EXCEL财务报表
  12. MATLAB突然打不开,窗口闪一下就退了,一种亲试解决方法:
  13. workbook对象需要关闭_jxl读取excel需要关闭Workbook?
  14. oracle rac实现,炼数成金Oracle 12C RAC集群原理与管理实战 16课
  15. MySQL-限制结果-LIMIT(limit)
  16. c oracle udt,c#调用Oracle UDT自定义结构数组类型源代码
  17. repo下载安卓源码记录
  18. java tif切割成瓦片_将图片切割成瓦片图-(算法+实现)
  19. android 7.0新特性
  20. android 打印机 sdk,通过WIFI使用Brother SDK进行Android打印(ERROR_WR...

热门文章

  1. windows route netstat arp命令
  2. OSI七层模型都是什么?
  3. LeetCode 633 平方数之和
  4. 657. 机器人能否返回原点
  5. Ubuntu设置开机启动
  6. Python黑客编程3网络数据监听和过滤
  7. python版:装饰器模式
  8. piblog 0.1
  9. MVC初学 - The type or namespace name 'DbContext' could not be found
  10. .net 反射调用私有变量