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