Redis-字典(hash)基础
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)基础相关推荐
- 单线程照样飞起 | redis字典快速映射+hash釜底抽薪+渐进式rehash
前言 相信你一定使用过新华字典吧!小时候不会读的字都是通过字典去查找的.在Redis中也存在相同功能叫做字典又称为符号表!是一种保存键值对的抽象数据结构 本篇仍然定位在[redis前传]系列中,因为本 ...
- Redis数据结构为字典Hash 实践 之 系统数据字典实时触发缓存存储
一.项目用redis-learn,文章参考 Hash底层存储数据的方式确实跟其他数据结构有点不同,其他数据结构几乎都是:Key-Value的存储,而Hash则是:Key – [Field-Value] ...
- Redis数据结构为字典Hash 的 存储、获取、删除等的操作
一.项目用redis-learn,文章参考 Hash底层存储数据的方式确实跟其他数据结构有点不同,其他数据结构几乎都是:Key-Value的存储,而Hash则是:Key – [Field-Value] ...
- Redis学习笔记①基础篇_Redis快速入门
若文章内容或图片失效,请留言反馈.部分素材来自网络,若不小心影响到您的利益,请联系博主删除. 资料链接:https://pan.baidu.com/s/1189u6u4icQYHg_9_7ovWmA( ...
- Redis之Hash数据结构
0.前言 redis是KV型的内存数据库, 数据库存储的核心就是Hash表, 我们执行select命令选择一个存储的db之后, 所有的操作都是以hash表为基础的, 下面会分析下redis的hash数 ...
- 跋山涉水——深入 Redis 字典遍历
Redis 字典的遍历过程逻辑比较复杂,互联网上对这一块的分析讲解非常少.我也花了不少时间对源码的细节进行了整理,将我个人对字典遍历逻辑的理解呈现给各位读者.也许读者们对字典的遍历过程有比我更好的理解 ...
- 【《Redis深度历险》读书笔记(1)】基础:万丈高楼平地起 ——Redis 5种基础数据结构
[时间]2021.11.16 [题目][<Redis深度历险>读书笔记(1)]基础:万丈高楼平地起 --Redis 基础数据结构 本栏目是<Redis深度历险:核心原理和应用实践&g ...
- 系统性详解Redis操作Hash类型数据(带源码分析及测试结果)
1 缘起 系统讲解Redis的Hash类型CURD, 帮助学习者系统且准确学习Hash数据操作, 逐步养成测试的好习惯, 本文较长,Hash的操作比较多,请耐心看, 既可以集中时间看,亦可以碎片时间学 ...
- Redis学习之基础知识普及
Redis学习之基础知识普及 1. Redis安装(单机) 2.Redis基本数据结构 3.Redis常用命令 3.1.Redis 键(key) 3.2.Redis 字符串(String) 3.3.R ...
- Redis进阶教程—基础篇-叶向阳-专题视频课程
Redis进阶教程-基础篇-217人已学习 课程介绍 该系列教程涵盖了redis的方方面面,大亮点是实战经验分享总结.系列视频包含Redis基础篇.Redis提升篇.从零编写Redis ...
最新文章
- Mysql my.cnf配置文件记录
- C++ const对成员函数的修饰 及 取地址及const取地址操作符重载
- 机器学习 Machine Learning中正则化的学习笔记~
- 万人云峰会DevSecOps论坛:数字化浪潮下,安全开发与运维该如何破局?
- spring boot组件_Spring Boot Framework的关键组件和内部
- Python读取指定文件夹下指定类型数据的文件名并保存到TXT文件中
- 关于 LimitedConcurrencyLevelTaskScheduler 的疑惑
- PS钢笔工具快速删除一片区域
- linux系统用虚拟光驱装win7,虚拟光驱安装win7系统步骤
- 充分统计(sufficient statistic) 理解
- 巨潮网怎么下载年报_如何下载A股上市公司EXCEL财务报表
- MATLAB突然打不开,窗口闪一下就退了,一种亲试解决方法:
- workbook对象需要关闭_jxl读取excel需要关闭Workbook?
- oracle rac实现,炼数成金Oracle 12C RAC集群原理与管理实战 16课
- MySQL-限制结果-LIMIT(limit)
- c oracle udt,c#调用Oracle UDT自定义结构数组类型源代码
- repo下载安卓源码记录
- java tif切割成瓦片_将图片切割成瓦片图-(算法+实现)
- android 7.0新特性
- android 打印机 sdk,通过WIFI使用Brother SDK进行Android打印(ERROR_WR...