Redis入门(二)-Redis能够做什么
引言
在上篇文章中,我们讲述了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能够做什么的更多相关文章
- redis入门(二)
目录 redis入门(二) 前言 持久化 RDB AOF 持久化文件加载 高可用 哨兵 流程 安装部署 配置技巧 集群 原理 集群搭建 参考文档 redis入门(二) 前言 在redis入门(一)简单 ...
- Redis系列(二):Redis的数据类型及命令操作
原文链接(转载请注明出处):Redis系列(二):Redis的数据类型及命令操作 Redis 中常用命令 Redis 官方的文档是英文版的,当然网上也有大量的中文翻译版,例如:Redis 命令参考.这 ...
- Redis入门实例(Redis+Sprint+maven创建工程)
一.>创建一个maven工程应用和相关配置:Redis_study,创建工程应用过程略 1.>配置pom.xml:文件内容如下 <project xmlns="http:/ ...
- <Redis> 入门二 五种数据类型的操作、通用key的操作、发布订阅
文档参考:http://www.redis.net.cn/ string - > key value 简单的keyvalue,常规计数:例如微博数,粉丝数 set -> key v ...
- Redis 入门之Redis简介
Reids 是一个开源的高性能键值对数据库.它通过多种键值数据类型来适应不同场景下的存储需求,并借助许多高层级的接口使其可以胜任如缓存.队列系统等不同的角色. 1.Reids的诞生 Redis到底是在 ...
- Redis(十二):redis两种持久化方法对比分析
前言 最近在项目中使用到Redis做缓存,方便多个业务进程之间共享数据.由于Redis的数据都存放在内存中,如果没有配置持久化,redis重启后数据就全丢失了,于是需要开启redis的持久化功能,将数 ...
- Redis入门笔记-redis内部数据结构(01)
redis是一个轻量级的Nodsql数据库,使用kev-value的形式存储数据,在redis的世界里,没有整数.浮点数等概念,大多数情况下数据以字符串形式展现,偶尔会出现Long类型数据的场景. 一 ...
- redis教程(二)-----redis事务、记录日志到redis、分布式锁
redis事务 Redis 事务可以一次执行多个命令, 并且带有以下两个重要的保证: 批量操作在发送 EXEC 命令前被放入队列缓存. 收到 EXEC 命令后进入事务执行,事务中任意命令执行失败,其余 ...
- Redis系列二 Redis数据库介绍
1.SELECT命令 通过查看配置文件可以知道Redis默认有17个库,从0-16. 默认是在0号库.选择库使用SELECT <dbid>命令.例如选择0号库 SELECT 0 2.DB ...
- redis入门(一)
目录 redis入门(一) 前言 特性 速度快 简单稳定 丰富的功能 历史 历史版本 安装与启动 安装 数据类型与内部编码 数据结构 内部编码 常用API与使用场景 常用命令 字符串 列表 哈希 集合 ...
随机推荐
- apache与tomcat的区别
1. Apache是web服务器,Tomcat是应用(java)服务器,它只是一个servlet容器,是Apache的扩展. 2. Apache和Tomcat都可以做为独立的web服务器来运行,但是A ...
- 你不知道的JavaScript(上)this和对象原型(三)
第四章 混核对象“类” 1.理论 面向对象编程强调的是数据和操作数据的行为本质上是互相关联的.实例化,继承,多态性 javascript中只有对象,并不存在可以被实例化的“类”.一个对象并不会被复制 ...
- django基础之day04,聚合查询和分组查询
聚合查询: 聚合函数必须用在分组之后,没有分组其实默认整体就是一组 Max Min Sum Avg Count 1.分组的关键字是:aggretate 2.导入模块 from django.db.mo ...
- Winform 中DataGridView、dev Gridview控件添加行标题
有很多种方法. 1.可以在DataGridView控件中的RowStateChanged事件改变行标题单元格的值(Row.HeaderCell.Value) /// <summary> / ...
- MIT-6.824 操作系统 汇总
MIT-6.828-JOS-环境搭建 ELF文件格式 lab1:C, Assembly, Tools, and Bootstrapping lab2:Memory management lab3:Us ...
- LL(1)文法的判断,递归下降分析程序
1. 文法 G(S): (1)S -> AB (2)A ->Da | ε (3)B -> cC (4)C -> aADC | ε (5)D -> b | ε 验证文法 G ...
- 软件开发工具(第13章: Eclipse插件的使用与开发)
一.插件简介 插件的定义(了解) 插件是一种遵循其所依附的软件的接口规范所编写出来的程序. 插件实际上是对原有软件的扩展,替应用程序增加一些所需要的特定 功能. 插件的构成(重点.记忆) 每个插件都由 ...
- Redis学习(二)Redis的安装
Window 下安装 下载地址:https://github.com/MSOpenTech/redis/releases. Redis 支持 32 位和 64 位.这个需要根据你系统平台的实际情况选择 ...
- 从零开始ant-design-vue-pro开发笔记(一)
开始 从这里开始是用ant-design-vue组件写ant-design-vue-pro这个后台项目实现步骤的从零开始搭建的过程,视频地址,它采用了ant-desgin-vue的组件库作为素材开发, ...
- 微信支付 第三篇 微信调用H5页面进行支付
上一篇讲到拿到了 预支付交易标识 wx251xxxxxxxxxxxxxxxxxxxxxxxxxxxxx078700 第四步,是时候微信内H5调起支付了! 先准备网页端接口请求参数列表 微信文档中已经明 ...