面试遇到过的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具有下列特征
- 可排序
- 元素不重复
- 查询速度快
所以经常被用来实现排行榜等功能
标签:存储,set,hash,数据类型,Redis,拿捏,数据 From: https://www.cnblogs.com/always-uie/p/18187101这篇只介绍了数据类型,下篇介绍Redis的持久化,不急慢慢来ovo