Redis入门概述

1.1、Redis是什么

Redis:官网

高性能带有数据结构的Key-Value内存数据库

Remote Dictionary Server(远程字典服务器 )是完全开源的,使用ANSIC语言编写遵守BSD协议,例如String、Hash、List、Set、SortedSet等等。数据是存在内存中的,同时Redis支持事务、持久化、LUA脚本、发布/订阅、缓存淘汰、流技术等多种功能特性提供了主从模式、Redis Sentinel和Redis Cluster集群架构方案。

Redis是一个开源的(BSD许可)内存数据结构存储,用作数据库、缓存、消息代理和流引擎。Redis提供数据结构,如字符串、散列、列表、集合、带范围查询的排序集合、位图、超日志、地理空间索引和流。Redis具有内置的复制、Lua脚本、LRU逐出、事务和不同级别的磁盘持久性,并通过Redis Sentinel和Redis Cluster的自动分区提供高可用性。

1.2、Redis的主流功能

  1. 分布式缓存,挡在MySql数据库之前的带刀护卫

  2. 内存存储和持久化(RDB+AOF)redis支持异步将内存中的数据写到硬盘上,同时不影响继续服务

  3. 高可用架构搭配

  4. 缓存穿透、击穿、雪崩

  5. 分布式锁

  6. 队列

  7. 排行榜+点赞

  8. ...

与传统数据库关系(MySql)

Redis是Key-Value数据库(NoSQL一种),mysql是关系数据库(有一定的约束)

Redis数据操作主要在内存(查的快),而MySql主要存储在磁盘

Redis在某一些场景使用中要明显优于MySql,比如计数器,点赞,排行榜等方便

Redis通常用于一些特定场景,需要与MySql一起配合使用

**两者并不是相互替换和竞争关系,而是通用和配合关系。**redis帮mysql减负

1.3、Redis的优势

性能极高 - Redis能读的速度是110000次/秒,写得速度是81000次/秒 Redis数据类型丰富,不仅仅支持简单的Key-Value类型的数据,同时还提供list、set、zest、hash等数据结构的存储 Redis支持数据的持久化,可以将内存中的数据保持在磁盘中 ,重启的时候可以再次加载进行使用 Redis支持数据的备份,即master-slave(主从)模式的数据备份

1.4、redis7新特性浅谈

官网github.com/redis/redis/releases查看

1.版本号第二位是基数,则为非稳定版,如2.7,2.9

Function

Function是Redis脚本方案的全新实现,在Redis 7.0之前用户只能使用EVAL命令族来执行Lua脚本 ,但是Redis对Lua脚本的持久化和主从复制一直是undefined状态,在各个大版本甚至release版本中也都有不同的表现。因此社区也直接要求用户在使用Lua脚本时必须在本地保存一份(这也是最为安全的方式),以防止实例重启、主从切换时可能造成的Lua脚本丢失,维护Redis中的Lua脚本一直是广大用户的痛点。

Function的出现很好的对Lua脚本进行了补充,它允许用户向Redis加载自定义的函数库,一方面相对于EVALSHA的调用方式用户自定义的函数名可以有更为清晰的语义,另一方面Function加载的函数库明确会进行主从复制和持久化存储,彻底解决了过去Lua脚本在持久化上含糊不清的问题。

那么自7.0开始,Function命令族和EVAL命令族有了各自明确的定义:FUNCTION LOAD会把函数库自动进行主从复制和持久化存储;而SCRIPT LOAD则不会进行持久化和主从复制,脚本仅保存在当前执行节点。并且社区也在计划后续版本中让Function支持更多语言,例如JavaScript、Python等,敬请期待。

总的来说,Function在7.0中被设计为数据的一部分,因此能够被保存在RDB、AOF文件中,也能通过主从复制将Function由主库复制到所有从库,可以有效解决之前Lua脚本丢失的问题,我们也非常建议大家逐步将Redis中的Lua脚本替换为Function。

Multi-part AOF

AOF是Redis数据持久化的核心解决方案,其本质是不断追加数据修改操作的redo log,那么既然是不断追加就需要做回收也即compaction,在Redis中称为AOF rewrite。

然而AOF rewrite期间的增量数据如何处理一直是个问题,在过去rewrite期间的增量数据需要在内存中保留,rewrite结束后再把这部分增量数据写入新的AOF文件中以保证数据完整性。可以看出来AOF rewrite会额外消耗内存和磁盘IO,这也是Redis AOF rewrite的痛点,虽然之前也进行过多次改进但是资源消耗的本质问题一直没有解决。

阿里云的Redis企业版在最初也遇到了这个问题,在内部经过多次迭代开发,实现了Multi-part AOF机制来解决

相关推荐
cui_ruicheng2 小时前
MySQL(四):数据类型与字段设计
数据库·mysql
皮皮学姐分享-ppx3 小时前
政府绿色采购数据库(2015-2024.3)
大数据·网络·数据库·人工智能·制造
闪电悠米4 小时前
黑马点评-Redis 消息队列-03_stream_consumer_group
开发语言·数据库·redis·分布式·缓存·junit·lua
DIY源码阁5 小时前
JavaSwing航班订票管理系统 - MySQL版
数据库·mysql
qqxhb5 小时前
47|成本与性能:缓存、批处理、模型路由与降级
缓存·批处理·智能模型路由·多级降级预案·成本预算
浪客灿心6 小时前
项目篇:模块设计与实现
数据库·c++
佛祖让我来巡山7 小时前
线上 Redis 突然“爆”了,怎么办?
redis·redis宕机·redis崩了·redis线上事故
流星白龙8 小时前
【MySQL高阶】26.事务(1)
数据库·mysql
三十..8 小时前
Redis 核心原理与高可用架构实践
运维·数据库·redis
这个DBA有点耶9 小时前
索引优化深潜(下):索引合并、ICP 与索引设计的实战法则
数据库·mysql·架构