随笔 - 934, 文章 - 0, 评论 - 249, 阅读 - 345万

导航

< 2025年3月 >
23 24 25 26 27 28 1
2 3 4 5 6 7 8
9 10 11 12 13 14 15
16 17 18 19 20 21 22
23 24 25 26 27 28 29
30 31 1 2 3 4 5

Redis 的Hashs(哈希表)数据类型

Posted on   蝈蝈俊  阅读(720)  评论(0编辑  收藏  举报

在Memcached中,我们经常将一些结构化的信息打包成hashmap,在客户端序列化后存储为一个字符串的值,比如用户的昵称、年龄、性别、积分等,这时候在需要修改其中某一项时,通常需要将所有值取出反序列化后,修改某一项的值,再序列化存储回去。这样不仅增大了开销,也不适用于一些可能并发操作的场合(比如两个并发的操作都需要修改积分)。而Redis的Hash结构可以使你像在数据库中Update一个属性一样只修改某一项属性值。

本文的命令参考:http://www.redisdoc.com/en/latest/hash/index.html

赋值与取值

赋值设置命令:HMSET key field value [field value ...]

取值命令:HMGET key field [field ...]

 

127.0.0.1:6379> hmset pet dog "doudou" cat "tom" aa "郭红俊"              # 一次设置多个域         
OK
127.0.0.1:6379> hmget pet dog
1) "doudou"
127.0.0.1:6379> hmget pet dog aa dd                                                # 返回值的顺序和传入参数的顺序一样
1) "doudou"
2) "\xe9\x83\xad\xe7\xba\xa2\xe4\xbf\x8a"
3) (nil)                                                                                          # 不存在的域返回nil值 
127.0.0.1:6379>

 

批量操作命令

127.0.0.1:6379> hkeys pet
1) "dog"
2) "cat"
3) "aa"
127.0.0.1:6379> hvals pet
1) "doudou"
2) "tom"
3) "\xe9\x83\xad\xe7\xba\xa2\xe4\xbf\x8a"
127.0.0.1:6379> hgetall pet
1) "dog"
2) "doudou"
3) "cat"
4) "tom"
5) "aa"
6) "\xe9\x83\xad\xe7\xba\xa2\xe4\xbf\x8a"
127.0.0.1:6379> hdel pet aa
(integer) 1
127.0.0.1:6379> hgetall pet
1) "dog"
2) "doudou"
3) "cat"
4) "tom"
127.0.0.1:6379>

判断是否存在

127.0.0.1:6379> hexists pet bbb
(integer) 0
127.0.0.1:6379> hexists pet dog
(integer) 1

 

参考资料:

Redis 命令参考
http://www.redisdoc.com/en/latest/index.html

十五分钟介绍 Redis数据结构
http://blog.nosqlfan.com/html/3202.html

Redis系统性介绍
http://blog.nosqlfan.com/html/3139.html

Redis之七种武器
http://blog.nosqlfan.com/html/2942.html

试用redis
http://try.redis.io/

Redis 设计与实现
http://www.redisbook.com/en/latest/

编辑推荐:
· 记一次.NET内存居高不下排查解决与启示
· 探究高空视频全景AR技术的实现原理
· 理解Rust引用及其生命周期标识(上)
· 浏览器原生「磁吸」效果!Anchor Positioning 锚点定位神器解析
· 没有源码,如何修改代码逻辑?
阅读排行:
· 分享4款.NET开源、免费、实用的商城系统
· 全程不用写代码,我用AI程序员写了一个飞机大战
· MongoDB 8.0这个新功能碉堡了,比商业数据库还牛
· 白话解读 Dapr 1.15:你的「微服务管家」又秀新绝活了
· 记一次.NET内存居高不下排查解决与启示
点击右上角即可分享
微信分享提示