• 【redis 学习系列】API的理解与使用(二)


    3、哈希

    几乎所有的语言都支持了哈希(hash)类型。在Redis中,哈希类型是指键值本身又是一个键值对结构,形如:value = {{field, value} ... {field, value}},Redis键值对和哈希类型的关系可以入下图所示:

    哈希类型中的映射关系叫做field-value,注意这里的value指的是field对应的值,而不是键对应的值。

    3.1命令

    (1)设置值

    1 hset key field value

    如果设置成功会返回1,反之则返回0。此外Redis提供了hsetnx命令的作用同setnx,只不过作用域由键变为了field

    (2)获取值

    1 hget key field

    如果获取的键或者field不存在,则返回nil

    (3)删除field

    1 hdel key field [field ...]

    hdel会删除一个或者多个field,返回结果为成功删除field的个数

    (4)计算filed的个数

    1 hlen key

    (5)批量设置或获取filed-value

    1 hmget key field [field ...]
    2 hmset key field value [field value ...]

    hmset和hmget分别是批量设置和获取field-value,hmset需要的参数是key和多对field-value,hmget需要的参数是key和多个field。

    (6)判断filed是否存在

    1 hexists key field

    例如user:3包含name域,所以返回为1,不包含时,返回为0。

    (7)获取所有filed

    1 hkeys key

    hkeys命令应该叫hfield更为恰当,它返回的是执行哈希键所有的field

    (8)获取所有value

    1 hvals key

    (9)获取所有的filed-value

    1 hgetall key

    如下的操作会获取user:3的所有field-value。

     

    在使用hgetall命令时,如果哈希元素个数比较多时,会存在阻塞Redis的可能,如果开发人员只是为了获取部分field,可以使用hmget,如果一定要获得全部的field-value,可以使用命令hscan,该命令会渐进式遍历哈希类型。

    (10)hincrby hincrbyfloat

    1 hincrby key field
    2 hincrbyfloat key field

    命令hincrby和hincrbyfloat就像incrby和incrbyfloat一样,只不过它们的作用域为field。

    (11)计算value的字符串长度(Redis 3.2以上版本)

    1 hstrlen key field

    例如hget user:3 name的value是kevin,那么hstrlen的返回值为5。

    3.2 内部编码

    哈希类型的内部编码有2种:

    3.3 使用场景

  • 相关阅读:
    Windows下MongoDB安装与PHP扩展
    仿Smarty替换模板标签时遇到的问题
    class ha_innobase: public handler
    类handler
    类Item_field
    函数buf_pool_init_instance
    函数buf_pool_init
    安装php,nginx 带debug
    gdb调试SAPI方式的php
    重启php-fpm
  • 原文地址:https://www.cnblogs.com/xuelisheng/p/10777028.html
Copyright © 2020-2023  润新知