【Redis】回顾下Redis基础知识点,还记得哪些?

本文涉及的产品
Redis 开源版,标准版 2GB
推荐场景:
搭建游戏排行榜
云数据库 Tair(兼容Redis),内存型 2GB
简介: 回顾下Redis基础知识点,还记得哪些?Redis 是完全开源的,遵守 BSD 协议,是一个高性能的 key-value 数据库。Redis 的数据类型都是基于基本数据结构的,比如支持它支持字符串、哈希表、列表、集合、有序集合,位图,hyperloglogs等数据类型 ,同时对程序员透明,无需进行额外的抽象,使用方便。

什么是Redis?

Redis 是完全开源的,遵守 BSD 协议,是一个高性能的 key-value 数据库。
Redis 的数据类型都是基于基本数据结构的,比如支持它支持字符串、哈希表、列表、集合、有序集合,位图,hyperloglogs等数据类型 ,同时对程序员透明,无需进行额外的抽象,使用方便。
Redis 运行在内存中但是可以持久化到磁盘,所以在对不同数据集进行高速读写时需要权衡内存,因为数据量不能大于硬件内存。
所以使用Redis读写数据都是非常快的。内置复制、Lua脚本、LRU收回、事务以及不同级别磁盘持久化功能,同时通过Redis Sentinel提供高可用,通过Redis Cluster提供自动分区。

Redis的常用数据类型有哪些?

支持多种类型的数据结构,主要区别是value存储的数据格式不同:

  • string:最基本的数据类型,二进制安全的字符串,最大512M。
  • list:按照添加顺序保持顺序的字符串列表。
  • set:无序的字符串集合,不存在重复的元素。
  • sorted set:已排序的字符串集合。
  • hash:key-value对格式

Redis与Memcache的区别?

Redis Memcache
数据操作方面 支持list、set、sorted set、hash 等数据结构 只支持简单的key-value存储,不支持枚举,不支持持久化和复制等功能
内存管理方面 支持数据的持久化,可以将内存中的数据保持在磁盘中,重启的时候可以再次加载进行使用 Memecache把数据全部存在内存之中
线程方面 Redis使用单线程的多路 IO 复用模型 Memcached是多线程,非阻塞IO复用的网络模型
集群管理方面 Redis 目前是原生支持 cluster 模式的 Memcached没有原生的集群模式,需要依靠客户端来实现往集群中分片写入数据

Redis的持久化方案由哪些?

Redis持久化方案支持RDB和AOF,下面分别介绍下:
RDB持久化
RDB持久化可以使用save或bgsave,为了不阻塞主进程业务,一般都使用bgsave,流程分为以下几个步骤:

  • Redis 进程会 fork 出一个子进程(与父进程内存数据一致)。
  • 父进程继续处理客户端请求命令
  • 由子进程将内存中的所有数据写入到一个临时的 RDB 文件中。
  • 完成写入操作之后,旧的 RDB 文件会被新的 RDB 文件替换掉。

RDB持久化优点和缺点

优点 缺点
RDB持久化文件小,Redis数据恢复时速度快 如果业务场景很看重数据的持久性 (durability),那么不应该采用 RDB 持久化。如果 Redis 每 5 分钟执行一次 RDB 持久化,要是 Redis 意外奔溃了,那么最多会丢失 5 分钟的数据
子进程不影响父进程,父进程可以持续处理客户端命令 RDB文件压缩会减小文件体积,但会对CPU有额外的消耗
子进程fork时采用copy-on-write方式,大多数情况下,没有太多的内存消耗,效率比较好。 如果Redis此时写操作较多,可能导致额外的内存占用,甚至内存溢出

AOF持久化
Redis 执行 AOF持久化时,会将接收到的写命令追加到 AOF 文件的末尾,因此 Redis 只要对 AOF 文件中的命令进行回放,就可以将数据库还原到原先的状态。
Redis 不断将接收到的写命令追加到 AOF 文件中,导致 AOF 文件越来越大。过大的 AOF 文件会消耗磁盘空间,并且导致 Redis 重启时更加缓慢。
为了解决这个问题,在适当情况下,Redis 会对 AOF 文件进行重写,去除文件中冗余的命令,以减小 AOF 文件的体积。在重写 AOF 文件期间, Redis 会启动一个子进程,由子进程负责对 AOF 文件进行重写。
可以通过下面两个配置项,控制 Redis 重写 AOF 文件的频率:

