Redis入门

本文涉及的产品
云原生数据库 PolarDB MySQL 版,Serverless 5000PCU 100GB
云数据库 Redis 版,社区版 2GB
推荐场景:
搭建游戏排行榜
简介: Redis入门

什么是Redis

Redis一个开源的基于键值对(Key-Value)NoSQL数据库。使用ANSI C标准,利用C语言编写、支持网络、基于内存但支持持久化。性能优秀,并提供多种语言的API。

ANSI C标准是什么

ANSI C 标准是 C 语言的标准化规范,它由美国国家标准学会(ANSI)于1989年发布。这个标准定义了 C

语言的语法、语义和库函数,并规定了编译器应该如何实现 C 语言的特性和行为。ANSI C 标准也被称为 C89 或者 C90,它是 C

语言的第一个正式标准,为后来的 C 语言标准(如 C99 和 C11)奠定了基础。由于 ANSI C 标准的普及和广泛支持,C

语言成为了一种具有跨平台性、可移植性和可靠性的通用编程语言。

C语言的跨平台如何实现

C 语言的跨平台性是通过编译器和标准库的实现来实现的。

编译器:C 语言的编译器可以在不同的操作系统和架构上运行,从而使得同一份 C 语言源代码可以在不同的平台上编译和执行。通常,编译器会将 C语言源代码编译成目标代码或者可执行文件,这些目标代码或者可执行文件可以在特定的操作系统和架构上运行。

标准库:C 语言的标准库是一个跨平台的库,它提供了一组通用的函数和数据类型,用于处理输入输出、字符串操作、数学计算、内存管理等常见任务。由于C 语言的标准库是跨平台的,因此在不同的操作系统和架构上编译的 C 语言程序可以使用相同的标准库函数进行编程,从而实现跨平台的兼容性。

此外,C 语言的跨平台性还得益于它的简洁性和可移植性。C 语言的语法和语义非常简单,不依赖于任何特定的操作系统或架构,这使得 C语言的源代码可以很容易地在不同的平台上阅读和理解。同时,C语言还提供了一些跨平台的编程技巧和工具,如条件编译、宏定义、预处理器等,这些技巧可以帮助程序员在不同的平台上实现相同的功能。

C语言是跨平台的语言吗

C 语言本身是一种编译型语言,它的代码可以编译成本地机器指令并在特定的硬件架构和操作系统上运行。因此,C语言的跨平台性受到硬件架构和操作系统的限制,即同一份 C 语言源代码不能直接在不同的硬件架构或操作系统上运行。 但是,C语言的可移植性很高,因为它提供了一系列的标准库函数和操作符,这些函数和操作符的行为在不同的编译器和平台上是相同的。因此,程序员可以通过编写可移植的

C 语言源代码,使用跨平台的编译器和标准库,在多个平台上编译和运行相同的程序。这种方式可以使得 C语言的程序在不同的平台上实现相同的功能和效果,从而实现 C 语言的跨平台兼容性。但是需要注意,即使是可移植的 C 语言代码,在不同的平台上仍需要进行适当的修改和调试,以确保代码在不同的平台上的正确性和稳定性。

Redis的两大维度、三大主线

两大维度

应用维度

底层原理维度

Redis的应用场景

1.缓存


缓存机制几乎在所有的大型网站都有使用,合理地使用缓存不仅可以加快数据的访问速度,而且能够有效地降低后端数据源的压力。Redis提供了键值过期时间设置,并且也提供了灵活控制最大内存和内存溢出后的淘汰策略。可以这么说,一个合理的缓存设计能够为一个网站的稳定保驾护航。

一般MySQL数据库写的并发是600/s,读的2000/s,对于大型互联网项目的百万并发,根本扛不住,Redis的官方显示Redis能够单台达到10W+/s的并发。


2.排行榜系统


