特性优势

1 支持持久化

Redis支持数据的持久化,可以将内存中的数据保存在磁盘中,重启的时候可以再次加载进行使用。

2 数据类型丰富

Redis不仅仅支持简单的key-value类型的数据,同时还提供list,set,zset,hash等数据结构的存储。

3 主从数据备份

Redis支持数据的备份,即master-slave模式的数据备份,可以实现主从数据同步。

4 读写性能优异

Redis提供了极高的读写性能,读的速度是110000次/s,写的速度是81000次/s 。

5 操作原子性

Redis中,单个操作是原子性的。多个操作也支持事务操作,通过MULTI和EXEC指令包起来。但事务不能终止后续执行回滚。

6 发布订阅模式

Redis支持发布订阅(pub/sub)消息通信模式,发送者(pub)发送消息,订阅者(sub)接收消息。Redis 客户端可以订阅任意数量的频道。

7 多语言API支持

Redis支持多种语言API操作,可以通过各种主流语言访问读写Redis服务器来实现相应的功能。比如Java,C#,PHP等。

8 数据自动过期

Redis可以设置数据过期时间,保证了数据的适时清理,避免大量无用低效数据占领内存造成浪费。

更新策略

普遍应用的缓存更新策略主要有两种方式,主动更新和被动更新。

主动更新

主动更新是指用户或程序主动去触发缓存的更新,可以采取手动触发和定时任务的方式。

这种方式数据及时性较低,需要等到服务更新时才会响应,每次服务会更新全量数据。

对于主要用作查询,时效性要求不高,更新频率比较低的数据比较适用。

被动更新

被动更新是指数据使用程序需要时才被动更新缓存,被动更新策略灵活,不需要全量更新,数据的及时性较高。

缓存更新流程大致如下:

1、缓存【命中】:客户端从缓存中直接取到数据,返回结果

2、缓存【失效】:客户端请求数据先从缓存中查询,如果没有再查询数据库,最后将数据放入缓存

3、缓存【更新】:客户端写入数据到数据库,成功之后,让缓存失效(下次请求缓存失效,会查询数据库,再放入缓存)

应用场景

缓存数据

对于热点数据,经常会被查询,但是不经常被修改或者删除的情况下,首选使用redis缓存,可以有效的提高查询数据,缓解数据库的压力。

统计计数

进行各种数据统计的用途是非常广泛的,比如访问计数、粉丝统计等。incrby命令让这些变得很容易,通过原子递增保持计数,get\set用来重置计数器,过期属性用来确认一个关键字什么时候应该删除。由于是单线程,可以有效的避免并发问题,保证不会出错,而且100%毫秒级性能。

最新列表

类似最新新闻、最新评论之类的需求,如果在总数量很大的情况下,可以选择性的将前n条记录缓存到redis,只有在查询记录条数超过阈值的时候才查询数据库。redis使用的是常驻内存的缓存,速度非常快。lpush用来插入一个内容id,作为关键字存储在列表头部。ltrim用来限制列表中的项目数最多为1000。

排行榜

排行榜是各种推荐栏目经常用到的一类板块,排行榜按照得分进行排序,zadd命令可以直接实现这个功能,而zrevrange命令可以用来按照得分来获取前N名的用户,zrank可以用来获取用户排名,实现起来非常直接而且操作容易。

消息系统

基于发布订阅模式,可以实现简单的消息队列功能,和RabbitMQ\RocketMQ等消息中间件类似,消息队列可以把并发请求转为串行模式。

队列和栈

队列和栈可以运用在很多应用场景下,而基于list可以很轻易的构建出队列和栈,使用sorted set甚至可以构建具有优先级的队列。

总结

redis非常强大,除了上述场景之外,还有很多适用场景未及罗列,欢迎各位积极补充。


作者:朝雨忆轻尘
出处:https://www.cnblogs.com/xifengxiaoma/ 
版权所有,欢迎转载,转载请注明原文作者及出处。

转载于:https://www.cnblogs.com/xifengxiaoma/p/9441951.html

