Redis使用场景概况
Redis的使用场景系列文章目录
目录
- Redis的使用场景系列文章目录
- 前言
- 一、Redis的特性
- 1. 速度快
- 2. 数据存储基于键值对
- 3. 功能丰富
- 4. 数据库简单稳定
- 5. 客户端语言多
- 6. 提供数据持久化功能
- 7. 主从复制
- 8. 高可用和分布式
- 二、使用场景
- 1.Redis可以做什么
- 2.Redis不可以做什么
- 总结
前言
本系列文章基本参考付磊、张益军的《Redis开发与运维》。同时参考了网上其他的一些资料。
说到Redis的使用场景,大家想到一般都应该是缓存吧。确实,Redis执行命令的速度非常快,用作磁盘和内存之间的缓存非常合适。然而Redis的设计者最初其实是想要实现一个高性能的队列功能,然后可能连他也没有想到,Redis最后会在如此多的场景下都收到强烈追捧。
想要理解Redis在不同场景下的使用,我们必须要先了解Redis本身的特性,已经Redis可以做什么,不能做什么。本篇文章就大概总结一下这两个问题。
一、Redis的特性
1. 速度快
前面说过,Redis执行命令的速度非常快,官方给出的数据是读速度能到达11W/秒,写也能达到8.1W/秒。不考虑机器性能差异的情况下,Redis能达到如此快速的原因也有以下几点:
- 数据全部存放在内存中
毫无疑问这是Redis速度快最主要的原因。数据存放在内存中,那么所有操作都是基于内存的操作,速度自然快。 - C语言实现
我们知道C语言是离操作系统更近的语言,使用C语言自然能在一定程度上提高执行速度。当然,代码本身质量高也是一个因素。 - 单进程单线程架构
CPU的速度是远远大于内存速度的,内存速度又远远大于磁盘速度。一般情况下我们会认为多进程多线程的速度会更快,比如Nginx的多进程单线程,memcached的单进程多线程等。但是Redis基于I/O多路复用技术采用单进程单线程模式,进一步避免了竞争造成的开销,加快了执行速度。
2. 数据存储基于键值对
Redis是键值对数据库,同时,Redis的值并不局限于字符串,还可以是具体的数据结构,这就方便了不同的应用场景开发,大大提高了开发效率。Redis有5中基本数据结构:字符串、哈希、列表、集合、有序集合。本系列文章也主要基于这5种数据结构的应用。
3. 功能丰富
- 过期功能,可以用于实现缓存
- 发布订阅功能,可以用于实现消息系统
- Lua脚本功能,可以用于自定义功能
- Pipeline功能,批量传输命令,减少网络开销
4. 数据库简单稳定
简单主要表现在源码少、单线程模式、不依赖系统类库三个方面。稳定就不说了,基本没有出现过因Redis自身问题宕机的情况。
5. 客户端语言多
无需多言,几乎所有主流编程语言都有Redis客户端。除了Redis本身的流行,从技术角度而言还有两个原因:
- 基于TCP协议实现通信
- 指定RESP(Redis Serialization Protocol,Redis序列化协议)实现交互
6. 提供数据持久化功能
- RDB:手动或定期触发、将当前进程全量数据以快照形式保存至硬盘
- AOF:以独立日志方式实时记录每次写命令,需定期重写AOF文件实现文件压缩
7. 主从复制
提供复制功能,实现数据副本。
8. 高可用和分布式
Sentinel哨兵保证Redis节点的故障发现和自动转移。Redis Cluster则跟一般集群一样实现真正分布式,提供高可用、读写和容量的扩展。
二、使用场景
1.Redis可以做什么
Redis的可以做的事情很多,下面列出常用的几种使用场景:
- 缓存:依赖键值过期时间设置以及最大内存和内存溢出后的淘汰策略等
- 排行榜:依赖列表和有序集合等数据结构
- 计数器:依赖计数功能
- 消息队列:依赖发布订阅功能和阻塞队列功能,可以满足一般消息队列功能需求。
- 不适合关系型数据库但访问频繁的数据:比如下拉列表,共同好友等。
2.Redis不可以做什么
从技术本身的角度来说,只要能够实现我们需要的功能,那么就没有什么是不可以做的。但是技术应用则一定会有自己的应用场景和边界。Redis本身自然也有很多不适合它解决的问题,比如:
- 海量数据。Redis数据存放在内存中,本身成本就相对较高,海量数据存储必然无限提高经济成本。
- 冷数据。数据操作频次很低甚至几近于无,完全没有必要存储在Redis中。
简单来说,就是从经济成本考虑,衡量效率与成本,投入产出比是我们技术选型时必须要考虑的问题。当然,投入不仅仅是经济成本,还有人力成本,如果有些问题Redis虽然也能解决,经济成本也不高,但是实现复杂,也不应该作为首选方案。
总结
Redis本身功能丰富,是否适合我们的应用场景需要多方面衡量,当然前提是我们对Redis和场景本身都足够了解。就Redis而言,最好能够了解Redis的原理,并阅读源码,这样我们在开发和运维时,就能提前规避很多问题,甚至做出定制化开发。
Redis使用场景概况相关推荐
- AliCloudDB for redis应用场景之存储最新N条聊天记录
AliCloudDB for redis应用场景之存储最新N条聊天记录 场景介绍 在各种IM通信工具中,常常需要展示最新的聊天记录,这种数据写入频繁,对响应时间要求高.一般情况,这种场景通常会选择持久 ...
- Redis应用场景说明与部署
Redis简介 REmote DIctionary Server(Redis)是一个基于key-value键值对的持久化数据库存储系统.redis和大名鼎鼎的memcached缓存服务很像,但是red ...
- Redis使用场景、Redis线程模型、Redis持久化 - 公开课笔记
redis和数据库怎么写同步? 分布式如何达到一致性? CAP 一致性.可用性.性能 HA:高可用,不存在没有任何时延.没有任何波动的高可用 容忍度只要达标,就可以.不要为了技术而技术->你会否 ...
- 转载:Redis 应用场景
2019独角兽企业重金招聘Python工程师标准>>> 1. MySql+Memcached架构的问题 实际MySQL是适合进行海量数据存储的,通过Memcached将热点数据加载 ...
- Redis应用场景(转)
(来源:http://www.cnblogs.com/shanyou/archive/2012/09/04/2670972.html) Redis常用数据类型 Redis最为常用的数据类型主要有以下五 ...
- redis 数据类型详解 以及 redis适用场景场合
redis 数据类型详解 以及 redis适用场景场合 1. MySql+Memcached架构的问题 实际MySQL是适合进行海量数据存储的,通过Memcached将热点数据加载到cache,加速访 ...
- Redis应用场景-排行榜
文章目录 Redis应用场景-排行榜 前言 排行榜 今日热搜 热门视频排行榜 周歌曲点播榜 参考文档 Redis应用场景-排行榜 前言 使用Redis的有序集合(Sorted set)可以很方便地实现 ...
- 详解 Redis 应用场景及应用实例
Redis是一个开源的使用ANSI C语言编写.支持网络.可基于内存亦可持久化的日志型.Key-Value数据库,并提供多种语言的API.从2010年3月15日起,Redis的开发工作由VMware主 ...
- Redis 应用场景和应用实例详解
Redis是一个开源的使用ANSI C语言编写.支持网络.可基于内存亦可持久化的日志型.Key-Value数据库,并提供多种语言的API.从2010年3月15日起,Redis的开发工作由VMware主 ...
最新文章
- 在Java版中被移除的物品,盘点Minecraft曾“移除”的5个物品,Mojang反悔?1.14即将加入!...
- 关于inline函数
- python运行系统找不到指定文件_“系统无法找到指定的文件”当调用Python中的subprocess.Popen...
- python编程语言零基础入门-程序员大佬,给Python零基础入门书籍教程的一些建议!...
- Nettiers快速使用入门(一) 数据库
- (企业案例)Nacos Config 进阶使用
- Python:程序员在每天不同时间发微信消息给女友
- 聚集索引,非聚集索引的区别是什么
- 小小芯片上的上千万个晶体管是怎么装上去的
- QCon2016 上海会议汇总(1) - 前端技术实践
- MySql处理Unicode字符串
- DeepFool论文翻译---DeepFool: a simple and accurate method to fool deep neural networks
- 史上官场吃喝风:与送礼一样成为通用的规则
- 【Axure教程】中继器版穿梭表格
- 上网操作1000问(供初學者)
- X线DR医学图像 --- DR医用滤线栅及摩尔纹详解 (五) 消除摩尔纹
- Python语言程序设计 - 测验6: 组合数据类型 (第6周)
- 人工智能课程期末总结
- 常见的几种身份验证方法
- 5年老java开发,我看过哪些书,看过哪些视频,刷过哪些面试题,都在这里了
热门文章
- 从新出发——慕书读书正式更名为“慕书+”
- OMRON CP1H PLC脉冲控制三轴伺服
- 横向扩展纵向输出,看清中软国际的云版图
- web前端框架Hui使用
- 智能对话机器人开发实战视频教程-张子良-专题视频课程
- 苹果6换屏多钱_自贸区专业苹果6换个外屏多少钱
- Windows系统 清理C盘详细步骤
- 代码随想录--哈希表--三数相加题型
- android 支付宝捐赠,支付宝蚂蚁森林活动行走步数怎么捐献?
- matlab 系统时域响应,动力学系统时域响应计算的六种方法Matlab源程序(Newmark,Houbolt法,中心差分法)...