ICode9

精准搜索请尝试: 精确搜索
首页 > 数据库> 文章详细

Redis_九大数据类型

2022-05-28 19:31:26  阅读:197  来源: 互联网

标签:Hash 字节 数据类型 Redis 内存空间 九大 空间 数据结构


1.String 2.Hash 3.Set 4.Zset 5.BitMaps 6.Hyperlogloss 7.Streams 8.Bloom FIlter数据结构 9.

 

1.String-键值对类型

  • Redis存储的时候主动加序列化
  • 使用场景:1.Session  客户端>Nginx>WEB多个>Redis(共享内存)
  •      2.自增和自减,网站请求点赞评论数量等 大型网站不可能每次请求数据库,所以用redis操作内存,之后做个数据刷盘,把统计数据当道硬盘中
  • string底层数据结构:在功能中,除了上面场景,否则别使用string 因为会浪费大量内存空间,(只针对数值类型,int不包括,只有整型才是int类型)
  • 为什么会浪费内存空间
  • RAW编码:实际代表的就是用一种什么方式去开辟内存空间,而String的Raw编码 当你存60个字节的时候 就会给你开辟100个字节的空间 所以string底层会浪费大量数据空间 
  • embstr编码:如果操作Redis的时候,内容长度小于<=44字节 会自动选择embstr编码开辟空间,如果大于44字节 会使用RAW编码浪费空间
  • 验证

                

2.Hash 

  • 官网推荐使用的数据类型,1个大key,然后就是key value                 下面是hask,内存结构
  • 使用场景:用户信息(有name,address,iphone等)
  • Hash底层数据结构:
  • zipList:(压缩版的List,每个元素的内存空间一样,假如每个内存空间都是100字节,第1个元素10字节,第二个100字节,第三个20字节,浪费大量空间),而zipList是自动适应内存空间的, 第1个元素10字节,那么存储的内存空间就是10字节,都是在内存空间开辟一连串的空间,只不过zip会自动适应内存空间,但也有问题:每次要插入值的时候,要开辟新的大空间把原先的迁移过来,把新值插入进去,所以每次新值内容,就要开辟一次新的空间。查询的时候,要重头来计算前面的空间大小,所以查询速度变慢了。
  • hash:时间复杂度O(1),数组+链表形式,快速查询结果而且节省空间,但是问题就来了 
  • 如果链表越长复杂度就越高 怎么解决:Redis存哈希会存两个哈希  相当于人提两个桶,一个是有数据的,1个是空的,当你左边桶快满的时候,就开始使用到右边的桶了,左桶往右桶给数据。这里又牵扯到数据迁移的问题,redis再进行左桶往右桶给东西,是每一次操作只给1部分,然后还有个后台任务再跑。迁移过程中如果第二个快满了,就继续增加第一个的桶的空间  所以官网才推荐使用hash

3.Set 

4.Zset 

5.BitMaps 

6.Hyperlogloss 

7.Streams 

8.Bloom FIlter数据结构 

9.

标签:Hash,字节,数据类型,Redis,内存空间,九大,空间,数据结构
来源: https://www.cnblogs.com/LZXX/p/16321674.html

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有