当前位置: 首页 > news >正文

广州网站建设出名 乐云践新宁波网站关键词优化公司

广州网站建设出名 乐云践新,宁波网站关键词优化公司,山西做网站的企业,做网站需要宽带Redis:hash类型 hash命令设置与读取HSETHGETHMGET 哈希操作HEXISTSHDELHKEYSHVALSHGETALLHLENHSETNXHINCRBYHINCRBYFLOAT 内部编码ziplisthashtable 目前主流的编程语言中,几乎都提供了哈希表相关的容器,Redis自然也会支持对应的内容&#xf…

Redis:hash类型

    • hash命令
      • 设置与读取
        • HSET
        • HGET
        • HMGET
      • 哈希操作
        • HEXISTS
        • HDEL
        • HKEYS
        • HVALS
        • HGETALL
        • HLEN
        • HSETNX
        • HINCRBY
        • HINCRBYFLOAT
    • 内部编码
      • ziplist
      • hashtable


目前主流的编程语言中,几乎都提供了哈希表相关的容器,Redis自然也会支持对应的内容,满足程序员的需求。

如果说要存储一个用户的姓名和年龄的映射关系,只使用string类型的话,就是下图的样子:

在这里插入图片描述

此时Rediskey放对应的名称,value放对应的值。但是要注意的是,为了区分不同用户,要加上一些前缀来对key命名,比如user1:nameuser2:name,这会比较麻烦。

如果支持了哈希结构:

在这里插入图片描述

此时value内部存储的是哈希表结构,相当于嵌套了两层映射关系。为了不搞混Redis本身的key和哈希表内部的key,所以哈希内部的键称为field


hash命令

设置与读取

HSET
  • 设置hash中指定字段field和值value
hset key field value [field value ...]

返回值是设置成功的filed - value键值对的个数。

示例:

在这里插入图片描述

第一次创建了一个哈希表hash1,设置了两个键值对f1 - 111f2 - 222,返回2。第二次设置同一张哈希表,由于f1f2已经存在了,只设置成功了f3,所以返回1


HGET
  • 获取hash中指定filed的值
hget key field

返回对应字段的value,如果key或者field不存在,返回nil

示例:

在这里插入图片描述


HMGET
  • 一次获取hash中多个字段的值
hget key field [field ...]

返回所有field对应的value,如果key或者field不存在,返回nil

示例:

在这里插入图片描述

示例中,nameage都是存在的字段,返回了对应的值,而address不存在,返回nil

另外的,还有与hmget对应的hmset,可以一次设置多个哈希键值对,但是hset本身就支持设置多个哈希键值对,所以没必要。


哈希操作

HEXISTS
  • 判断 hash中是否有指定的field
hexists key field

返回0表示不存在,返回1表示存在。

示例:

在这里插入图片描述


HDEL
  • 删除 hash 中的filed字段
hdel key field [field ...]

返回本次操作删除的字段个数。

示例:

在这里插入图片描述
第一次删除了f3,返回1。第二次删除了f1f2,返回2

如果使用del,而不是hdel,那么删除的是整张哈希表。


HKEYS
  • 获取hash中的所有field
hkeys key

返回所有的field

示例:

在这里插入图片描述


HVALS
  • 获取hash中的所有value
hvals key

返回所有的value

示例:

在这里插入图片描述


HGETALL
  • 获取hash中所有的fieldvalue
hgetall key

返回所有的field以及对应的value

示例:

在这里插入图片描述

从上往下以field_1value_1field_2value_2field_3value_3的顺序输出。


HLEN
  • 获取hash中所有字段的个数
hlen key

返回field个数。

示例:

在这里插入图片描述

要注意的是,这个操作时间复杂度是O(1)Redis不会去遍历哈希表,而是有专门的变量维护哈希表的大小,需要时直接读取变量即可。


HSETNX
  • 在字段不存在的情况下,设置hash中的字段和值
hsetnx key field value

如果field已经存在,那么此次设置失败,返回0表示设置失败,返回1表示设置成功。

在这里插入图片描述

第一次设置user name失败,因为name字段已经存在,第二次user friend设置成功,因为原先不存在该field


HINCRBY
  • hash的指定的field对应的value增加指定值
hincrby key field increment

因为hash内部的value还是一个string,而string可以存储整数,也就可以支持算数操作了。

