首页 » 网站建设 » phpredis操作hash技巧_作为一名资深轨范员Redis中 Hash的事理你知道吗

phpredis操作hash技巧_作为一名资深轨范员Redis中 Hash的事理你知道吗

访客 2024-11-15 0

扫一扫用手机浏览

文章目录 [+]

基本先容

Hash 也可以用来存储用户信息,和 String 不同的是 Hash 可以对用户信息的每个字段单独存储,String 则须要序列化用户的所有字段后存储.并且 String 须要以全体字符串的形式获取用户,而 hash可以只获取部分数据,从而节约网络流量.不过 hash 内存占用要大于 String,这是 hash 的缺陷.

phpredis操作hash技巧_作为一名资深轨范员Redis中 Hash的事理你知道吗

> hset books java \"大众Effective java\公众(integer) 1> hset books golang \公众concurrency in go\"大众(integer) 1> hget books java\"大众Effective java\"大众> hset user age 17(integer) 1>hincrby user age 1 #单个 key 可以进行计数 和 incr 命令基本同等(integer) 18

Redis 中的 Hash和 Java的 HashMap 更加相似,都是数组+链表的构造.当发生 hash 碰撞时将会把元素追加到链表上.值得把稳的是在 Redis 的 Hash 中 value 只能是字符串.

phpredis操作hash技巧_作为一名资深轨范员Redis中 Hash的事理你知道吗
(图片来自网络侵删)

内部事理

看完基本先容之后,我们先来理解下 hash 的内部构造.第一维是数组,第二维是链表.组成一个 hashtable.

部分源码:

struct dictht { dictEntry table; //entry 数组 long size; //数组长度 long used //数组中的元素个数 ...}struct dictEntry{ void key; //hash 的 key void val; //hash 的 value dictEntry next; //下一个dictEntry 链表构造}

在 Java 中 HashMap 扩容是个很耗时的操作,须要去申请新的数组,为了追求高性能,Redis 采取了 渐进式 rehash 策略.这也是 hash 中最主要的部分。

渐进式 rehash

在 hash 的内部包含了两个hashtable,一样平常情形下只是用一个.如图所示:

在扩容的时候 rehash 策略会保留新旧两个 hashtable 构造,查询时也会同时查询两个 hashtable.Redis会将旧 hashtable 中的内容一点一点的迁移到新的 hashtable 中,当迁移完成时,就会用新的 hashtable 取代之前的.当 hashtable 移除了末了一个元素之后,这个数据构造将会被删除.如图所示:

数据迁居的操作放在 hash 的后续指令中,也便是来自客户端对 hash 的指令操作.一旦客户端后续没有指令操作这个 hash.Redis就会利用定时任务对数据主动迁居.

正常情形下,当 hashtable 中元素的个数即是数组的长度时,就会开始扩容,扩容的新数组是原数组大小的 2 倍.如果 Redis 正在做 bgsave(持久化) 时,可能不会去扩容,由于要减少内存页的过多分离(Copy On Write).但是如果 hashtable 已经非常满了,元素的个数达到了数组长度的 5 倍时,Redis 会逼迫扩容。

当hashtable 中元素逐渐变少时,Redis 会进行缩容来减少空间占用,并且缩容不会受 bgsave 的影响,缩容条件是元素个数少于数组长度的 10%。

须要的Java架构师方面的资料可以关注之后私信哈,回答“资料”领取免费架构视频资料,记得要点赞转发噢!


相关文章

介绍皮肤设置,如何打造理想肌肤状态

随着科技的发展和人们对美的追求,皮肤设置已成为美容护肤的重要一环。如何根据皮肤类型、肤质、年龄等因素进行合理设置,已成为众多爱美人...

网站建设 2025-01-03 阅读1 评论0

介绍盖章制作,传承文化,彰显权威

自古以来,盖章在我国文化中具有重要的地位。从古代的官印、私印到现代的公章、合同章,盖章已成为一种独特的文化符号,承载着丰富的历史内...

网站建设 2025-01-03 阅读1 评论0

介绍监控破坏,技术手段与法律风险并存

随着科技的飞速发展,监控设备已遍布大街小巷,成为维护社会治安的重要手段。一些不法分子为了逃避法律制裁,开始研究如何破坏监控设备。本...

网站建设 2025-01-03 阅读1 评论0

介绍登录不上之谜,技术故障还是人为疏忽

随着互联网的普及,登录已成为人们日常生活中不可或缺的一部分。在享受便捷的登录不上这一问题也困扰着许多用户。本文将深入剖析登录不上之...

网站建设 2025-01-03 阅读1 评论0

介绍电脑键盘调出方法,让操作更高效

随着科技的发展,电脑已经成为了我们日常生活中不可或缺的工具。而电脑键盘,作为电脑输入设备,更是我们与电脑进行交流的桥梁。你是否知道...

网站建设 2025-01-03 阅读1 评论0

介绍磁力链,高效便捷的文件下载利器

在互联网高速发展的今天,文件下载已成为日常生活中不可或缺的一部分。而磁力链作为一种新型的文件下载方式,凭借其高效、便捷的特点,受到...

网站建设 2025-01-03 阅读1 评论0