[{"data":1,"prerenderedAt":-1},["ShallowReactive",2],{"article-detail-ssr-45447637448526860":3},{"id":4,"title":5,"tag":6,"createTime":7,"updateTime":7,"renderedHtml":8,"description":9,"ogImageUrl":10},"45447637448526860","Redis---散列命令","Redis","2023-11-10","\u003Cblockquote>\n\u003Cp>Redis hash 是一个 string 类型的 field（字段） 和 value（值） 的映射表，hash 特别适合用于存储对象。Redis 中的每个 hash 可以存储 2\u003Csup>32\u003C\u002Fsup> - 1 键值对（40 多亿）。\u003C\u002Fp>\n\u003C\u002Fblockquote>\n\u003Cp>\u003Cimg class=\"article-img article-img-zoomable\" src=\"https:\u002F\u002Fliubing-1314895948.cos.ap-chengdu.myqcloud.com\u002Fimg\u002F202311102037113.png\" alt=\"image-20231110203706022\" loading=\"lazy\" decoding=\"async\" style=\"width: 100%; height: auto; max-width: 100%; display: block;\" srcset=\"https:\u002F\u002Fliubing-1314895948.cos.ap-chengdu.myqcloud.com\u002Fimg\u002F202311102037113.png?imageMogr2\u002Fthumbnail\u002F400x\u002Fformat\u002Fwebp\u002Fquality\u002F85 400w, https:\u002F\u002Fliubing-1314895948.cos.ap-chengdu.myqcloud.com\u002Fimg\u002F202311102037113.png?imageMogr2\u002Fthumbnail\u002F800x\u002Fformat\u002Fwebp\u002Fquality\u002F85 800w, https:\u002F\u002Fliubing-1314895948.cos.ap-chengdu.myqcloud.com\u002Fimg\u002F202311102037113.png?imageMogr2\u002Fthumbnail\u002F1200x\u002Fformat\u002Fwebp\u002Fquality\u002F85 1200w, https:\u002F\u002Fliubing-1314895948.cos.ap-chengdu.myqcloud.com\u002Fimg\u002F202311102037113.png?imageMogr2\u002Fthumbnail\u002F1920x\u002Fformat\u002Fwebp\u002Fquality\u002F85 1920w\" sizes=\"(max-width: 576px) 100vw, (max-width: 992px) 90vw, 720px\">\u003C\u002Fp>\n\u003Ch2 id=\"h2-0-\">命令\u003C\u002Fh2>\n\u003Col>\n\u003Cli>\u003Cstrong>hset\u003C\u002Fstrong>\u003C\u002Fli>\n\u003C\u002Fol>\n\u003Cul>\n\u003Cli>格式：hset key field value\u003C\u002Fli>\n\u003Cli>功能：将哈希表 key 中的域 field 的值设为 value 。\u003C\u002Fli>\n\u003Cli>说明：如果 key 不存在，一个新的哈希表被创建并进行 hset 操作。如果域 field 已经存在于哈希表中，旧值将被覆盖。如果 field 是哈希表中的一个新建域，并且值设置成功，返回 1 。如果哈希表中域 field 已经存在且旧值已被新值覆盖，返回 0 。如果 hset 一次性设置多个键值对，返回的是新增的 field 的个数。\u003C\u002Fli>\n\u003C\u002Ful>\n\u003Cp>\u003Cimg class=\"article-img article-img-zoomable\" src=\"https:\u002F\u002Fliubing-1314895948.cos.ap-chengdu.myqcloud.com\u002Fimg\u002F202304081621048.png\" alt=\"image-20230408162128974\" loading=\"lazy\" decoding=\"async\" style=\"width: 100%; height: auto; max-width: 100%; display: block;\" srcset=\"https:\u002F\u002Fliubing-1314895948.cos.ap-chengdu.myqcloud.com\u002Fimg\u002F202304081621048.png?imageMogr2\u002Fthumbnail\u002F400x\u002Fformat\u002Fwebp\u002Fquality\u002F85 400w, https:\u002F\u002Fliubing-1314895948.cos.ap-chengdu.myqcloud.com\u002Fimg\u002F202304081621048.png?imageMogr2\u002Fthumbnail\u002F800x\u002Fformat\u002Fwebp\u002Fquality\u002F85 800w, https:\u002F\u002Fliubing-1314895948.cos.ap-chengdu.myqcloud.com\u002Fimg\u002F202304081621048.png?imageMogr2\u002Fthumbnail\u002F1200x\u002Fformat\u002Fwebp\u002Fquality\u002F85 1200w, https:\u002F\u002Fliubing-1314895948.cos.ap-chengdu.myqcloud.com\u002Fimg\u002F202304081621048.png?imageMogr2\u002Fthumbnail\u002F1920x\u002Fformat\u002Fwebp\u002Fquality\u002F85 1920w\" sizes=\"(max-width: 576px) 100vw, (max-width: 992px) 90vw, 720px\">\u003C\u002Fp>\n\u003Col start=\"2\">\n\u003Cli>\u003Cstrong>hget\u003C\u002Fstrong>\u003C\u002Fli>\n\u003C\u002Fol>\n\u003Cul>\n\u003Cli>格式：hget key field\u003C\u002Fli>\n\u003Cli>功能：返回哈希表 key 中给定域 field 的值（只能得到一个 field 的值，不能返回多个 field 的值）。\u003C\u002Fli>\n\u003Cli>说明：当给定域不存在或是给定 key 不存在时，返回 nil 。\u003C\u002Fli>\n\u003C\u002Ful>\n\u003Cp>\u003Cimg class=\"article-img article-img-zoomable\" src=\"https:\u002F\u002Fliubing-1314895948.cos.ap-chengdu.myqcloud.com\u002Fimg\u002F202304081632655.png\" alt=\"image-20230408163257612\" loading=\"lazy\" decoding=\"async\" style=\"width: 100%; height: auto; max-width: 100%; display: block;\" srcset=\"https:\u002F\u002Fliubing-1314895948.cos.ap-chengdu.myqcloud.com\u002Fimg\u002F202304081632655.png?imageMogr2\u002Fthumbnail\u002F400x\u002Fformat\u002Fwebp\u002Fquality\u002F85 400w, https:\u002F\u002Fliubing-1314895948.cos.ap-chengdu.myqcloud.com\u002Fimg\u002F202304081632655.png?imageMogr2\u002Fthumbnail\u002F800x\u002Fformat\u002Fwebp\u002Fquality\u002F85 800w, https:\u002F\u002Fliubing-1314895948.cos.ap-chengdu.myqcloud.com\u002Fimg\u002F202304081632655.png?imageMogr2\u002Fthumbnail\u002F1200x\u002Fformat\u002Fwebp\u002Fquality\u002F85 1200w, https:\u002F\u002Fliubing-1314895948.cos.ap-chengdu.myqcloud.com\u002Fimg\u002F202304081632655.png?imageMogr2\u002Fthumbnail\u002F1920x\u002Fformat\u002Fwebp\u002Fquality\u002F85 1920w\" sizes=\"(max-width: 576px) 100vw, (max-width: 992px) 90vw, 720px\">\u003C\u002Fp>\n\u003Col start=\"3\">\n\u003Cli>\u003Cstrong>hmset\u003C\u002Fstrong>\u003C\u002Fli>\n\u003C\u002Fol>\n\u003Cul>\n\u003Cli>格式：hmset key field value [field value ···]\u003C\u002Fli>\n\u003Cli>功能：同时将多个 field-value (域-值)对设置到哈希表 key 中。\u003C\u002Fli>\n\u003Cli>说明：此命令会覆盖哈希表中已存在的域。如果 key 不存在，一个空哈希表被创建并执行 hmset 操作。如果命令执行成功，返回 OK 。当 key 不是哈希表(hash)类型时，返回一个错误。\u003C\u002Fli>\n\u003C\u002Ful>\n\u003Cblockquote>\n\u003Cp>注意：在官方文档中关于 hmset 的描述如下：As per Redis 4.0.0, HMSET is considered deprecated. Please use HSET in new code.\u003C\u002Fp>\n\u003Cp>（根据 Redis 4.0.0，HMSET 被视为已弃用。请在新代码中使用 HSET。）\u003C\u002Fp>\n\u003C\u002Fblockquote>\n\u003Col start=\"4\">\n\u003Cli>\u003Cstrong>hmget\u003C\u002Fstrong>\u003C\u002Fli>\n\u003C\u002Fol>\n\u003Cul>\n\u003Cli>格式：hmget key field [field ···]\u003C\u002Fli>\n\u003Cli>功能：按照给出顺序返回哈希表 key 中一个或多个域的值。\u003C\u002Fli>\n\u003Cli>说明：如果给定的域不存在于哈希表，那么返回一个 nil 值。因为不存在的 key 被当作一个空哈希表来处理，所以对一个不存在的 key 进行 hmget 操作将返回一个只带有 nil 值的表。\u003C\u002Fli>\n\u003C\u002Ful>\n\u003Col start=\"5\">\n\u003Cli>\u003Cstrong>hsetnx\u003C\u002Fstrong>\u003C\u002Fli>\n\u003C\u002Fol>\n\u003Cul>\n\u003Cli>格式：hsetnx key field value\u003C\u002Fli>\n\u003Cli>功能：将哈希表 key 中的域 field 的值设置为 value ，当且仅当域 field 不存在。（nx 表示的意思：\u003Cstrong>不存在，就设置\u003C\u002Fstrong>）\u003C\u002Fli>\n\u003Cli>说明：若域 field 已经存在，该操作无效。如果 key 不存在，一个新哈希表被创建并执行 hsetnx 命令，且 hsetnx 一次只能设置一个不存在的键值对。\u003C\u002Fli>\n\u003C\u002Ful>\n\u003Cp>\u003Cimg class=\"article-img article-img-zoomable\" src=\"https:\u002F\u002Fliubing-1314895948.cos.ap-chengdu.myqcloud.com\u002Fimg\u002F202304081647416.png\" alt=\"image-20230408164723361\" loading=\"lazy\" decoding=\"async\" style=\"width: 100%; height: auto; max-width: 100%; display: block;\" srcset=\"https:\u002F\u002Fliubing-1314895948.cos.ap-chengdu.myqcloud.com\u002Fimg\u002F202304081647416.png?imageMogr2\u002Fthumbnail\u002F400x\u002Fformat\u002Fwebp\u002Fquality\u002F85 400w, https:\u002F\u002Fliubing-1314895948.cos.ap-chengdu.myqcloud.com\u002Fimg\u002F202304081647416.png?imageMogr2\u002Fthumbnail\u002F800x\u002Fformat\u002Fwebp\u002Fquality\u002F85 800w, https:\u002F\u002Fliubing-1314895948.cos.ap-chengdu.myqcloud.com\u002Fimg\u002F202304081647416.png?imageMogr2\u002Fthumbnail\u002F1200x\u002Fformat\u002Fwebp\u002Fquality\u002F85 1200w, https:\u002F\u002Fliubing-1314895948.cos.ap-chengdu.myqcloud.com\u002Fimg\u002F202304081647416.png?imageMogr2\u002Fthumbnail\u002F1920x\u002Fformat\u002Fwebp\u002Fquality\u002F85 1920w\" sizes=\"(max-width: 576px) 100vw, (max-width: 992px) 90vw, 720px\">\u003C\u002Fp>\n\u003Col start=\"6\">\n\u003Cli>\u003Cstrong>hdel\u003C\u002Fstrong>\u003C\u002Fli>\n\u003C\u002Fol>\n\u003Cul>\n\u003Cli>格式：hdel key field [field ···]\u003C\u002Fli>\n\u003Cli>功能：删除哈希表 key 中的一个或多个指定域，不存在的域将被忽略。\u003C\u002Fli>\n\u003Cli>说明：返回被成功移除的域的数量，不包括被忽略的域。\u003C\u002Fli>\n\u003C\u002Ful>\n\u003Cp>\u003Cimg class=\"article-img article-img-zoomable\" src=\"https:\u002F\u002Fliubing-1314895948.cos.ap-chengdu.myqcloud.com\u002Fimg\u002F202304081655071.png\" alt=\"image-20230408165506042\" loading=\"lazy\" decoding=\"async\" style=\"width: 100%; height: auto; max-width: 100%; display: block;\" srcset=\"https:\u002F\u002Fliubing-1314895948.cos.ap-chengdu.myqcloud.com\u002Fimg\u002F202304081655071.png?imageMogr2\u002Fthumbnail\u002F400x\u002Fformat\u002Fwebp\u002Fquality\u002F85 400w, https:\u002F\u002Fliubing-1314895948.cos.ap-chengdu.myqcloud.com\u002Fimg\u002F202304081655071.png?imageMogr2\u002Fthumbnail\u002F800x\u002Fformat\u002Fwebp\u002Fquality\u002F85 800w, https:\u002F\u002Fliubing-1314895948.cos.ap-chengdu.myqcloud.com\u002Fimg\u002F202304081655071.png?imageMogr2\u002Fthumbnail\u002F1200x\u002Fformat\u002Fwebp\u002Fquality\u002F85 1200w, https:\u002F\u002Fliubing-1314895948.cos.ap-chengdu.myqcloud.com\u002Fimg\u002F202304081655071.png?imageMogr2\u002Fthumbnail\u002F1920x\u002Fformat\u002Fwebp\u002Fquality\u002F85 1920w\" sizes=\"(max-width: 576px) 100vw, (max-width: 992px) 90vw, 720px\">\u003C\u002Fp>\n\u003Col start=\"7\">\n\u003Cli>\u003Cstrong>hexists\u003C\u002Fstrong>\u003C\u002Fli>\n\u003C\u002Fol>\n\u003Cul>\n\u003Cli>格式：hexists key field\u003C\u002Fli>\n\u003Cli>功能：查看哈希表 key 中给定域 field 是否存在。\u003C\u002Fli>\n\u003Cli>说明：如果哈希表含有给定域，返回 1 。如果不含有给定域，或 key 不存在，返回 0 。\u003C\u002Fli>\n\u003C\u002Ful>\n\u003Cp>\u003Cimg class=\"article-img article-img-zoomable\" src=\"https:\u002F\u002Fliubing-1314895948.cos.ap-chengdu.myqcloud.com\u002Fimg\u002F202304081657170.png\" alt=\"image-20230408165739111\" loading=\"lazy\" decoding=\"async\" style=\"width: 100%; height: auto; max-width: 100%; display: block;\" srcset=\"https:\u002F\u002Fliubing-1314895948.cos.ap-chengdu.myqcloud.com\u002Fimg\u002F202304081657170.png?imageMogr2\u002Fthumbnail\u002F400x\u002Fformat\u002Fwebp\u002Fquality\u002F85 400w, https:\u002F\u002Fliubing-1314895948.cos.ap-chengdu.myqcloud.com\u002Fimg\u002F202304081657170.png?imageMogr2\u002Fthumbnail\u002F800x\u002Fformat\u002Fwebp\u002Fquality\u002F85 800w, https:\u002F\u002Fliubing-1314895948.cos.ap-chengdu.myqcloud.com\u002Fimg\u002F202304081657170.png?imageMogr2\u002Fthumbnail\u002F1200x\u002Fformat\u002Fwebp\u002Fquality\u002F85 1200w, https:\u002F\u002Fliubing-1314895948.cos.ap-chengdu.myqcloud.com\u002Fimg\u002F202304081657170.png?imageMogr2\u002Fthumbnail\u002F1920x\u002Fformat\u002Fwebp\u002Fquality\u002F85 1920w\" sizes=\"(max-width: 576px) 100vw, (max-width: 992px) 90vw, 720px\">\u003C\u002Fp>\n\u003Col start=\"8\">\n\u003Cli>\u003Cstrong>hincrby\u003C\u002Fstrong> 与 \u003Cstrong>hincrbyfloat\u003C\u002Fstrong>\u003C\u002Fli>\n\u003C\u002Fol>\n\u003Cul>\n\u003Cli>格式：[ hincrby \u002F hincrbyfloat ] key field increment\u003C\u002Fli>\n\u003Cli>功能：为哈希表 key 中的域 field 的值加上增量 increment 。hincrby 命令只能增加整数值，而 hincrbyfloat 可以增加小数值。\u003C\u002Fli>\n\u003Cli>说明：\u003Cstrong>增量也可以为负数\u003C\u002Fstrong>，相当于对给定域进行减法操作。如果 key 不存在，一个新的哈希表被创建并执行 hincrby 命令。如果域 field 不存在，那么在执行命令前，域的值被初始化为 0。对一个储存字符串值的域 field 执行 HINCRBY 命令将造成一个错误。\u003C\u002Fli>\n\u003C\u002Ful>\n\u003Cp>\u003Cimg class=\"article-img article-img-zoomable\" src=\"https:\u002F\u002Fliubing-1314895948.cos.ap-chengdu.myqcloud.com\u002Fimg\u002F202304081707298.png\" alt=\"image-20230408170709262\" loading=\"lazy\" decoding=\"async\" style=\"width: 100%; height: auto; max-width: 100%; display: block;\" srcset=\"https:\u002F\u002Fliubing-1314895948.cos.ap-chengdu.myqcloud.com\u002Fimg\u002F202304081707298.png?imageMogr2\u002Fthumbnail\u002F400x\u002Fformat\u002Fwebp\u002Fquality\u002F85 400w, https:\u002F\u002Fliubing-1314895948.cos.ap-chengdu.myqcloud.com\u002Fimg\u002F202304081707298.png?imageMogr2\u002Fthumbnail\u002F800x\u002Fformat\u002Fwebp\u002Fquality\u002F85 800w, https:\u002F\u002Fliubing-1314895948.cos.ap-chengdu.myqcloud.com\u002Fimg\u002F202304081707298.png?imageMogr2\u002Fthumbnail\u002F1200x\u002Fformat\u002Fwebp\u002Fquality\u002F85 1200w, https:\u002F\u002Fliubing-1314895948.cos.ap-chengdu.myqcloud.com\u002Fimg\u002F202304081707298.png?imageMogr2\u002Fthumbnail\u002F1920x\u002Fformat\u002Fwebp\u002Fquality\u002F85 1920w\" sizes=\"(max-width: 576px) 100vw, (max-width: 992px) 90vw, 720px\">\u003C\u002Fp>\n\u003Col start=\"9\">\n\u003Cli>\u003Cstrong>hkeys\u003C\u002Fstrong> 与 \u003Cstrong>hvals\u003C\u002Fstrong>\u003C\u002Fli>\n\u003C\u002Fol>\n\u003Cul>\n\u003Cli>格式：[ hkeys \u002F hvals ] key\u003C\u002Fli>\n\u003Cli>功能：返回哈希表 key 中的所有域\u002F值。\u003C\u002Fli>\n\u003Cli>说明：当 key 不存在时，返回一个空表。\u003C\u002Fli>\n\u003C\u002Ful>\n\u003Cp>\u003Cimg class=\"article-img article-img-zoomable\" src=\"https:\u002F\u002Fliubing-1314895948.cos.ap-chengdu.myqcloud.com\u002Fimg\u002F202304081708545.png\" alt=\"image-20230408170817487\" loading=\"lazy\" decoding=\"async\" style=\"width: 100%; height: auto; max-width: 100%; display: block;\" srcset=\"https:\u002F\u002Fliubing-1314895948.cos.ap-chengdu.myqcloud.com\u002Fimg\u002F202304081708545.png?imageMogr2\u002Fthumbnail\u002F400x\u002Fformat\u002Fwebp\u002Fquality\u002F85 400w, https:\u002F\u002Fliubing-1314895948.cos.ap-chengdu.myqcloud.com\u002Fimg\u002F202304081708545.png?imageMogr2\u002Fthumbnail\u002F800x\u002Fformat\u002Fwebp\u002Fquality\u002F85 800w, https:\u002F\u002Fliubing-1314895948.cos.ap-chengdu.myqcloud.com\u002Fimg\u002F202304081708545.png?imageMogr2\u002Fthumbnail\u002F1200x\u002Fformat\u002Fwebp\u002Fquality\u002F85 1200w, https:\u002F\u002Fliubing-1314895948.cos.ap-chengdu.myqcloud.com\u002Fimg\u002F202304081708545.png?imageMogr2\u002Fthumbnail\u002F1920x\u002Fformat\u002Fwebp\u002Fquality\u002F85 1920w\" sizes=\"(max-width: 576px) 100vw, (max-width: 992px) 90vw, 720px\">\u003C\u002Fp>\n\u003Col start=\"10\">\n\u003Cli>\u003Cstrong>hgetall\u003C\u002Fstrong>\u003C\u002Fli>\n\u003C\u002Fol>\n\u003Cul>\n\u003Cli>格式：hgetall key\u003C\u002Fli>\n\u003Cli>功能：返回哈希表 key 中所有的域和值。\u003C\u002Fli>\n\u003Cli>说明：在返回值里，紧跟每个域名(field name)之后是域的值(value)，所以返回值的长度是哈希表大小的两倍。若 key 不存在，返回空列表。若 key 中包含大量元素，则该命令可能会\u003Cstrong>阻塞\u003C\u002Fstrong> Redis 服务。所以生产环境中一般不使用该命令，而使用 \u003Cstrong>hscan\u003C\u002Fstrong> 命令代替。\u003C\u002Fli>\n\u003C\u002Ful>\n\u003Cp>\u003Cimg class=\"article-img article-img-zoomable\" src=\"https:\u002F\u002Fliubing-1314895948.cos.ap-chengdu.myqcloud.com\u002Fimg\u002F202304081642458.png\" alt=\"image-20230408164237409\" loading=\"lazy\" decoding=\"async\" style=\"width: 100%; height: auto; max-width: 100%; display: block;\" srcset=\"https:\u002F\u002Fliubing-1314895948.cos.ap-chengdu.myqcloud.com\u002Fimg\u002F202304081642458.png?imageMogr2\u002Fthumbnail\u002F400x\u002Fformat\u002Fwebp\u002Fquality\u002F85 400w, https:\u002F\u002Fliubing-1314895948.cos.ap-chengdu.myqcloud.com\u002Fimg\u002F202304081642458.png?imageMogr2\u002Fthumbnail\u002F800x\u002Fformat\u002Fwebp\u002Fquality\u002F85 800w, https:\u002F\u002Fliubing-1314895948.cos.ap-chengdu.myqcloud.com\u002Fimg\u002F202304081642458.png?imageMogr2\u002Fthumbnail\u002F1200x\u002Fformat\u002Fwebp\u002Fquality\u002F85 1200w, https:\u002F\u002Fliubing-1314895948.cos.ap-chengdu.myqcloud.com\u002Fimg\u002F202304081642458.png?imageMogr2\u002Fthumbnail\u002F1920x\u002Fformat\u002Fwebp\u002Fquality\u002F85 1920w\" sizes=\"(max-width: 576px) 100vw, (max-width: 992px) 90vw, 720px\">\u003C\u002Fp>\n\u003Col start=\"11\">\n\u003Cli>\u003Cstrong>hlen\u003C\u002Fstrong>\u003C\u002Fli>\n\u003C\u002Fol>\n\u003Cul>\n\u003Cli>格式：hlen key\u003C\u002Fli>\n\u003Cli>功能：返回哈希表 key 中域的数量。\u003C\u002Fli>\n\u003Cli>说明：当 key 不存在时，返回 0 。\u003C\u002Fli>\n\u003C\u002Ful>\n\u003Cp>\u003Cimg class=\"article-img article-img-zoomable\" src=\"https:\u002F\u002Fliubing-1314895948.cos.ap-chengdu.myqcloud.com\u002Fimg\u002F202304081709532.png\" alt=\"image-20230408170904484\" loading=\"lazy\" decoding=\"async\" style=\"width: 100%; height: auto; max-width: 100%; display: block;\" srcset=\"https:\u002F\u002Fliubing-1314895948.cos.ap-chengdu.myqcloud.com\u002Fimg\u002F202304081709532.png?imageMogr2\u002Fthumbnail\u002F400x\u002Fformat\u002Fwebp\u002Fquality\u002F85 400w, https:\u002F\u002Fliubing-1314895948.cos.ap-chengdu.myqcloud.com\u002Fimg\u002F202304081709532.png?imageMogr2\u002Fthumbnail\u002F800x\u002Fformat\u002Fwebp\u002Fquality\u002F85 800w, https:\u002F\u002Fliubing-1314895948.cos.ap-chengdu.myqcloud.com\u002Fimg\u002F202304081709532.png?imageMogr2\u002Fthumbnail\u002F1200x\u002Fformat\u002Fwebp\u002Fquality\u002F85 1200w, https:\u002F\u002Fliubing-1314895948.cos.ap-chengdu.myqcloud.com\u002Fimg\u002F202304081709532.png?imageMogr2\u002Fthumbnail\u002F1920x\u002Fformat\u002Fwebp\u002Fquality\u002F85 1920w\" sizes=\"(max-width: 576px) 100vw, (max-width: 992px) 90vw, 720px\">\u003C\u002Fp>\n\u003Col start=\"12\">\n\u003Cli>\u003Cstrong>hstrlen\u003C\u002Fstrong>\u003C\u002Fli>\n\u003C\u002Fol>\n\u003Cul>\n\u003Cli>格式：hstrlen key field\u003C\u002Fli>\n\u003Cli>功能：返回哈希表 key 中， 与给定域 field 相关联的值的字符串长度（string length）。\u003C\u002Fli>\n\u003Cli>说明：如果给定的键或者域不存在， 那么命令返回 0 。\u003C\u002Fli>\n\u003C\u002Ful>\n\u003Cp>\u003Cimg class=\"article-img article-img-zoomable\" src=\"https:\u002F\u002Fliubing-1314895948.cos.ap-chengdu.myqcloud.com\u002Fimg\u002F202304081710497.png\" alt=\"image-20230408171036446\" loading=\"lazy\" decoding=\"async\" style=\"width: 100%; height: auto; max-width: 100%; display: block;\" srcset=\"https:\u002F\u002Fliubing-1314895948.cos.ap-chengdu.myqcloud.com\u002Fimg\u002F202304081710497.png?imageMogr2\u002Fthumbnail\u002F400x\u002Fformat\u002Fwebp\u002Fquality\u002F85 400w, https:\u002F\u002Fliubing-1314895948.cos.ap-chengdu.myqcloud.com\u002Fimg\u002F202304081710497.png?imageMogr2\u002Fthumbnail\u002F800x\u002Fformat\u002Fwebp\u002Fquality\u002F85 800w, https:\u002F\u002Fliubing-1314895948.cos.ap-chengdu.myqcloud.com\u002Fimg\u002F202304081710497.png?imageMogr2\u002Fthumbnail\u002F1200x\u002Fformat\u002Fwebp\u002Fquality\u002F85 1200w, https:\u002F\u002Fliubing-1314895948.cos.ap-chengdu.myqcloud.com\u002Fimg\u002F202304081710497.png?imageMogr2\u002Fthumbnail\u002F1920x\u002Fformat\u002Fwebp\u002Fquality\u002F85 1920w\" sizes=\"(max-width: 576px) 100vw, (max-width: 992px) 90vw, 720px\">\u003C\u002Fp>\n\u003Ch2 id=\"h2-1-\">散列与字符串\u003C\u002Fh2>\n\u003Ch3 id=\"h3-2-\">散列键的优点\u003C\u002Fh3>\n\u003Cp>\u003Cimg class=\"article-img article-img-zoomable\" src=\"https:\u002F\u002Fliubing-1314895948.cos.ap-chengdu.myqcloud.com\u002Fimg\u002F202311102044037.png\" alt=\"image-20231110204452981\" loading=\"lazy\" decoding=\"async\" style=\"width: 100%; height: auto; max-width: 100%; display: block;\" srcset=\"https:\u002F\u002Fliubing-1314895948.cos.ap-chengdu.myqcloud.com\u002Fimg\u002F202311102044037.png?imageMogr2\u002Fthumbnail\u002F400x\u002Fformat\u002Fwebp\u002Fquality\u002F85 400w, https:\u002F\u002Fliubing-1314895948.cos.ap-chengdu.myqcloud.com\u002Fimg\u002F202311102044037.png?imageMogr2\u002Fthumbnail\u002F800x\u002Fformat\u002Fwebp\u002Fquality\u002F85 800w, https:\u002F\u002Fliubing-1314895948.cos.ap-chengdu.myqcloud.com\u002Fimg\u002F202311102044037.png?imageMogr2\u002Fthumbnail\u002F1200x\u002Fformat\u002Fwebp\u002Fquality\u002F85 1200w, https:\u002F\u002Fliubing-1314895948.cos.ap-chengdu.myqcloud.com\u002Fimg\u002F202311102044037.png?imageMogr2\u002Fthumbnail\u002F1920x\u002Fformat\u002Fwebp\u002Fquality\u002F85 1920w\" sizes=\"(max-width: 576px) 100vw, (max-width: 992px) 90vw, 720px\">\u003C\u002Fp>\n\u003Cp>从上图可以看出，为了存储 4 个数据项，程序须要使用 4 个字符串键或者一个散列键来存储。依此推算，如果须要存储 100 万篇文章，那么使用散列键的情况下，程序只须要在数据库中创建 100 万个散列键就可以了；如果使用字符串键，那么程序须要在数据库里面创建 400 万个字符串键。\u003C\u002Fp>\n\u003Cp>数据库件数量增多带来的问题主要和资源有关：\u003C\u002Fp>\n\u003Cul>\n\u003Cli>\n\u003Cp>为了对数据库以及数据库件的使用情况进行统计，release 会为每个数据库件存储一些额外的信息，并因此带来一些额外的内存消耗，对于单个数据库件来说，这些额外的内存消耗几乎可以忽略不计，但是当数据库建的数量达到上百万，上千万甚至更多的时候，这些额外的内存消耗就会变得比较可观。\u003C\u002Fp>\n\u003C\u002Fli>\n\u003Cli>\n\u003Cp>当散列包含的字段数量比较少的时候，radius 就会使用特殊的内存优化结构去存储散列中的字段和值与字符串键相比，这种内存优化结构，存储相同数据所需的内存要少，得多，使用内存优化结构的散列越多，内存优化结构的效果也就越明显，在一定条条件下对于相同的数据使用散列键进行存储，比使用字符串键存储要节约一半以上的内存，有时候甚至会更多。\u003C\u002Fp>\n\u003C\u002Fli>\n\u003Cli>\n\u003Cp>除了需要消耗更多内存之外，更多的数据库键也需要占用更多的 CPU，每当 release 需要对数据库中的键进行处理时，数据库包含的件越多，进行处理所需的 CPU 资源就会越多，处理所耗费的时间也会越长，典型的情况包括：\u003C\u002Fp>\n\u003Cul>\n\u003Cli>统计数据库和数据库件的使用情况；\u003C\u002Fli>\n\u003Cli>对数据库执行持久化操作，或者根据持久化文件还原数据库；\u003C\u002Fli>\n\u003Cli>通过模式匹配，在数据库中查找某个键或者执行类似的查找操作。\u003C\u002Fli>\n\u003C\u002Ful>\n\u003Cp>这些操作的执行时间都会受到数据库件数量的影响。\u003C\u002Fp>\n\u003C\u002Fli>\n\u003C\u002Ful>\n\u003Cp>最后，除了资源方面的优势之外，散列键还可以有效地组织起相关的多项数据，让程序产生更容易理解的数据，使得针对数据的批量操作变得更方便。\u003C\u002Fp>\n\u003Ch3 id=\"h3-3-\">字符串键的优点\u003C\u002Fh3>\n\u003Cp>虽然使用散列键可以有效的节约资源并更好的组织数据，但是字符串键也有自己的优点\u003C\u002Fp>\n\u003Cul>\n\u003Cli>\n\u003Cp>虽然散列键命令和字符串键命令在部分功能上有重合的地方，但是字符串界命令提供的操作比散列键面料更为丰富。比如字符串能够使用 setrange 命令和 getrange 命令设置或者读取字符串值得其中一部分，或者使用命令 append 将新内容追加到字符串值的末尾，而散列键并不支持这些操作。\u003C\u002Fp>\n\u003C\u002Fli>\n\u003Cli>\n\u003Cp>对于键值对过期操作，字符串键可以在指定时间到达时自动删除指定的键。因为键过期功能针对的是整个键用户，无法为散列中的不同字段设置不同的过期时间，所以当一个散列键过期的时候，它包含的所有字段和值都将被删除。相反如果用户使用字符串键存储信息就不会遇到这样的问题，用户可以为每个字符串键分别设置不同的过期时间，让他们根据实际的需要自动被删除。\u003C\u002Fp>\n\u003C\u002Fli>\n\u003C\u002Ful>\n\u003Ch3 id=\"h3-4-\">字符串和散列的选择\u003C\u002Fh3>\n\u003Cdiv class=\"ssr-table-wrap\">\u003Cbutton class=\"ssr-table-fs-btn\" type=\"button\" aria-label=\"全屏查看表格\" title=\"全屏\">\u003Csvg viewBox=\"0 0 24 24\" width=\"17\" height=\"17\" aria-hidden=\"true\">\u003Cpath fill=\"currentColor\" d=\"M5 5h6v2H7v4H5V5zm14 0v6h-2V7h-4V5h6zM5 19v-6h2v4h4v2H5zm14 0h-6v-2h4v-4h2v6z\"\u002F>\u003C\u002Fsvg>\u003C\u002Fbutton>\u003Cdiv class=\"ssr-table-scroll\">\u003Ctable>\n\u003Cthead>\n\u003Ctr>\n\u003Cth>比较的范畴\u003C\u002Fth>\n\u003Cth>结果\u003C\u002Fth>\n\u003C\u002Ftr>\n\u003C\u002Fthead>\n\u003Ctbody>\n\u003Ctr>\n\u003Ctd>资源占用\u003C\u002Ftd>\n\u003Ctd>字符串键在数量较多的情况下，将占用大量的内存和 CPU 时间。相反，将多个数据项存储到同一个散列中可以有效地减少内存和 CPU 消耗\u003C\u002Ftd>\n\u003C\u002Ftr>\n\u003Ctr>\n\u003Ctd>支持的操作\u003C\u002Ftd>\n\u003Ctd>散列键支持的所有命令，几乎都有相应的字符串键版本，但字符串键支持的 setrange、getrange 等操作散列键不具备\u003C\u002Ftd>\n\u003C\u002Ftr>\n\u003Ctr>\n\u003Ctd>过期时间\u003C\u002Ftd>\n\u003Ctd>字符串键可以为每个键单独设置过期时间，独立删除某个数据项；而散列键一旦到期，它包含的所有字段和值都会被删除\u003C\u002Ftd>\n\u003C\u002Ftr>\n\u003C\u002Ftbody>\n\u003C\u002Ftable>\n\u003C\u002Fdiv>\u003C\u002Fdiv>\u003Cp>既然字符串键和散列键各有优点，那么我们在构建应用程序的时候，什么时候应该使用字符串键？什么时候应该使用散列键呢？对于这个问题以下总结了一些选择的条件和方法。\u003C\u002Fp>\n\u003Cul>\n\u003Cli>如果程序需要为每个数据项单独设置过期时间，那么使用字符串键。\u003C\u002Fli>\n\u003Cli>如果程序需要对数据线执行诸如 setrange、getrange 或者 append 等操作，那么优先考虑使用字符串键。当然用户也可以选择把数据存储在散列中，然后将类似的操作交给客户端执行。\u003C\u002Fli>\n\u003Cli>如果程序需要存储的数据项比较多，并且你希望尽可能的减少存储数据所需的内存，就应该优先考虑使用散列键。\u003C\u002Fli>\n\u003Cli>如果多个数据线在逻辑上属于同一组或者同一类，那么应该优先考虑使用散列键。\u003C\u002Fli>\n\u003C\u002Ful>\n","Redis hash 是一个 string 类型的 field（字段） 和 value（值） 的映射表，hash 特别适合用于存储对象。Redis 中的每个 hash 可以存储 2 32 1 键值对（40 多亿）。 命令 1. hset 格式：hset key field value 功能：将哈希表 key 中的域 f","https:\u002F\u002Fliubing-1314895948.cos.ap-chengdu.myqcloud.com\u002Fimg\u002F202311102037113.png"]