zoukankan      html  css  js  c++  java
  • Redis hash 哈希(感觉作为数据库使用时,是最重要的一种数据类型)

    Redis - hash 哈希

    1、hash:
    是一个键值对的结合,类似于pyton中的map,或者php数组,是一个键值对数据
    是一个string类型的field => value 的映射表。hash比较适合存储对象
    每个 hash 可以存储 232 - 1 键值对(40多亿)

    2、hash数据的存储方式:
    1)序列化处理,数据处理为json串
    缺点:修改值比较麻烦,需要每次全部读取,反序列化,更新,再序列化存储
    2)存储为多个键值对
    缺点:数据存放较多,浪费存储空间
    3)hash存储方式:

    field   value
    id        1
    name  wkk
    age     28
    

    3、hash数据常用命令:

    1)hset <key> <field> <value>
    给键名为key的hash中的field字段赋值为value
    例如: hset user_1 id 1 name wangkkk sex 男 age 28
    	
    2)hget <key> <field>
    取出键名为key的hash中的field字段的值
    eg: hget user_1 name
    
    3)hmset <key> <field1> <value1> <fields2> <value2>
    给键名为key的hash批量写入多个 field =>value
    疑问:hmset 和 hset 区别是啥,,,都可以实现批量写入多个键值对。。。
    答:旧版redis中hset只能写入单个键值对,多个键值对必须hmet,现在新版redis两个命令都可以			写入多个键值对,后续hmset被视为弃用,建议都使用hset操作
    
    4)hexists <key> <field>:
    判断键名为key的hash中field键名是否存在
    
    5)hkeys <key>
    查看键名为key的hash值中的所有field信息
    
    6)hvas <key>
    查看键名为key的hash值中的所有value信息
    
    7)hincrby <key> <field> number
    将键名为key的hash值中的field字段中的值 加 number值
    注意:number数值为负数时,就是减少操作
    
    8)hsetnx <key> <field> <value>:
    给键名为key的hash数据中添加 键值对,和hset的区别是,只有当前hash数据中field字段不存在		时才能添加,field存在时不能添加,和字符串类型中的setnx操作类似
    

    4、hash数据结构
    当hash中的field-value键值对长短端且个数少时(< 512时),使用压缩列表,存放在连续内存中
    当hash中的field-value键值对个数多时,使用hashtable,hash表中

    本文来自博客园,作者:alisleepy,转载请注明原文链接:https://www.cnblogs.com/alisleepy/p/15647510.html

  • 相关阅读:
    iOS开发UI篇—字典转模型
    iOS开发UI篇—懒加载
    iOS开发UI篇—九宫格坐标计算
    iOS开发UI篇—简单的浏览器查看程序
    iOS开发UI篇—transframe属性(形变)
    iOS开发UI篇—Button基础
    OS开发UI基础—手写控件,frame,center和bounds属性
    Foundation框架—集合
    Foundation框架—字符串
    uvalive 4255 Guess(拓扑排序)
  • 原文地址:https://www.cnblogs.com/alisleepy/p/15647510.html
Copyright © 2011-2022 走看看