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能达到如此快速的原因也有以下几点:

  1. 数据全部存放在内存中
    毫无疑问这是Redis速度快最主要的原因。数据存放在内存中,那么所有操作都是基于内存的操作,速度自然快。
  2. C语言实现
    我们知道C语言是离操作系统更近的语言,使用C语言自然能在一定程度上提高执行速度。当然,代码本身质量高也是一个因素。
  3. 单进程单线程架构
    CPU的速度是远远大于内存速度的,内存速度又远远大于磁盘速度。一般情况下我们会认为多进程多线程的速度会更快,比如Nginx的多进程单线程,memcached的单进程多线程等。但是Redis基于I/O多路复用技术采用单进程单线程模式,进一步避免了竞争造成的开销,加快了执行速度。

2. 数据存储基于键值对

Redis是键值对数据库,同时,Redis的值并不局限于字符串,还可以是具体的数据结构,这就方便了不同的应用场景开发,大大提高了开发效率。Redis有5中基本数据结构:字符串、哈希、列表、集合、有序集合。本系列文章也主要基于这5种数据结构的应用。

3. 功能丰富

  • 过期功能,可以用于实现缓存
  • 发布订阅功能,可以用于实现消息系统
  • Lua脚本功能,可以用于自定义功能
  • Pipeline功能,批量传输命令,减少网络开销

4. 数据库简单稳定

简单主要表现在源码少、单线程模式、不依赖系统类库三个方面。稳定就不说了,基本没有出现过因Redis自身问题宕机的情况。

5. 客户端语言多

无需多言,几乎所有主流编程语言都有Redis客户端。除了Redis本身的流行,从技术角度而言还有两个原因:

  1. 基于TCP协议实现通信
  2. 指定RESP(Redis Serialization Protocol,Redis序列化协议)实现交互

6. 提供数据持久化功能

  1. RDB:手动或定期触发、将当前进程全量数据以快照形式保存至硬盘
  2. AOF:以独立日志方式实时记录每次写命令,需定期重写AOF文件实现文件压缩

7. 主从复制

提供复制功能,实现数据副本。

8. 高可用和分布式

Sentinel哨兵保证Redis节点的故障发现和自动转移。Redis Cluster则跟一般集群一样实现真正分布式,提供高可用、读写和容量的扩展。

二、使用场景

1.Redis可以做什么

Redis的可以做的事情很多,下面列出常用的几种使用场景:

  1. 缓存:依赖键值过期时间设置以及最大内存和内存溢出后的淘汰策略等
  2. 排行榜:依赖列表和有序集合等数据结构
  3. 计数器:依赖计数功能
  4. 消息队列:依赖发布订阅功能和阻塞队列功能,可以满足一般消息队列功能需求。
  5. 不适合关系型数据库但访问频繁的数据:比如下拉列表,共同好友等。

2.Redis不可以做什么

从技术本身的角度来说,只要能够实现我们需要的功能,那么就没有什么是不可以做的。但是技术应用则一定会有自己的应用场景和边界。Redis本身自然也有很多不适合它解决的问题,比如:

  1. 海量数据。Redis数据存放在内存中,本身成本就相对较高,海量数据存储必然无限提高经济成本。
  2. 冷数据。数据操作频次很低甚至几近于无,完全没有必要存储在Redis中。

简单来说,就是从经济成本考虑,衡量效率与成本,投入产出比是我们技术选型时必须要考虑的问题。当然,投入不仅仅是经济成本,还有人力成本,如果有些问题Redis虽然也能解决,经济成本也不高,但是实现复杂,也不应该作为首选方案。

总结

Redis本身功能丰富,是否适合我们的应用场景需要多方面衡量,当然前提是我们对Redis和场景本身都足够了解。就Redis而言,最好能够了解Redis的原理,并阅读源码,这样我们在开发和运维时,就能提前规避很多问题,甚至做出定制化开发。

