这样学Redis,才能技高一筹

本文涉及的产品
云数据库 Tair(兼容Redis),内存型 2GB
Redis 开源版,标准版 2GB
推荐场景:
搭建游戏排行榜
简介: 【7月更文挑战第18天】

“两大维度”就是指系统维度和应用维度,“三大主线”也就是指高性能、高可靠和高可扩展(可以简称为“三高”)。

首先,从系统维度上说,你需要了解 Redis 的各项关键技术的设计原理,这些能够为你判断和推理问题打下坚实的基础,而且,你还能从中掌握一些优雅的系统设计规范,例如 run-to-complete 模型、epoll 网络模型,这些可以应用到你后续的系统开发实践中。

  1. 高性能主线,包括线程模型、数据结构、持久化、网络框架;

    1. 高可靠主线,包括主从复制、哨兵机制;
    2. 高可扩展主线,包括数据分片、负载均衡

    在应用维度上,我建议你按照两种方式学习: “应用场景驱动”和“典型案例驱动”,一个是“面”的梳理,一个是“点”的掌握

    如果我们想要深入理解和优化 Redis,就必须要对它的总体架构和关键模块有一个全局的认知,然后再深入到具体的技术点

    对于键值数据库而言,基本的数据模型是 key-value 模型

    在 SimpleKV 中,key 是 String 类型,而 value 是基本数据类型,例如 String、整型等

    我们在对键值数据库进行选型时,一个重要的考虑因素是它支持的 value 类型。例如,Memcached 支持的 value 类型仅为 String 类型,而 Redis 支持的 value 类型包括了 String、哈希表、列表、集合等。

    从使用的角度来说,不同 value 类型的实现,不仅可以支撑不同业务的数据需求,而且也隐含着不同数据结构在性能、空间效率等方面的差异,从而导致不同的 value 操作之间存在着差异

  2. PUT:新写入或更新一个 key-value 对;

    1. GET:根据一个 key 读取相应的 value 值;
    2. DELETE:根据一个 key 删除整个 key-value 对

    有些键值数据库的新写 / 更新操作叫 SET。新写入和更新虽然是用一个操作接口,但在实际执行时,会根据 key 是否存在而执行相应的新写或更新流程。

    查询一个用户在一段时间内的访问记录

    因此,PUT/GET/DELETE/SCAN 是一个键值数据库的基本操作集合

    可以增加 EXISTS 操作接口,用于判断某个 key 是否存在

    键值对保存在内存还是外存?

    内存 好处是读写很快,毕竟内存的访问速度一般都在百 ns 级别, 潜在的风险是一旦掉电,所有的数据都会丢失
    外存 可以避免数据丢失,受限于磁盘的慢速读写(通常在几 ms 级别),键值数据库的整体性能会被拉低
    需要考虑键值数据库的主要应用场景。缓存场景下的数据需要能快速访问但允许丢失,那么,用于此场景的键值数据库通常采用内存保存键值数据

相关实践学习
基于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
目录
相关文章
|
26天前
|
NoSQL 安全 Redis
Redis 安全
10月更文挑战第20天
21 4
|
3月前
|
缓存 NoSQL Redis
说说你对redis的理解2
说说你对redis的理解2
38 6
|
6月前
|
存储 NoSQL Redis
Redis介绍以及日常使用
​ 介绍 Redis(REmote DIctionary Server)是一个开源的、使用ANSI C语言编写的、支持网络、可基于内存亦可持久化的日志型、非关系类型的Key-Value数据库。它提供了多种语言的API,如Java、C/C++、C#、PHP、JavaScript、Perl、Object-C、Python、Ruby、Erlang等,使得在各种语言环境下使用Redis都变得非常方便。 Redis是一个高性能的Key-Value数据库,其性能在很大程度上补偿了如Memcached这类Key-Value存储的不足,并且在某些场景下,它还可以作为关系数据库的良好补充。它支持的数据结构类型
187 1
|
存储 NoSQL Redis
|
存储 NoSQL Java
Redis3
Redis3
53 0
|
缓存 NoSQL 关系型数据库
redis-1
redis-1
53 1
|
存储 缓存 NoSQL
Redis初探
本篇深入介绍了Redis(Remote Dictionary Server)这一开源的内存数据存储系统,以及它在现代应用开发中的用途和优势。首先,我们对Redis进行了初步探索,解释了Redis是什么,它的主要特点以及适用场景。接着,我们详细讨论了Redis的安装和配置过程,提供了在Linux环境下安装Redis的步骤,并展示了如何启动和关闭Redis服务器。
225 0
|
NoSQL Redis 数据库
什么是Redis
Redis,即远程字典服务,是一个开源的使用ANSI C语言编写,支持网络,可基于内存亦可持久化的日志型,Key-Value数据库。类似于map
65 0
|
存储 缓存 NoSQL
redis 问答
redis 问答
111 0
redis 问答
|
NoSQL Java Redis
Redis相关知识介绍
Redis相关知识介绍
179 0
Redis相关知识介绍