- auto-aof-rewrite-min-size 64mb
- auto-aof-rewrite-percentage 100

这两个配置的作用:当 AOF 文件的体积大于 64MB,并且 AOF 文件的体积比上一次重写之后的体积大了至少一倍,那么 Redis 就会执行 AOF 重写。
AOF持久化优点和缺点

优点 缺点
持久化频率高 文件体积大
数据可靠性高,没有额外的内存或CPU消耗 文件大导致服务恢复时读取文件时间较长,效率略低

Redis的集群方式有哪些?

Redis集群可以分为主从集群分片集群两类。
主从集群一般一主多从,主库用来写数据,从库用来读数据。结合哨兵,可以再主库宕机时从新选主,目的是保证Redis的高可用

分片集群是数据分片,我们会让多个Redis节点组成集群,并将16383个插槽分到不同的节点上。存储数据时利用对key做hash运算,得到插槽值后存储到对应的节点即可。因为存储数据面向的是插槽而非节点本身,因此可以做到集群动态伸缩。目的是让Redis能存储更多数据。

集群分类 特点 目的
主从集群 一主多从,主库用来写数据,从库用来读数据 (哨兵模式) 保证Redis的高可用
分片集群 就是对数据分片,多个Redis节点组成集群,并将16383个插槽分到不同的节点上。存储数据时利用对key做hash运算,得到插槽值后存储到对应的节点即可 让Redis能存储更多数据
相关实践学习
基于Redis实现在线游戏积分排行榜
本场景将介绍如何基于Redis数据库实现在线游戏中的游戏玩家积分排行榜功能。
云数据库 Redis 版使用教程
云数据库Redis版是兼容Redis协议标准的、提供持久化的内存数据库服务,基于高可靠双机热备架构及可无缝扩展的集群架构,满足高读写性能场景及容量需弹性变配的业务需求。 产品详情:https://www.aliyun.com/product/kvstore     ------------------------------------------------------------------------- 阿里云数据库体验:数据库上云实战 开发者云会免费提供一台带自建MySQL的源数据库 ECS 实例和一台目标数据库 RDS实例。跟着指引,您可以一步步实现将ECS自建数据库迁移到目标数据库RDS。 点击下方链接,领取免费ECS&RDS资源,30分钟完成数据库上云实战!https://developer.aliyun.com/adc/scenario/51eefbd1894e42f6bb9acacadd3f9121?spm=a2c6h.13788135.J_3257954370.9.4ba85f24utseFl
相关文章
|
1月前
|
运维 NoSQL 测试技术
从一个事故中理解Redis(几乎)所有知识点
作者从一个事故中总结了Redis(几乎)所有的知识点,供大家学习。
|
6月前
|
缓存 NoSQL 定位技术
深入探索Redis:面试中必须掌握的关键知识点
深入探索Redis:面试中必须掌握的关键知识点
|
存储 NoSQL 测试技术
关于redis涉及的知识点,C语言如何操作redis
关于redis涉及的知识点,C语言如何操作redis
|
存储 SpringCloudAlibaba 运维
Redis高级知识点总结
在 Redis 6.0 中,非常受关注的第一个新特性就是多线程。这是因为,Redis 一直被大家熟知的就是它的单线程架构,虽然有些命令操作可以用后台线程或子进程执行(比如数据删除、快照生成、AOF 重写),但是,**从网络 IO 处理到实际的读写命令处理,都是由单个线程完成的**。随着网络硬件的性能提升,Redis 的性能瓶颈有时会出现在网络 IO 的处理上,也就是说,单个主线程处理网络请求的速度跟不上底层网络硬件的速度
260 0
Redis高级知识点总结
|
存储 缓存 NoSQL
redis知识点
redis 知识点
84 0
|
缓存 监控 NoSQL
【Redis】Redis知识点阶段性总结 2
【Redis】Redis知识点阶段性总结
59 0
|
NoSQL Linux Redis
【Redis】Redis知识点阶段性总结 1
【Redis】Redis知识点阶段性总结
95 0
|
存储 缓存 监控
全新Redis6全部知识点,零基础入门3
全新Redis6全部知识点,零基础入门
12226 1
|
存储 缓存 NoSQL
全新Redis6全部知识点,零基础入门2
全新Redis6全部知识点,零基础入门
|
存储 缓存 JSON
全新Redis6全部知识点,零基础入门1
全新Redis6全部知识点,零基础入门
下一篇
无影云桌面