Redis使用场景概况相关推荐

  1. AliCloudDB for redis应用场景之存储最新N条聊天记录

    AliCloudDB for redis应用场景之存储最新N条聊天记录 场景介绍 在各种IM通信工具中,常常需要展示最新的聊天记录,这种数据写入频繁,对响应时间要求高.一般情况,这种场景通常会选择持久 ...

  2. Redis应用场景说明与部署

    Redis简介 REmote DIctionary Server(Redis)是一个基于key-value键值对的持久化数据库存储系统.redis和大名鼎鼎的memcached缓存服务很像,但是red ...

  3. Redis使用场景、Redis线程模型、Redis持久化 - 公开课笔记

    redis和数据库怎么写同步? 分布式如何达到一致性? CAP 一致性.可用性.性能 HA:高可用,不存在没有任何时延.没有任何波动的高可用 容忍度只要达标,就可以.不要为了技术而技术->你会否 ...

  4. 转载:Redis 应用场景

    2019独角兽企业重金招聘Python工程师标准>>> 1.  MySql+Memcached架构的问题 实际MySQL是适合进行海量数据存储的,通过Memcached将热点数据加载 ...

  5. Redis应用场景(转)

    (来源:http://www.cnblogs.com/shanyou/archive/2012/09/04/2670972.html) Redis常用数据类型 Redis最为常用的数据类型主要有以下五 ...

  6. redis 数据类型详解 以及 redis适用场景场合

    redis 数据类型详解 以及 redis适用场景场合 1. MySql+Memcached架构的问题 实际MySQL是适合进行海量数据存储的,通过Memcached将热点数据加载到cache,加速访 ...

  7. Redis应用场景-排行榜

    文章目录 Redis应用场景-排行榜 前言 排行榜 今日热搜 热门视频排行榜 周歌曲点播榜 参考文档 Redis应用场景-排行榜 前言 使用Redis的有序集合(Sorted set)可以很方便地实现 ...

  8. 详解 Redis 应用场景及应用实例

    Redis是一个开源的使用ANSI C语言编写.支持网络.可基于内存亦可持久化的日志型.Key-Value数据库,并提供多种语言的API.从2010年3月15日起,Redis的开发工作由VMware主 ...

  9. Redis 应用场景和应用实例详解

    Redis是一个开源的使用ANSI C语言编写.支持网络.可基于内存亦可持久化的日志型.Key-Value数据库,并提供多种语言的API.从2010年3月15日起,Redis的开发工作由VMware主 ...

最新文章

  1. 在Java版中被移除的物品,盘点Minecraft曾“移除”的5个物品,Mojang反悔?1.14即将加入!...
  2. 关于inline函数
  3. python运行系统找不到指定文件_“系统无法找到指定的文件”当调用Python中的subprocess.Popen...
  4. python编程语言零基础入门-程序员大佬,给Python零基础入门书籍教程的一些建议!...
  5. Nettiers快速使用入门(一) 数据库
  6. (企业案例)Nacos Config 进阶使用
  7. Python:程序员在每天不同时间发微信消息给女友
  8. 聚集索引,非聚集索引的区别是什么
  9. 小小芯片上的上千万个晶体管是怎么装上去的
  10. QCon2016 上海会议汇总(1) - 前端技术实践
  11. MySql处理Unicode字符串
  12. DeepFool论文翻译---DeepFool: a simple and accurate method to fool deep neural networks
  13. 史上官场吃喝风:与送礼一样成为通用的规则
  14. 【Axure教程】中继器版穿梭表格
  15. 上网操作1000问(供初學者)
  16. X线DR医学图像 --- DR医用滤线栅及摩尔纹详解 (五) 消除摩尔纹
  17. Python语言程序设计 - 测验6: 组合数据类型 (第6周)
  18. 人工智能课程期末总结
  19. 常见的几种身份验证方法
  20. 5年老java开发,我看过哪些书,看过哪些视频,刷过哪些面试题,都在这里了

热门文章

  1. 从新出发——慕书读书正式更名为“慕书+”
  2. OMRON CP1H PLC脉冲控制三轴伺服
  3. 横向扩展纵向输出,看清中软国际的云版图
  4. web前端框架Hui使用
  5. 智能对话机器人开发实战视频教程-张子良-专题视频课程
  6. 苹果6换屏多钱_自贸区专业苹果6换个外屏多少钱
  7. Windows系统 清理C盘详细步骤
  8. 代码随想录--哈希表--三数相加题型
  9. android 支付宝捐赠,支付宝蚂蚁森林活动行走步数怎么捐献?
  10. matlab 系统时域响应,动力学系统时域响应计算的六种方法Matlab源程序(Newmark,Houbolt法,中心差分法)...