Redis系列三、redis的五种数据结构和相关指令之Hash

本节中将介绍Redis支持的主要数据结构,以及相关的常用Redis命令。redis是一种基于键值对(key-value)的内存数据库,redis数据结构可以分为string、hash、list、set、sorted set。

redis的五种数据结构和相关指令之Hash

哈希hash

哈希hash是一个string类型的field和value的映射表,hash特适合用于存储对象,用Hash中的field对应对象的field即可。

每个hash对象有三个属性:key、field和value;每个hash对象有一个key值,每个key可以对应多个field,每个field对应一个value。

比如将关系型数据表转成redis存储:

 

使用hash后的存储方式为:


a、基本命令

 设值:hset key field value

hset user:1 name james         //成功返回1,失败返回0

取值:hget key field

hget user:1 name              //返回james

删值:hdel key field

hdel user:1 age               //返回删除的个数

计算个数:hlen key

hset user:1 name james; hset user:1 age 23; 
hlen user:1               //返回2,user:1有两个属性值

批量设值:

hmset user:2 name james age 23 sex boy //返回OK

批量取值:

hmget user:2 name age sex   //返回三行:james 23 boy

 判断field是否存在:

hexists user:2 name //若存在返回1,不存在返回0

 获取所有field,时间复杂度O(N),慎用:

hkeys user:2            // 返回name age sex三个field

获取user:2所有value,时间复杂度O(N),慎用:

hvals user:2     // 返回james 23 boy

获取user:2所有field与value,时间复杂度O(N),慎用:

hgetall user:2 //name age sex james 23 boy值

增加数值:

hincrby user:2 age 1      //age+1
hincrbyfloat user:2 age 2   //浮点型加2


b、三种方案实现用户信息存储优缺点:

1、string原生:

set user:1:name james;
set user:1:age  23;
set user:1:sex boy;

优点: 简单直观,每个键对应一个值
缺点: 键数过多,占用内存多,用户信息过于分散,不用于生产环境

2、将对象序列化存入redis

set user:1 serialize(userInfo);

优点: 编程简单,若使用序列化合理内存使用率高
缺点: 序列化与反序列化有一定开销,更新属性时需要把userInfo全取出来进行反序列化,更新后再序列化到redis

3、使用hash类型:

hmset user:1 name james age 23 sex boy

优点: 简单直观,使用合理可减少内存空间消耗
缺点: 要控制ziplist与hashtable两种编码转换,且hashtable会消耗更多内存

总结: 对于更新不多的情况下,可以使用序列化,对于VALUE值不大于64字节可以使用hash类型
————————————————
版权声明:本文为CSDN博主「lingengy」的原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接及本声明。
原文链接:https://blog.csdn.net/w1lgy/article/details/84376841

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/497440.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

linux 运行 dmol3,Dmol3建模及优化

以单层石墨烯为例:1. 建模1) 打开MS,新建项目,通过File—import查找Structures/ceramics/graphite并打开,即引入石墨的晶格结构,命名为graphene;2) Build—Symmetry—Make P1,去除对称性&#x…

深度学习在推荐系统上的应用

作者:陈仲铭,知乎 ID:ZOMI深度学习最近大红大紫,深度学习的爆发使得人工智能进一步发展,阿里、腾讯、百度先后建立了自己的AI Labs,就连传统的厂商OPPO、VIVO都在今年开始筹备建立自己的人工智能研究所。确…

Redis系列四、redis的五种数据结构和相关指令之List

本节中将介绍Redis支持的主要数据结构,以及相关的常用Redis命令。redis是一种基于键值对(key-value)的内存数据库,redis数据结构可以分为string、hash、list、set、sorted set。 redis的五种数据结构和相关指令之List 列表list …

linux 串口最高速率,Uart 16c950 linux速度高于B4000000(4Mbps)

大家,我正在使用Ubuntu下的高速RS422 pci板(OXPCIe958).该设备可以工作高达15Mbps.我需要以10Mbps的速度工作,但我注意到在Linux下,如果我们使用termois,可以指定的最大速度是B4000000(4 Mbps).有没有办法在linux中指定自定义波特率?我试图改变这些值在termois.h中&…

那些顶级的AI机器人“大脑”

来源:机器人创新生态概要:如果说AI是赋予各个下游产业的“大脑”,那分布在世界各地的研究院就是AI的“大脑”。如果说AI是赋予各个下游产业的“大脑”,那分布在世界各地的研究院就是AI的“大脑”。从地域来看,美国依然…

Redis系列五、redis的五种数据结构和相关指令之Set

本节中将介绍Redis支持的主要数据结构中的set,以及相关的常用Redis命令。 redis的五种数据结构和相关指令之set 集合set 集合(set)与列表类似,都是用来保存多个字符串,但集合与列表有两点不同:集合中的元…

srt编辑的文件在linux显示乱码,解决看本地视频srt字幕乱码问题教程-srt文件