incrby一样,支持正负数,如果不存在那么视为数字0,最后返回变化后的值。

示例:

在这里插入图片描述

示例中,user包含nameageemail字段,第一次对age自增2。第二次自增一个不存在的键id,此时id默认视为0


HINCRBYFLOAT
  • hash的指定的field对应的value增加指定浮点值
hincrbyfloat key field increment

incrbyfloat一样,支持正负数,如果不存在那么视为数字0,最后返回变化后的值。

总结:

命令执行效果
hset key field value设置值
hget key field获取值
hdel key field[field...]删除field
hlen key计算field个数
hgetall key获取所有的field-value
hmget field[field...]批量获取field-value
hmset field value[field value...]批量设置field-value
hexists key field判断field是否存在
hkeys key获取所有的field
hvals key获取所有的value
hsetnx key field value设置值,但必须在field不存在时才能设置成功
hincrby key field n对应field-value+n
hincrbyfloat key field n对应field-value+n
hstrlen key field计算value的字符串长度

内部编码

hash内部编码格式包含两种:ziplisthashtable

ziplist

压缩列表是一种内存紧凑的存储方式,适合存储数量较少且元素较小的哈希。具体来说,当hash类型的元素个数小于 hash-max-ziplist-entries (默认 512 个),并且所有值的长度都小于 hash-max-ziplist-value (默认 64 字节)时,Redis 会使用 ziplist 作为哈希的内部实现。

这些配置在/etc/redis/redis.conf内修改。

优点:

  1. 内存节省ziplist 使用连续的内存块来存储数据,这种紧凑的存储方式可以有效地减少内存碎片和开销。
  2. 结构简单:适合小规模数据,尤其是在内存资源有限的情况下。

缺点:

  1. 操作效率:随着数据量的增加,ziplist 的读写效率会下降。尤其是在需要频繁更新的场景中,ziplist 的线性查找特性使得操作复杂度较高。
  2. 扩展性差:不适合大规模数据存储。

hashtable

当哈希类型无法满足 ziplist 的条件时,Redis 会自动切换到使用哈希表作为哈希的内部实现。

优点:

  1. 高效的读写:哈希表的读写时间复杂度为 O(1),即使在数据量较大时也能保证高效的访问。
  2. 良好的扩展性:适合存储大量数据和需要频繁更新的场景。

缺点:

  1. 内存占用:相较于 ziplist,哈希表在内存使用上相对较多,特别是在存储小数据集时,内存开销更为显著。

http://www.ritt.cn/news/6190.html

相关文章:

  • 网站建设合同附件格式指数基金排名前十名
  • 网站备案 每年世界十大搜索引擎及地址
  • 最后的目的是什么搜索seo引擎
  • 珠海企业建站模板青岛网站seo诊断
  • 个人自我介绍网页seo排名培训公司
  • 网站上的搜索怎么做交换链接是什么意思
  • 做好对外门户网站建设东营优化公司
  • 怎么做产品的网站查权重的软件
  • 做网站之前要备案是什么意思谷歌seo服务商
  • 扶余网站建设seo教程视频
  • 做网站开发需要考什么证书武汉seo网站排名优化公司
  • wordpress 域名迁移杭州seo网站排名
  • 10个著名摄影网站北京seo邢云涛
  • 如何在木上做网站金华seo扣费
  • 建设银行网站怎么开通手机通知太原seo关键词排名优化
  • 用什么网站可以做电子书北京网站制作推广
  • 做网站前怎么建立数据结构腾讯企业qq
  • 大通网站建设百度推广seo自学
  • 淘宝怎么做基础销量什么网站好百度推广热线电话
  • 百度收录效果好的网站刷粉网站推广
  • 在哪做网站便宜又好网络营销环境
  • 今科云平台网站建设技术词爱站的关键词
  • 做阿里巴巴类似的网站吗武汉全网推广
  • 建筑营销型网站迅雷磁力链bt磁力天堂
  • 青海移动网站建设中国婚恋网站排名
  • 电力公司建设安全文化合肥关键词优化平台
  • 南宁智慧人社app官方下载厦门seo公司到1火星
  • 企业网站建设项目描述seo是做什么工作内容
  • 网站权重的提升优化 seo
  • 本地拖拽网站建设域名解析