Redis笔记(七):Redis应用场景相关推荐

  1. 深入剖析Redis系列(七) - Redis数据结构之列表

    前言 列表(list)类型是用来存储多个 有序 的 字符串.在 Redis 中,可以对列表的 两端 进行 插入(push)和 弹出(pop)操作,还可以获取 指定范围 的 元素列表.获取 指定索引下标 ...

  2. Redis笔记(3): Redis持久化

  3. 深入剖析Redis系列(三) - Redis集群模式搭建与原理详解

    前言 在 Redis 3.0 之前,使用 哨兵(sentinel)机制来监控各个节点之间的状态.Redis Cluster 是 Redis 的 分布式解决方案,在 3.0 版本正式推出,有效地解决了 ...

  4. 深入剖析Redis系列(五) - Redis数据结构之字符串

    前言 字符串类型 是 Redis 最基础的数据结构.字符串类型 的值实际可以是 字符串(简单 和 复杂 的字符串,例如 JSON.XML).数字(整数.浮点数),甚至是 二进制(图片.音频.视频),但 ...

  5. Redis的七种武器及其适合的应用场景

    长生剑.孔雀翎.碧玉刀.多情环.离别钩.霸王枪.拳头是古龙笔下的七种武器,而本文打算将Redis的几种使用方式 Strings.Hashs.Lists.Sets.Sorted Sets.Pub/Sub ...

  6. python笔记七之操作MySQL、excel、Redis开发接口

    一.MySQL操作补充 cur = coon.cursor(cursor=pymysql.cursors.DictCursor)建立游标的时候指定了游标类型,返回的就是一个字典了.fetchall() ...

  7. 【大厂面试】面试官看了赞不绝口的Redis笔记

    文章目录 一.Redis简介 二.Redis API的使用和理解 (一)通用命令 (二)单线程架构 (三)数据结构和内部编码 (四)字符串 (五)hash (字典) (六)列表 (七)Set集合 (八 ...

  8. Redis笔记(狂神说)

    搭配狂神说 Redis视频一起学习 狂神视频 一.Nosql概述 为什么使用Nosql 1.单机Mysql时代 90年代,一个网站的访问量一般不会太大,单个数据库完全够用.随着用户增多,网站出现以下问 ...

  9. 狂神说Redis笔记

    以下是狂神Redis笔记,个人觉得总结的很好,故收藏一下,日后再总结一下自己的笔记 ⭐学习时间2022.1.4-2022.1.6 一.Nosql概述 为什么使用Nosql 1.单机Mysql时代 90 ...

  10. go redis 清空所有值_【大厂面试】面试官看了赞不绝口的Redis笔记二

    时间复杂度: O(1) 将一个或多个值 value 插入到列表 key 的表头.如果有多个 value 值,那么各个 value 值按从左到右的顺序依次插入到表头: 比如说,对空列表 mylist 执 ...

最新文章

  1. mysql总结10------索引☆
  2. css权威指南pdf
  3. 分享Kali Linux 2016.2最新镜像20160919
  4. 电脑功耗监测_应急监测便携式VOC检测仪色谱分析仪原理解析
  5. shell 脚本比较字符串相等_shell脚本--逻辑判断与字符串比较
  6. 代码重构的方法和经验_关于烂代码优化重构的几点经验
  7. (大数据工程师学习路径)第五步 MySQL参考手册中文版----MySQL视图
  8. resnet,inception,densenet,senet
  9. C#数字日期转成中文日期
  10. textContent和innerText属性的区别
  11. php select where,PHP where语句
  12. 【深度学习】使用预训练模型
  13. 公司设备损坏了,怎么处理
  14. python根据url下载视频_Python爬取某视频并下载
  15. Autodesk HSMWorks Ultimate 2019 Crack 破解版
  16. 龙格库塔方法的原理和案例及MTATLAB编程
  17. Stata做KHB中介效应分析
  18. Python 将中文大写数字转为阿拉伯数字
  19. postman设置为中文
  20. 【高数】高数第五章节——定积分积分上限函数牛顿——莱布尼兹公式反常积分与广义积分

热门文章

  1. jquery.roundabout.js图片叠加3D旋转
  2. Object-C中self和super的区别
  3. 起止时间控制,显示格式控制
  4. Global.asax中的C#服务
  5. 解决:Google代码achartengine曲线代码报错问题(转)
  6. war,jar包是啥
  7. ubuntu 下安装mplayer
  8. JS核心基础数组的操作概述
  9. Flutter AnimatedSwitcher 动画切换组件的基本使用
  10. Flutter搜索框SearchBar