• Redis五大数据类型——Hash(哈希)


    Redis五大数据类型——Hash(哈希)

    Map集合,key-Map集合。

    HSET key field value [field value ...]
    127.0.0.1:6379> HSET hash name liuhuan age 18	# HSET key field value field value
    (integer) 2
    127.0.0.1:6379> HGET hash name		        # HGET key field 只能取一个字段
    "liuhuan"
    127.0.0.1:6379> HGET hasn name		        # 如果没有key,则返回nil
    (nil)
    127.0.0.1:6379> HMGET hash name age             # 可以取多个字段
    1) "liuhuan"
    2) "18"
    127.0.0.1:6379> HGETALL hash		        # 获取key中的所有的field和value 
    1) "name"
    2) "liuhuan"
    3) "age"
    4) "18"
    127.0.0.1:6379> hset hash name huan age 16	# 如果有值则不会变更成功,返回0
    (integer) 0
    127.0.0.1:6379> hmset hash name huan age 16	# 如果有值,则更改,如果没有值则创建
    OK
    127.0.0.1:6379> HVALS hash
    1) "16"
    2) "huan"
    3) "sh"
    4) "male"
    127.0.0.1:6379> HDEL hash name		                  # 删除字段,删除成功返回1,否则返回0
    (integer) 1
    127.0.0.1:6379> HLEN hash		                  # 获取键值对的数量,一对为1
    (integer) 1
    127.0.0.1:6379> hset hash name liuhuan city sh sex male   # 返回插入键值对的数量
    (integer) 3
    127.0.0.1:6379> HEXISTS hash name	                  # 判断hash中指定的字段是否存在,存在则返回1
    (integer) 1
    127.0.0.1:6379> HLEN hash		      # 返回插入键值对的数量
    (integer) 4
    127.0.0.1:6379> HKEYS hash		      # 获取hash中所有的field
    1) "age"
    2) "name"
    3) "city"
    4) "sex"
    127.0.0.1:6379> HVALS hash		      # 获取hash中所有的value
    1) "18"
    2) "liuhuan"
    3) "sh"
    4) "male"
    127.0.0.1:6379> HINCRBY hash age 1	      # 给某个字段的值加上指定的数量,可以是负数
    (integer) 19
    127.0.0.1:6379> HINCRBY hash age -1           # 返回的是计算后得到的值
    (integer) 18
    127.0.0.1:6379> HINCRBY hash name 2	      # 可以看到,只能给整数增加,不能给其他的数据类型增加
    (error) ERR hash value is not an integer
    

    总结:

    • hash的应用场景:
      • 用于指定数据的field的值的变更
      • 经常变动的信息
      • 更适合对象的存储
      • string更适合字符串的存储
    • hset与hmset的区别
      • 两者都是没有值则创建
      • 但是如果已经有字段存在,则hset返回0,不做任何变更,而hmset则会更改值
  • 相关阅读:
    python面向对象__call__
    python的上下文管理协议
    python析构方法__del__
    next和iter可迭代协议
    __slots__ 用法
    定制自己的数据类型
    内置的Attr系列
    反射和自省
    isinstance和issubclass
    BLE 学习
  • 原文地址:https://www.cnblogs.com/liuhuan086/p/13581708.html
Copyright © 2020-2023  润新知