Redis入门

本文涉及的产品
云数据库 Tair(兼容Redis),内存型 2GB
Redis 开源版,标准版 2GB
推荐场景:
搭建游戏排行榜
云原生数据库 PolarDB PostgreSQL 版,标准版 2核4GB 50GB
简介: 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
目录
相关文章
|
2月前
|
缓存 NoSQL Java
springboot的缓存和redis缓存,入门级别教程
本文介绍了Spring Boot中的缓存机制,包括使用默认的JVM缓存和集成Redis缓存,以及如何配置和使用缓存来提高应用程序性能。
117 1
springboot的缓存和redis缓存,入门级别教程
|
2月前
|
存储 消息中间件 NoSQL
Redis 入门 - C#.NET Core客户端库六种选择
Redis 入门 - C#.NET Core客户端库六种选择
64 8
|
4月前
|
SQL 存储 NoSQL
Redis6入门到实战------ 一、NoSQL数据库简介
这篇文章是关于NoSQL数据库的简介,讨论了技术发展、NoSQL数据库的概念、适用场景、不适用场景,以及常见的非关系型数据库。文章还提到了Web1.0到Web2.0时代的技术演进,以及解决CPU、内存和IO压力的方法,并对比了行式存储和列式存储数据库的特点。
Redis6入门到实战------ 一、NoSQL数据库简介
|
4月前
|
NoSQL 算法 安全
Redis6入门到实战------ 四、Redis配置文件介绍
这篇文章详细介绍了Redis配置文件中的各种设置,包括单位定义、包含配置、网络配置、守护进程设置、日志记录、密码安全、客户端连接限制以及内存使用策略等。
Redis6入门到实战------ 四、Redis配置文件介绍
|
4月前
|
NoSQL Redis 数据安全/隐私保护
Redis6入门到实战------ 二、Redis安装
这篇文章详细介绍了Redis 6的安装过程,包括下载、解压、编译、安装、配置以及启动Redis服务器的步骤。还涵盖了如何设置Redis以在后台运行,如何为Redis设置密码保护,以及如何配置Redis服务以实现开机自启动。
Redis6入门到实战------ 二、Redis安装
|
4月前
|
NoSQL Java Redis
Redis6入门到实战------思维导图+章节目录
这篇文章提供了Redis 6从入门到实战的全面学习资料,包括思维导图和各章节目录,涵盖了NoSQL数据库、Redis安装配置、数据类型、事务、持久化、主从复制、集群等核心知识点。
Redis6入门到实战------思维导图+章节目录
|
4月前
|
NoSQL 安全 Java
Redis6入门到实战------ 三、常用五大数据类型(字符串 String)
这篇文章深入探讨了Redis中的String数据类型,包括键操作的命令、String类型的命令使用,以及String在Redis中的内部数据结构实现。
Redis6入门到实战------ 三、常用五大数据类型(字符串 String)
|
4月前
|
NoSQL 关系型数据库 Redis
Redis6入门到实战------ 九、10. Redis_事务_锁机制_秒杀
这篇文章深入探讨了Redis事务的概念、命令使用、错误处理机制以及乐观锁和悲观锁的应用,并通过WATCH/UNWATCH命令展示了事务中的锁机制。
Redis6入门到实战------ 九、10. Redis_事务_锁机制_秒杀
|
4月前
|
NoSQL Java Redis
Redis6入门到实战------ 八、Redis与Spring Boot整合
这篇文章详细介绍了如何在Spring Boot项目中整合Redis,包括在`pom.xml`中添加依赖、配置`application.properties`文件、创建配置类以及编写测试类来验证Redis的连接和基本操作。
Redis6入门到实战------ 八、Redis与Spring Boot整合
|
4月前
|
存储 NoSQL 算法
Redis6入门到实战------ 三、常用五大数据类型(列表(List)、集合(Set)、哈希(Hash)、Zset(sorted set))
这是关于Redis 6入门到实战的文章,具体内容涉及Redis的五大数据类型:列表(List)、集合(Set)、哈希(Hash)、有序集合(Zset(sorted set))。文章详细介绍了这些数据类型的特点、常用命令以及它们背后的数据结构。如果您有任何关于Redis的具体问题或需要进一步的帮助,请随时告诉我。