Redis使用学习汇总(三)之散列

Redis数据结构:散列


当存储相关联的一组数据,比如文章(标题、内容、创建时间等),使用字符串键需要加之相同的前缀(article::001::title、article::001::content、article::001::createtime),不利于维护(删除文章)且存储键名也会浪费内存空间。而散列,是一种能够把相关联的数据打包存储的数据结构。


数据结构

  • 散列
    在这里插入图片描述

散列(hash)

散列键会将一个键和一个散列在数据库中关联起来,可以在散列中为任意多个字段(field)设置值。
使用散列存储文章数据时,结构如下图:
在这里插入图片描述

  • 为字段设置值
    1.hset命令  格式:hset hash field value [field value …]
    若给定字段不存在于散列,命令关联后返回成功执行的字段个数,否则执行更新操作返回0。
    hset hash field value [field value ...]
    在这里插入图片描述
    2.hsetnx命令  格式:hsetnx hash field value
    只在字段不存在时为其设置值,成功返回1,字段已经存在时返回0且不执行设置值。
    hsetnx hash field value
    在这里插入图片描述
    3.hmset命令  格式:hmset hash field value [field value …]
    一次为散列中多个字段设置值,若已存在字段则更新值,设置成功返回OK。
    hmset hash field value [field value ...]
    在这里插入图片描述
    注意
    散列包含的字段也是以无序方式排列的。

  • 获取字段的值
    1.hget命令  格式:hget hash field
    若字段不存在或散列不存在,将返回一个空值nil。
    hget hash field
    在这里插入图片描述
    2.hmget命令  格式:hmget hash field [field …]
    返回一个列表作为结果。列表按照用户执行命令时给定字段的顺序排列值。若给定的字段或散列不存在,将返回空值nil。
    hmget hash field [field ...]
    在这里插入图片描述

  • 获取散列
    1.hkeys命令  格式:hkeys hash
    获取所有字段,散列不存在时返回empty array。
    hkeys hash
    2.hvals命令  格式:hvals hash
    获取所有值,散列不存在时返回empty array。
    hvals hash
    3.hgetall命令  格式:hgetall hash
    获取所有字段和值,返回列表中奇数位为字段偶数位为值,散列不存在时返回empty array。
    hgetall hash
    在这里插入图片描述

  • 获取字段值长度
    1.hstrlen命令  格式:hstrlen hash field
    获取字段值的字节长度,对于不存在的字段或散列将返回0。
    hstrlen hash field
    在这里插入图片描述

  • 检查字段是否存在
    1.hexists命令  格式:hexists hash field
    若散列包含字段则返回1,否则返回0。
    hexists hash field
    在这里插入图片描述

  • 删除字段
    1.hdel命令  格式:hdel hash field [field …]
    若散列包含字段且成功删除则返回成功删除的字段个数,否则返回0。
    hdel hash field [field ...]
    在这里插入图片描述

  • 获取散列中字段数量
    1.hlen命令  格式:hlen hash
    获取散列包含的字段数量,若散列不存在返回0。
    hlen hash
    在这里插入图片描述

  • 数字计算
    当字段存储的值能被Redis解释为数字时,就可执行加法或减法操作。
    1.hincrby命令  格式:hincrby hash field increment
    用于为字段值加上指定的整数增量,返回加法操作之后的值。
    hincrby hash field increment
    在这里插入图片描述
    2.hincrbyfloat命令  格式:hincrbyfloat hash field increment
    用于为字段值加上指定的浮点数增量,返回加法操作之后的值。
    hincrbyfloat hash field increment
    在这里插入图片描述
    注意
    1)hincrby命令,当值不能被Redis解释为整数时将返回error。
    2)散列或字段不存在时,会先将字段初始化为0,然后执行加减操作。

  • 常见用法
    1.短网址映射
    2.用户令牌,散列分别为登录token和过期时间戳,以用户id作为字段存储。


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值