排行榜系统几乎存在于所有的网站,例如按照热度排名的排行榜,按照发布时间的排行榜,按照各种复杂维度计算出的排行榜,Redis提供了列表和有序集合数据结构,合理地使用这些数据结构可以很方便地构建各种排行榜系统。


3.计数器应用


计数器在网站中的作用至关重要,例如视频网站有播放数、电商网站有浏览数,为了保证数据的实时性,每一次播放和浏览都要做加1的操作,如果并发量很大对于传统关系型数据的性能是一种挑战。Redis天然支持计数功能而且计数的性能也非常好,可以说是计数器系统的重要选择。


4.社交网络


赞/踩、粉丝、共同好友/喜好、推送、下拉刷新等是社交网站的必备功能,由于社交网站访问量通常比较大,而且传统的关系型数据不太适合保存这种类型的数据,Redis提供的数据结构可以相对比较容易地实现这些功能。


5.消息队列系统


消息队列系统可以说是一个大型网站的必备基础组件,因为其具有业务解耦、非实时业务削峰等特性。Redis提供了发布订阅功能和阻塞队列的功能,虽然和专业的消息队列比还不够足够强大,但是对于一般的消息队列功能基本可以满足。这个是Redis的作者参考了Kafka做的拓展。

三大主线

高性能:线程模型、数据结构、AOF(持久化)、epoll(网络框架)

高可靠:主从复制、哨兵机制、RDB

高扩展:负载均衡、数据分片

Redis应用场景的常见问题

1.数据结构的复杂度,跨核CPU访问,导致CPU内存飙升问题

2.主从同步和AOF的内存竞争,从而导致的内存问题

3.在SSD上做快照的新能抖动,导致存储持久化问题

4.多实例的网络异常丢包问题

Redis是否可以取代关系型数据库

笔者认为Redis不能取代关系型数据库

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
目录
相关文章
|
5天前
|
缓存 NoSQL Java
【Redis系列笔记】Redis入门
本文介绍了Redis常用命令,以及SpringBoot集成Spring Data Redis和Spring Cache。Spring Data Redis 提供了对 Redis 的操作方法,而 Spring Cache 则提供了基于注解的缓存功能,可以方便地将方法的返回值缓存到 Redis 中,以提高性能和减少对数据源的访问次数。这样的集成可以帮助开发者更便捷地利用 Redis 来管理应用程序的数据和缓存。
28 4
|
12天前
|
存储 缓存 NoSQL
Redis入门到通关之Redis内存淘汰(内存过期)策略
Redis入门到通关之Redis内存淘汰(内存过期)策略
28 3
|
12天前
|
存储 NoSQL Linux
Redis入门到通关之多路复用详解
Redis入门到通关之多路复用详解
18 1
|
12天前
|
存储 NoSQL Linux
Redis入门到通关之Redis5种网络模型详解
Redis入门到通关之Redis5种网络模型详解
29 1
|
12天前
|
NoSQL Ubuntu 关系型数据库
Redis入门到通关之Redis网络模型-用户空间和内核态空间
Redis入门到通关之Redis网络模型-用户空间和内核态空间
21 1
|
12天前
|
存储 NoSQL 算法
Redis入门到通关之Redis数据结构-Hash篇
Redis入门到通关之Redis数据结构-Hash篇
19 1
|
12天前
|
存储 NoSQL Redis
Redis入门到通关之Redis数据结构-Set篇
Redis入门到通关之Redis数据结构-Set篇
19 1
|
12天前
|
存储 NoSQL Redis
Redis入门到通关之Redis数据结构-ZSet篇
Redis入门到通关之Redis数据结构-ZSet篇
20 1
|
12天前
|
存储 NoSQL Redis
Redis入门到通关之Redis数据结构-List篇
Redis入门到通关之Redis数据结构-List篇
32 1
|
12天前
|
存储 NoSQL 安全
Redis入门到通关之Redis数据结构-String篇
Redis入门到通关之Redis数据结构-String篇
34 1