小小Redis数据类型,拿捏

面试遇到过的Redis问题

  • Redis的数据类型

  • 怎么利用Redis解决超卖问题

1. 什么是Redis

Redis就是一个非关系型数据库(NoSQL),我们知道关系型数据库MySQL,在MySQL里我们对于数据的增删改查需要SQL语句(select * from...),麻不麻烦——麻烦,慢不慢——当然是慢的,因为数据是存在硬盘上的,存在硬盘上的数据明显特点就是重启电脑数据还在,但是我们要对数据进行处理的时候就需要将数据拿到内存里

所以聪明的人类想到,既然操作存储在硬盘里的数据很慢,那如果我们将数据存在内存里,操作起来不就快了吗

所以NoSQL就出现了,而Redis就是常见的NoSQL

2. Redis概念

Redis (Remote Dictionary Server) 是用 C 语言开发的一个开源的高性能键值对(key-value)数据库。

3. Redis特征

(1)数据间没有必然的关联关系;

(2)内部采用单线程机制进行工作;

(3)高性能。

官方提供测试数据,50个并发执行100000 个请求,读的速度是110000 次/s,写的速度是81000次/s。

(4)多数据类型支持

字符串类型:string list

列表类型:hash set

散列类型:zset/sorted_set

集合类型

有序集合类型

(5)支持持久化,可以进行数据灾难恢复

4. Redis常见的数据类型

string 、 hash 、 list 、 set 、 sorted_set/zset

1. String

(1)存储的数据:单个数据,最简单的数据存储类型,也是最常用的数据存储类型。

string,他就是存一个字符串儿,注意是value那一部分是一个字符串,它是redis中最基本、最简单的存储数据的格式。

(2)存储数据的格式:一个存储空间保存一个数据

每一个空间中只能保存一个字符串信息,这个信息里边如果是存的纯数字,他也能当数字使用。

(3)存储内容:通常使用字符串,如果字符串以整数的形式展示,可以作为数字操作使用

2.hash

(1)新的存储需求:对一系列存储的数据进行编组,方便管理,典型应用存储对象信息

(2)需要的存储结构:一个存储空间保存多个键值对数据

(3)hash类型:底层使用哈希表结构实现数据存储

(4)hash存储和String类型存储的区别就是,string在value部分只能存储一种数据,如果一个数据有多条信息呢,比如一个学生信息,如果利用string存储就要存好多条,但是hash可以将name、age等装在一起,如下图

3. list

可重复

(1)数据存储需求:存储多个数据,并对数据进入存储空间的顺序进行区分

(2)需要的存储结构:一个存储空间保存多个数据,且通过数据可以体现进入顺序

(3)list类型:保存多个数据,底层使用双向链表存储结构实现

4. set

不可重复

(1)新的存储需求:存储大量的数据,在查询方面提供更高的效率

(2)需要的存储结构:能够保存大量的数据,高效的内部存储机制,便于查询

(3)set类型:与hash存储结构完全相同,仅存储键,不存储值(nil),并且值是不允许重复的

5. sorted_set/zset

Redis的SortedSet是一个可排序的set集合,每部的每个元素都带有一个score属性,可以基于score属性对元素进行排序。底层的实现是一个跳表(SkipList)加hash表

Sorted具有下列特征

  • 可排序
  • 元素不重复
  • 查询速度快

所以经常被用来实现排行榜等功能


这篇只介绍了数据类型,下篇介绍Redis的持久化,不急慢慢来ovo

热门相关:尝尝前嫂子的味道   欲望之毒:成瘾   时尚之王2   天使派我来爱你   杜蕾斯的爱情生活