ICode9

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

Redis_九大数据类型

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

标签: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

专注分享技术,共同学习,共同进步。侵权联系[admin#icode9.com]

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

ICode9版权所有