首页 > 数据库 >redis自学(12)Hash

redis自学(12)Hash

时间:2024-03-06 18:03:05浏览次数:22  
标签:编码 12 Hash ZipList redis 默认 Dict hash

Hash

Hash结构与Redis中的Zset非常类似:

l 都是键值存储

l 都需要根据键获取值

l 键必须唯一

区别如下:

l zset的键是member,值是score;hash的键和值都是任意值

l zset要根据score排序,hash则无需排序

因此,Hash底层采用的编码与Zset也基本一致,只需要把排序有关的SkipList去掉即可:

u Hash结构默认采用ZipList编码,用以节省内存。ZipList中相邻的两个entry分别保存field和value

 

 

u 当数据量较大时,Hash结构会转为HT编码,也就是Dict,触发条件有两个:

① ZipList中的元素数量超过了hash-max-ziplist-entries(默认512)

② ZipList中的任意entry大小超过了hash-max-ziplist-value(默认64字节)

 

 

 

加值

 

 

 

 

判断是否存在,不存在新建,新建默认是ZipList编码

 

 

 

 

根据元素大小判断是否需要转换为Dict,不判断数量是因为键的唯一性,不确定数量是否会超过限定值

 

 

添加的同时判断数量是否超过限定值转换为Dict

 

 

标签:编码,12,Hash,ZipList,redis,默认,Dict,hash
From: https://www.cnblogs.com/bulesea/p/18057203

相关文章

  • solution-cf120e
    题解CF120E【PutKnight!】原题我一开始以为这题\(n\)为奇数就是先手赢,偶数就是后手赢没想到还真是这样那么要怎么证明呢?一般地,在一个空棋盘上下出一枚棋,会有8个格子被这颗棋限制:XXXXKXXXX容易看......
  • 问题记录——/etc/pam.d/common-auth 修改后无法登录服务器系统(SuSE 12 SP5)
    背景:公司三级等保问题整改,要求配置登录失败处理功能,服务器系统为suse12SP5,配置方法如下:在/etc/pam.d/common-auth中配置相关参数策略:authrequiredpam_tally2.so onerr=faildeny=5unlock_time=300even_deny_rootroot_unlock_time=10配置连续登录失败5次,普通账户锁定300......
  • 3121008942
    1.软件工程第一次作业这个作业属于哪个课程2021软件工程这个作业要求在哪里<作业要求的链接>这个作业的目标<写上具体方面>其他参考文献.....目录1.软件工程第一次作业2.评估当前的自己2.1个人信息2.2当前值2.2.1专业水平个人爱好的作品3.展望未来3.1阅......
  • CEIWEI CommMonitor 串口监控精灵v12.7 最新版 串口过滤; 串口监控; SerialPort M
    CEIWEICommMonitor串口监控精灵是用于RS232、RS422串口协议、ModbusRTU/ASCII协议过滤监控抓包的专业工具软件程序。CEIWEICommMonitor监控记录和分析系统中的所有串口活动,并不占用串行端口;追踪应用程序或驱动程序开发,串口设备测试和优化等过程中可能出现的问题的理想工具......
  • Redis使用场景以及各个场景中存在的问题和解决办法
    缓存穿透:当查询一个不存在的数据时,存储层并不会将查询不到的数据进行缓存,这就导致了每次查询不存在的数据时,都会访问数据库,访问次数过大就会导致数据库挂掉,这种情况很可能就是遭到了恶意攻击。解决方案一:缓存空数据。查询返回结果为空,并且把空数据进行缓存,实现简单,但是消耗内......
  • Redis(主从复制、读写分离、主从切换)架构
    Redis的集群方案大致有三种:1)rediscluster集群方案;2)master/slave主从方案;3)哨兵模式来进行主从替换以及故障恢复。一、sentinel哨兵模式介绍Sentinel(哨兵)是用于监控redis集群中Master状态的工具,是Redis的高可用性解决方案,sentinel哨兵模式已经被集成在redis2.4之后的版本......
  • 112. 路径总和c
    /***Definitionforabinarytreenode.*structTreeNode{*intval;*structTreeNode*left;*structTreeNode*right;*};*/booljudge(structTreeNode*root,intnow,intsum){now+=root->val;if(!root->left&&......
  • 【Redis】docker redis设置永久密码
    1.进入容器dockerexec-it容器idbash 2.追加密码设置echo"requirepass123456">>/etc/redis/redis.conf 3.退出容器并重启容器exitdockerrestart容器id ......
  • redis数据库
    redis数据库是以键值对的形式构建的关系型数据库案例:redis数据库搭建在docker容器中启动docker容器后,可以使用dockerps命令列出容器信息我们使用dockerexec命令进入容器此时,我们已经来到了容器的内部,接下来就是对redis数据库的操作了1、redis-cli(redis的命令行工具,类似......
  • 肖SIR__数据库之子查询__12.4
    一、什么是子查询?一个查询嵌套另一个查询例如:selectdept1fromdeptwheredept_name="iT技术";#dept中"iT技术"的编号103selectsidfromempwheredept2=103#103=前面的语句selectsidfromempwheredept2=(selectdept1fromdeptwheredept_name="iT技术") 二......