大家好,我是Ysaku,今天给大家带来一个解决srt字幕乱码问题的教程,今天在做视频的时候发现下载的视频配上srt字幕后显示的字幕会出现乱码情况,在修正问题后,我想大家也会也到这样的情况,那正好今天分享给大家…

李开复对话李飞飞:AI要理解人类的情感,还早着呢

来源:创业家第48届世界经济论坛年会在瑞士达沃斯召开,主题为“在分化的世界中打造共同命运”。达沃斯当地时间1月23日中午,在MIT的午餐会上,创新工场董事长李开复与李飞飞(Google Cloud AI/ML领域首席科学家&#xff0…

Redis系列六、redis的五种数据结构和相关指令之Sorted Set

本节中将介绍Redis支持的主要数据结构,以及相关的常用Redis命令。redis是一种基于键值对(key-value)的内存数据库,redis数据结构可以分为string、hash、list、set、sorted set。 redis的五种数据结构和相关指令之有序集合sorted …

linux内核spi总线驱动分析,Linux下的SPI总线驱动(三)

版权所有,转载请说明转自原创作者:南京邮电大学 通信与信息系统专业 研二 魏清五.SPI测试代码对于SPI总线驱动,我们可以分为SPI控制设备驱动和SPI接口设备驱动。而作为驱动开发人员主要是像SPI移植的时候一样会添加SPI控制设备和…

AI时代的高科技读心术:算法解码脑中图像

来源:科研圈翻译 李杨,审校 张梦茜,编辑 魏潇让我们想象一下:只要在心里浮现出某个人物或风景,就能从一堆数码照片中把它搜索出来。或者不用动笔就能画出一个新的厨房设计。又或者给心爱的人发送一张想象中的落日照…

linux 基础训练题,Linux习题练习

1 在主目录下创建abc文件,并设置其权限为同组用户有执行权限,属主有全部权限,其它用户没有权限。采用chmod命令,数字表示权限,分部是主,组,其他.权限为read,write,execute. 属主有全…

获取字段为List类型中的泛型类型

在java编程时,经常会使用反射去处理对象,有时会需要知道List的泛型类型:示例操作如下 obj pojo.newInstance();// 首先得到pojo所定义的字段Field[] fields pojo.getDeclaredFields();for (Field curField : fields) {// 设置字段可访问&a…

《Nature》发布毫米级软体机器人,可在没有任何物理干预情况下游走于人体

转载自公众号:机器人大讲堂概要:一直以来,微型机器人、软体机器人成为科学研究的热点,我们都期盼机器人能听从指挥的到达人体指定位置,在对人体危害最小的情况下递送药物或者切除病变组织。1966年著名作家艾萨克阿西莫…

Spring Data JPA 禁止自动更新

公司的项目后台架构是SpringBoot Spring Date JPA,采用MySQL数据库。在工作刚开始时就遇到了一个奇怪的现象。在采用Date JPA查询完数据库之后,若改变了查询出的对象属性,那么数据库就会自动更新。比如查询出一个studentPO的name为“小明”&…

Nature:寻找记忆的痕迹

来源:神经科技对于不是《神探夏洛克》超级粉丝的人来说,认知神经科学家Janice Chen对这部英国广播公司的热播侦探剧的了解比大多数人多。当观众观看这部电视剧的第一集然后描述其情节时,Chen能在脑部扫描仪的帮助下监视他们的脑子里正在发生什…

tcl linux 刷 安卓系统,安卓用户看过来—手把手教你刷第三方系统

来来来,小葵花课堂讲课啦。孩子咳嗽老不好,多半是废了,打一顿就好。手机卡顿老不好,先别着急,来刷个机吧。众所周知,因为安卓系统自身的特性,安卓手机用久了难免出现卡顿。一般来说解决的方法有…

DeepMind开源Psychlab平台——搭建AI和认知心理学的桥梁(附论文和代码下载)

来源:专知概要:DeepMind近期开源了Psychlab,这是一个利用认知心理学等领域知识来研究受控环境下人工智能体(Artificial Agent)的行为,从而模拟人类的行为。DeepMind近期开源了Psychlab,这是一个…

linux启动过程剖析,分析Linux系统的启动过程

导读一直使用linux系统,却对系统启动过程及系统初始化和各种服务的启动不太清楚。今天终于搞明白整个是怎么一回事了。本来想自己写篇文章,刚好在网上看到一篇不错的介绍,很详细,就直接拿来了。Linux系统的启动过程:BI…

扩展立方体 The Scale Cube

转自: https://akfpartners.com/growth-blog/scale-cube/ 比例立方体 2018年4月25日| 发布者:Robin McGlothin Scale Cube是用于定义微服务和扩展技术产品的模型。AKF Partners于2007年发明了Scale Cube,最初于2007年在我们的博客上在线发…