计算机系统应用教程网站

网站首页 > 技术文章 正文

Redis的Hash的常用命令和使用场景

btikc 2025-01-10 11:53:24 技术文章 29 ℃ 0 评论

Hash类型

简介

Hash类型是String类型的field和value的映射表,或者说是一个string集合, hash特别适合用于存储对象,相比教而言,将一个对象类型存储在Hash类型要存储在String类型里占用更少的内存空间,并对整个对象的存取。可以看成具有KEY和VALUE的MAP容器,该类型非常适合于存储值对象的信息,如: uname,upass,age等。该类型的数据仅占用很少的磁盘空间(相比于JSON)。Redis 中每个 hash 可以存储 2的32次方 - 1 键值对 (48多亿)

Hash命令

常用命令

赋值语法:

:为指定的KEY,设定FILD/VALUEHSET KEY FIELD VALUEHMSET KEY FIELD VALUE [FIELD1,VALUE1]- :同时将多 field-value (域-值)对设置到哈希表 key 中

加入我存入一个user对象id=1,name = lisi age =18

hset user:1 id 1 name lisi age 18

取值语法:

HGET KEY FIELD:获取存储在HASH中的值,根据FIELD得到VALUEHMGET KEY fieldlfield11:获取key所有给定字段的值HGETALL KEY:返回HASH表中所有的字段和值

HKEYS KEY:获取所有哈希表中的字段

HLEN KEY:获取哈希表中字段的数量

获取一个字段

hget user:1 name

获取多个字段用hmget 比如获取name和age

hmget user:1 name age

获取全部字段 hgetall

hgetall user:1

获取hash表中获取所有字段

hkeys user:1

删除字段 hdel

hdel user:1 remark

自增 hincrby 比如给年龄自增1

hincrby user:1 age 1


应用场景

哈希的应用场景: (存储一个用户信息对象数据)

常用于存储一个对象/分布式Session1

2、为什么不用字符串存储一个对象?

哈希是最接近关系数据库结构的数据类型,可以将数据库一条记录或程序中一个对象转换成哈希图存放在红包中。用户标识为查找的键,存储的值用户对象包含姓名,年龄,生日等信息,如果用普通的key/value结构来存储,主要有以下2 种存储方式.

第一种方式将用户ID作为查找key,把其他信息封装成一个对象以序列化的方式存储,这种方式的缺点是,增加了序列化/反序列化的开销,并且在需要修改其中一项信息时,需要把整个对象取回,并且修改操作需要对并发进行保护,引入CAS等复杂问

题。第二种方法是这个用户信息对象有多少成员就存成多少个键值对儿,用用户ID+对应属性的名称作为唯标识来取得对应属性的值,虽然省去了序列化开销和并发问题,但是用户编号为重复存储,如果存在大量这样的数据,内存浪费还是非常可观的。

总结:

红包提供的哈希很好的解决了这个问题,红包的哈希实际是内部存储的值为一个哈希映射,

并提供了直接存取这个Map成员的接口

Tags:

本文暂时没有评论,来添加一个吧(●'◡'●)

欢迎 发表评论:

最近发表
标签列表