引言

在上篇文章中,我们讲述了Redis的基本知识让读者对Redis有了基本的了解。那么这一节我们就来看一下Redis究竟能做什么。

上一节我们提到了Redis可用作数据库,高速缓存和消息队列代理。这句话不错,Redis确实可以做这些事情,但是不够具体,下面我们就从这三点展开来看一下具体怎么使用,用在哪些场景。

数据库

说Redis可以做数据库,那一点也不假。具体怎么做呢?不是说Redis没有表结构吗,它不是存在内存吗,断电或宕机不就没了吗?

是的,Redis是nosql的,没有数据库表结构,但这不影响它来存数据,没有了数据库表结构的约束,它的存取会更加灵活。另外别忘了,Redis是可以持久化到磁盘的,具体怎么持久化的我们在以后的章节在详细介绍。Redis通过key-value进行存储,并且支持AOF和RDB两种方式的持久化。

为什么有了关系型数据库还要Redis做数据库呢?原因很简单,就是因为Redis没有复杂的数据库表结构的约束,所以他的存储更加方便灵活。例如我们想做个歌曲播放量排行榜,假如用关系型数据库的话,怎么实现呢?无非就是设计一个排行榜表,记录每个歌曲的播放量,需要展示时,从数据库排序查找播放量最多的前十个。但是这样做是不是很麻烦,如果我们只是临时上一下这个功能,过不了多久就下线的话,那我们的表以后是不是就作废了。

但是如果我们用Redis来记录这些数据的话,那将是非常的方便。我们只需使用Redis提供的zset数据结构即可。zset是一个有序集合,我们使用歌曲名作为key,点击量作为zset的score 值(会根据score值排序)。歌曲被播放时只需修改对应key的score 值就可以了,需要展示前十名时只需要使用redis提供的操作命令,传相应的参数即可的到想要的数据,同时也支持持久化,是不是非常的方便。

所以Redis可以配合关系型数据库弥补其不足,做一些关系型数据库做起来比较麻烦的事。Redis做为数据库的用法的例子非常多,用的也非常的巧妙,这里就不在过多的介绍,感兴趣的可以自行查找。

高速缓存

对于互联网公司和一些较大的公司来说,是非常注重用户体验的,软件响应速度的快慢那是相当重要的,能提高1毫米都至关重要。可能仅仅因为这1毫米就输给对手。所以尽可能提高软件的响应速度就变得异常迫切。而Redis作为高速缓存再合适不过了,上节我们介绍了redis的优点优势和它的强大之处,现在我们就说一写Redis如何做缓存。

首先明确我们做缓存的目的就是,提高效率,提升用户体验。那么无非就是查询的快一点,让用户等的时间更短一些。既然是查询,就要读取数据,我们是读数据库快还是读Redis快?看了上篇文章的肯定知道读Redis快,因为Redis使用的是内存。其次,我们要明确的一点就是,什么样的数据放到缓存里呢?Redis之所以做为缓存,就是对关系型数据库的辅助,显然并不是所有的数据都要放到Redis。那存在Redis的数据遵循什么原则呢?那就是,不经常变更的,查询频繁的数据。如,一些系统级的配置,系统参数,公共数据。不经常变动的又查询的比较频繁的,我没必要每次有人来请求时都去数据库查,况且从数据库查又比较耗时,放到Redis查的又快还能减轻数据库的访问压力,何乐而不为呢?

缓存的读取逻辑是什么样的呢?我们每次读数据的时候,先从Redis读,如果Redis有的话就直接返回,没有的话就去查数据库,然后放到Redis里缓存起来。一定要设置超时时间,让Redis的缓存在一定时间后自动过期删除。然后下次再从数据库读放到缓存里。生产环境切记要设置超时时间,除非明确有一些数据永不超时的可以不设。

消息队列代理

在一些要求不高的场景下,Redis可以充当消息队列。具体怎么实现消息队列,网上一搜一大把,不再讲述。但是如果要求可靠性高的话建议使用专业的消息中间件,ActiveMQ,Kafka,RocketMQ,RabbitMQ等。

Redis的作用就讲到这里,下一节将讲述Redis的安装和基本操作。

