Redis五大数据类型使用——Hash

1、Hash数据类型概述
hash是一个键值对(key - value)集合,用于存储对象。可以采用这样的命名方式(hash格式):对象类别和ID构成键名,使用字段表示对象的属性,而字段值则存储属性值。
如:存储ID为2的汽车对象。如果Hash中包含很少的字段,那么该类型的数据也将仅占用很少的磁盘空间。每一个Hash可以存储4294967295个键值对。

2、Hash数据类型常用命令
1、hset :给键值为myhash的键设置字段为##,值为##
2、hget:获取键值为##,字段为##的值
3、hdel:删除##键中字段名为##的字段
4、hexists:判断##键中是否存在##字段
5、hlen:命令获取##键的字段数量
6、hsetnx:通过hsetnx命令给##添加新字段##,其值为##,因为该字段已经被删除,所以该命令添加成功并返回1
 

127.0.0.1:6379> hset myhash field1 "zhangsan"     ## 设置键myhash 字段为field1,值为zhangsan
(integer) 1
127.0.0.1:6379> hget myhash field1                ## 获取myhash 的字段field1的值
"zhangsan"
127.0.0.1:6379> hget myhash field2              ## 获取myhash 的字段field2的值,提示为不存在
(nil) 
127.0.0.1:6379> hset myhash field2 "san"        ## 设置键myhash,字段field2的值
(integer) 1
127.0.0.1:6379> hlen myhash                     ## 显示myhash 的字段数量
(integer) 2
127.0.0.1:6379> hexists myhash field1           ## 查看myhash字段field1是否存在
(integer) 1
127.0.0.1:6379> hdel myhash field1              ## 删除myhash字段field1
(integer) 1
127.0.0.1:6379> hdel myhash field1              ## myhash字段field1,显示不成功,之前已删除
(integer) 0
127.0.0.1:6379> hexists myhash field1   ## 查看myhash字段field1是否存在,返回码为0,表示不存在      
(integer) 0
127.0.0.1:6379> hsetnx myhash field1 "zhang" ## 检测myhash是否存在field1,返回值为1,表示不存 
                                             ## 在且已创建
(integer) 1
127.0.0.1:6379> hsetnx myhash field1 "zhang" ## 返回值为0,表示才存在,命令不执行
(integer) 0

7、hincrby:给键的字段的值加1

8、hgetall:获取键的所有字段及其值

9、hkeys:获取键中所有字段的名字

10、hvals:获取键中所有字段的值

11、 hmset:批量设置键的字段值

12、hmget:批量获取键的字段值

127.0.0.1:6379> hmset myhash field1 "hello" field2 "world"   
                 
                    ## 为键myhash,一次性设置多个字段,分别是field1="hello",field2="world"
OK
127.0.0.1:6379> hmget myhash field1 field2    ##获取myhash键的多个字段
1) "hello"  
2) "world"
127.0.0.1:6379> hgetall myhash                ##获取myhash键的所有字段              
1) "field1"
2) "hello"
3) "field2"
4) "world"
127.0.0.1:6379> hkeys myhash                  ##获取myhash键中所有字段的名字
1) "field1"
2) "field2"
127.0.0.1:6379> hvals myhash                  ## 获取myhash键中所有字段的值
1) "hello"
2) "world"

### Redis 支持的五种数据结构 #### String 类型 String 是最简单的类型,可以看作是一个字符串或者二进制安全的字节序列。除了存储简单字符串外,还可以用于计数器等场景。 ```python SET key value # 设置指定 key 的值 GET key # 获取指定 key 的值 INCR key # 将 key 中储存的数字值增一 DECR key # 将 key 中储存的数字值减一 ``` 对于对象类数据而言,在有频繁更新需求的情况下,直接使用 string 存储整个 JSON 或者其他形式的对象串确实不够灵活[^1]。 #### Hash 类型 Hash 数据类型允许对一系列字段进行分组管理,适合用来表示对象属性。内部通过 field-value 形式的键值对来组织数据,其中 field 和 value 都是字符串类型的。 ```python HSET user:1 name "Alice" # 向哈希表 user:1 中设置域 name 的值为 Alice HMSET user:2 age 28 city Beijing # 同时向多个字段赋值 HGETALL user:1 # 获取哈希表中所有的字段和值 ``` 这种设计使得 hash 成为了处理复杂对象的理想选择之一。 #### List 类型 List 表现为双向链表的形式,意味着可以从两端高效地插入或移除元素。适用于消息队列之类的场合。 ```python LPUSH mylist "world" # 在列表头部添加元素 RPUSH mylist "hello" # 在列表尾部添加元素 LRANGE mylist 0 -1 # 输出整个列表的内容 LPOP mylist # 移除并返回列表的第一个元素 RPOP mylist # 移除并返回列表最后一个元素 ``` 不过需要注意的是,当需要确保唯一性的时候,则应该考虑采用 set 来代替 list[^2]。 #### Set 类型 Set 实际上是一群独一无二的字符组成的集合,不允许重复项的存在。由于其特性非常适合做去重工作,并且提供了丰富的集合运算指令如交集、并集、差集等操作。 ```python SADD unique_set item1 # 添加新成员到集合里 SMEMBERS unique_set # 列举出所有成员 SCARD unique_set # 查看集合大小 SISMEMBER unique_set member # 测试某元素是否属于该集合 SINTER setA setB # 计算两个集合之间的交集 ``` 这些功能让 set 特别适合作为代表社交网络关系模型中的好友圈或者其他关联群体的关系表达工具[^4]。 #### Sorted Set (Zset) 类型 Sorted Set 不仅具备 set 的特点——即不会出现相同的分数对应不同的成员的情况;而且还能按照 score 排序,这使其能够轻松构建排行榜之类的应用程序逻辑。 ```python ZADD leaderboard 95.5 player1 # 给定分数给玩家排名 ZRANK leaderboard player1 # 查询特定用户的排名位置 ZSCORE leaderboard player1 # 得知具体得分情况 ZRANGEBYSCORE leaderboard min max # 根据分数范围获取区间内的用户名单 ``` 综上所述,每一种数据结构都有各自的优势领域,合理选用才能发挥最大效能。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值