Redis的五种基本数据类型

基础知识

redis默认有16个数据库
默认使用第0个

Redis为什么单线程还那么快?

  • 误区1:高性能的服务器一定是多线程
  • 误区2:多线程(cpu上下文会切换)一定比单线程效率高

核心:Redis是将所有的数据放在内存中的,所以说使用单线程去操作效率就是最高的,多线程(cpu上下文会切换:耗时的操作!),对于内存系统来说,如果没有上下文切换效率就是最高的,多次读写都是在一个CPU上的,在内存存储数据情况下,单线程就是最佳的方案。

  • Redis是单线程的,Redis是基于内存操作的。
  • 所以Redis的性能瓶颈不是CPU,而是机器内存和网络带宽。
  • 在Redis中无论什么数据类型,在数据库中都是以key-value形式保存,通过进行对Redis-key的操作,来完成对数据库中数据的操作。

五大数据类型

一、String(字符串)
String类似的使用场景:value除了是字符串还可以是数字,用途举例:

  • 计数器
  • 统计多单位的数量:uid:123666:follow 0
  • 粉丝数
  • 对象存储缓存

二、List(列表)

  • Redis列表是简单的字符串列表,按照插入顺序排序。你可以添加一个元素到列表的头部(左边)或者尾部(右边)
  • 一个列表最多可以包含 232 - 1 个元素 (4294967295, 每个列表超过40亿个元素)。
  • 首先我们列表,可以经过规则定义将其变为队列、栈、双端队列等。

总结

  1. list实际上是一个链表,before Node after , left, right 都可以插入值。

  2. 如果key不存在,则创建新的链表。

  3. 如果key存在,新增内容。

  4. 如果移除了所有值,空链表,也代表不存在。

  5. 在两边插入或者改动值,效率最高!修改中间元素,效率相对较低。

应用

消息排队!消息队列(Lpush Rpop),栈(Lpush Lpop)。

三、Set(集合)

  • Redis的Set是string类型的无序集合。集合成员是唯一的,这就意味着集合中不能出现重复的数据。
  • Redis中集合是通过哈希表实现的,所以添加,删除,查找的复杂度都是O(1)。
  • 集合中最大的成员数为 232 - 1 (4294967295, 每个集合可存储40多亿个成员)。

四 、Hash(哈希)

  • Redis hash 是一个string类型的field和value的映射表,hash特别适合用于存储对象。
  • Set就是一种简化的Hash,只变动key,而value使用默认值填充。可以将一个Hash表作为一个对象进行存储,表中存放对象的信息。

应用场景:
​ Hash变更的数据user name age,尤其是用户信息之类的,经常变动的信息!Hash更适合于对象的存储,Sring更加适合字符串存储!

五、Zset(有序集合)

  • 不同的是每个元素都会关联一个double类型的分数(score)。redis正是通过分数来为集合中的成员进行从小到大的排序。
  • score相同:按字典顺序排序
  • 有序集合的成员是唯一的,但分数(score)却可以重复。

应用案例:

  • set排序 存储班级成绩表 工资表排序!
  • 普通消息,1.重要消息 2.带权重进行判断
  • 排行榜应用实现,取Top N测试
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值