Redis入门(二)-Redis能够做什么的更多相关文章

  1. redis入门(二)

    目录 redis入门(二) 前言 持久化 RDB AOF 持久化文件加载 高可用 哨兵 流程 安装部署 配置技巧 集群 原理 集群搭建 参考文档 redis入门(二) 前言 在redis入门(一)简单 ...

  2. Redis系列(二):Redis的数据类型及命令操作

    原文链接(转载请注明出处):Redis系列(二):Redis的数据类型及命令操作 Redis 中常用命令 Redis 官方的文档是英文版的,当然网上也有大量的中文翻译版,例如:Redis 命令参考.这 ...

  3. Redis入门实例(Redis+Sprint+maven创建工程)

    一.>创建一个maven工程应用和相关配置:Redis_study,创建工程应用过程略 1.>配置pom.xml:文件内容如下 <project xmlns="http:/ ...

  4. <Redis> 入门二 五种数据类型的操作、通用key的操作、发布订阅

    文档参考:http://www.redis.net.cn/ string - > key value 简单的keyvalue,常规计数:例如微博数,粉丝数 set     -> key v ...

  5. Redis 入门之Redis简介

    Reids 是一个开源的高性能键值对数据库.它通过多种键值数据类型来适应不同场景下的存储需求,并借助许多高层级的接口使其可以胜任如缓存.队列系统等不同的角色. 1.Reids的诞生 Redis到底是在 ...

  6. Redis(十二):redis两种持久化方法对比分析

    前言 最近在项目中使用到Redis做缓存,方便多个业务进程之间共享数据.由于Redis的数据都存放在内存中,如果没有配置持久化,redis重启后数据就全丢失了,于是需要开启redis的持久化功能,将数 ...

  7. Redis入门笔记-redis内部数据结构(01)

    redis是一个轻量级的Nodsql数据库,使用kev-value的形式存储数据,在redis的世界里,没有整数.浮点数等概念,大多数情况下数据以字符串形式展现,偶尔会出现Long类型数据的场景. 一 ...

  8. redis教程(二)-----redis事务、记录日志到redis、分布式锁

    redis事务 Redis 事务可以一次执行多个命令, 并且带有以下两个重要的保证: 批量操作在发送 EXEC 命令前被放入队列缓存. 收到 EXEC 命令后进入事务执行,事务中任意命令执行失败,其余 ...

  9. Redis系列二 Redis数据库介绍

    1.SELECT命令 通过查看配置文件可以知道Redis默认有17个库,从0-16. 默认是在0号库.选择库使用SELECT <dbid>命令.例如选择0号库  SELECT 0 2.DB ...

  10. redis入门(一)

    目录 redis入门(一) 前言 特性 速度快 简单稳定 丰富的功能 历史 历史版本 安装与启动 安装 数据类型与内部编码 数据结构 内部编码 常用API与使用场景 常用命令 字符串 列表 哈希 集合 ...

随机推荐

  1. 一遍文章搞清楚VO、DTO、DO、PO的概念、区别

    作者:Cat Qi 概念: VO(View Object):视图对象,用于展示层,它的作用是把某个指定页面(或组件)的所有数据封装起来. DTO(Data Transfer Object):数据传输对 ...

  2. python基础入门 字典

    字典 字典---->dict 字典是无序的,可变的 关联性强 键值对 键:使用不可变的数据类型(可哈希),键是唯一的 值:可以任意 定义一个字典 dic = {}#定义字典 ​ 字典的增删改查 ...

  3. java基础篇二

    引言 滴,第二天卡. 五.关键字 -static         -初始化顺序             -静态变量和静态语句块优先于实例变量和普通语句块,静态变量和静态语句块的初始化顺序取决于它们在代 ...

  4. HPS端的GPIO如何控制

    该笔记主要记录HPS端的GPIO如何控制,包括控制LED和Key 1.GPIO地址映射 Peripheral Base Address 0xf000_0000 64M 2.HPS外设 (1)GPIO ...

  5. 跟着文档学习gulp1.1安装入门

    Step1:检查是否已经安装了node,npm 和 npX是否正确安装 Step2:安装gulp命令行工具(全局安装gulp) npm install --global gulp-cli Step3: ...

  6. 常用的数据压缩lib

    最近项目需要使用数据压缩,下面针对数据压缩库进行调研,并进行简单记录,对于关于库的介绍,可以在官网阅读最新的文档,我就不在这里重复了: A fast compressor/decompressor:  ...

  7. hadoop集群搭建教程

    1. 相关软件准备: VMware-workstation-full-15.0.4-12990004.exe CentOS-7-x86_64-DVD-1810.iso jdk-8u231-linux- ...

  8. PKUWC 2020 游记

    由于 CSP 的暴力分太高,我来了这里. 我将告诉大家,我在暴力分不高时是个怎样的 sb 选手. Day -17 又停课啦. 旁边坐着 pb,每天刷题特别猛,然后就凸显了我有多颓. 怎么想打开个猫国都 ...

  9. Mysql 主从复制搭建-极简版

    前言 自己在百度.Google一番踩坑搭建成功后,记录一下,也希望后来人不再被这些坑到. 这里为了方便使用 docker,不会的同学请移步相关 Docker 教程. 正文 1. 启动 mysql #启 ...

  10. 自学Java编程,如何混到一个7k薪资实习生的岗位

    现在Java软件开发的专业一直都是热门,有很多专业的学生,比如电子.机械.会计.土木等等专业由于专业本身没有更高的提升空间,所以现在的年轻人更加喜欢做一些科技前沿的工作,毕竟现在接触的都是电子产品.而 ...