Redis | 青训营笔记

76 阅读4分钟

这是我参加「第五届青训营 」伴学笔记创作活动的第 14 天。作为一个十分重要的非关系型数据库,Redis在各种项目中都有广泛应用,此次笔记记录了Redis相关的知识.

重点内容

1、Redis的特点 2、Redis的基本工作原理 3、Redis的数据结构与基本类型

主要知识点

一、Redis基本介绍

1、为什么要有Redis

在学习Redis之初,首先需要思考:明明已经有Mysql,为什么还要学习Redis呢?这个问题最重要的一个原因在于,在实际应用中,往往有些数据使用频率较高,有些数据使用频率较低,其中使用频率高的称为热数据。在mysql中,无论数据使用频率是高是低,都会重复查找mysql。这种查找方式相当耗费时间。但如果我们可以通过将热数据存入内存,在内存中查找数据,可以大大加快增删改查的速度。而Redis正是为了实现这一策略而出现的。

2、Redis基本工作原理

1、数据从内存中读写

2、通过内置的两种策略将数据持久化存储

  • AOF:记录每次对数据的操作到硬盘上,以操作的形式记录数据
  • RDB:把当前数据生成快照保存在硬盘上。直接记录数据

3、单线程处理所有操作命令

4、Redis在许多语言都可以通过Redis库函数进行操作,如Go的go-redis库,java的Redis依赖包等

3、Redis的优缺点

优点:

  1. 数据存储在内存, 读写速度快,性能优异
  2. 支持数据持久化,便于数据备份、恢复
  3. 支持简单的事务,操作满足原子性
  4. 支持String、List、Hash、Set、Zset五种数据类型,满足多场景需求
  5. 支持主从复制,实现读写分离,分担读的压力
  6. 支持哨兵机制,实现自动故障转移

缺点:

  1. 数据存储在内存,主机断电则数据丢失
  2. 存储容量受到物理内存的限制,只能用于小数据量的高性能操作
  3. 在线扩容比较困难,系统上线时必须确保有足够的空间
  4. 用于缓存时,易出现’缓存雪崩‘,’缓存击穿‘等问题

二、Redis基本类型

1、字符串(String)

字符串类型是Redis中最基本的数据存储类型,它是一个由字节组成的序列,在Rediss中是二进制安全的。所谓二进制安全,即在传输数据时,保证二进制数据也就是不被篡改、破译等,如果遭受到攻击,能够及时检测出来。

String中的所有数据存储在单个对象中,增删查的速度很快,往往用于存储计算在线人数、访问量等。

2、哈希(Hash)

哈希 是一个键值(key=>value)对集合。Redis hash是一个 string 类型的 field 和 value 的映射表,这种类型可以构造出类似对象的结构,很适用于存储对象。

Redis hash适合用于存储对象数据,如用户信息等。

3、列表(List)

列表是简单的字符串列表,按照插入顺序排序。你可以添加一个元素到列表的头部(左边)或者尾部(右边)。列表从数据结构上看是一个双向队列,可以从两段进行队列操作。

列表适合用于存储消息队列。

4、集合(Set)

Set 是 string 类型的无序集合。集合是通过哈希表实现的,所以添加,删除,查找的复杂度都是 O(1)。所谓集合就是一堆不重复值的无序组合。

集合适合用在存储关系类数据,如微博中将关注列表以集合的形式存储。

5、有序集合(Sorted Set)

set也叫Redis zset ,和set 一样也是string类型元素的集合,且不允许重复的成员。不同的是每个元素都会关联一个double类型的分数。redis可以通过分数来为集合中的成员进行从小到大的排序。

有序集合适合用于积分排行榜等有序的记录。

总结

今天学习了Redis相关的基本工作原理,Redis的特点以及Redis的五种基本类型。后面还需要继续学习Redis的相关知识。

参考资料

blog.csdn.net/Continue_Py…

worktile.com/kb/ask/2047…