特性优势

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/
版权所有,欢迎转载,转载请注明原文作者及出处。

Redis笔记(七):Redis应用场景的更多相关文章

  1. Redis常见七种使用场景(PHP实战)

    edis 是一个开源的使用ANSI C语言编写.支持网络.可基于内存亦可持久化的日志型.Key-Value数据库,并提供多种语言的API. 本篇文章,主要介绍利用Redis常见应用场景下PHP实战. ...

  2. loadrunner基础学习笔记七-面向目标场景

    部署应用程序之前,要执行验收测试以确保系统能够承担预期的实际工作量. 可以为想要生成的每秒点击次数,每秒事务数或事务响应时间设置目标 loadrunner将使用面向目标的场景自动生成所需的目标,当应用 ...

  3. redis相关笔记(三.redis设计与实现(笔记))

    redis笔记一 redis笔记二 redis笔记三 1.数据结构 1.1.简单动态字符串: 其属性有int len:长度,int free:空闲长度,char[] bur:字符数组(内容) 获取字符 ...

  4. 一:Redis的7个应用场景

    Redis的7个应用场景   一:缓存——热数据 热点数据(经常会被查询,但是不经常被修改或者删除的数据),首选是使用redis缓存,毕竟强大到冒泡的QPS和极强的稳定性不是所有类似工具都有的,而且相 ...

  5. 笔记-数据库-redis

    笔记-数据库-redis 1.      redis简介 Redis 是一个开源(BSD许可)的,内存中的数据结构存储系统,它可以用作数据库.缓存和消息中间件. 它支持多种类型的数据结构,如 stri ...

  6. 刨树根,抓住redis 进行七连问

    追着 redis 进行七连问 Hello Redis 有几个问题想请教你 Hello,Redis! 我们相处已经很多年了,从模糊的认识到现在我们已经深入结合,你的好我一直都知道也一直都记住,能否在让我 ...

  7. redis笔记之一

    NoSQL简介 全称是Not Only SQL,泛指菲关系型数据库,它是通过键值对存储数据并且将数据存储在内存中.而像mysql,sql server这些通过关系表存数据的就叫关系型数据库 为什么需要 ...

  8. 国内外三个不同领域巨头分享的Redis实战经验及使用场景

    Redis不是比较成熟的memcache或者Mysql的替代品,是对于大型互联网类应用在架构上很好的补充.现在有越来越多的应用也在纷纷基于Redis做架构的改造.首先简单公布一下Redis平台实际情况 ...

  9. NoSQL初探之人人都爱Redis:(3)使用Redis作为消息队列服务场景应用案例

    一.消息队列场景简介 “消息”是在两台计算机间传送的数据单位.消息可以非常简单,例如只包含文本字符串:也可以更复杂,可能包含嵌入对象.消息被发送到队列中,“消息队列”是在消息的传输过程中保存消息的容器 ...

  10. Redis作为消息队列服务场景应用案例

    NoSQL初探之人人都爱Redis:(3)使用Redis作为消息队列服务场景应用案例   一.消息队列场景简介 “消息”是在两台计算机间传送的数据单位.消息可以非常简单,例如只包含文本字符串:也可以更 ...

随机推荐

  1. PriorityQueue源码分析

          PriorityQueue其实是一个优先队列,和先进先出(FIFO)的队列的区别在于,优先队列每次出队的元素都是优先级最高的元素.那么怎么确定哪一个元素的优先级最高呢,jdk中使用堆这么一 ...

  2. C++ 中的运算符的优先级

    C++ 中的运算符的优先级 直接看图

  3. 团队项目(第四周之一)—GG队

    Alpha认领任务: 叶尚文:对应键盘监听结果的动画以及计算 于泽浩:制作背景gif图,并保证能在程序中循环播放 龙剑初:项目进度跟进及博客更新 杜婷萱:把图片结合起来,设置云朵透明度的变化 蔡晓晴: ...

  4. 设计模式--Singleton_(1)(C#版)

    今天我们来探索一下Singleton设计模式的实现及应用场景. Singleton模式属于Creational Type(创建型)设计模式的一种.该模式一般用于确保在应用中仅创建一个某类的instan ...

  5. 统一登录中心SSO 单点登录系统的构想

    什么是单点登录?我想肯定有一部分人“望文生义”的认为单点登录就是一个用户只能在一处登录,其实这是错误的理解.单点登录指的是多个子系统只需要登录一个,其他系统不需要登录了(一个浏览器内).一个子系统退出 ...

  6. .net core获取appsettings CustomSettings

    private static string GetCustomSettings(string key) { var config = new ConfigurationBuilder() .AddIn ...

  7. CSS2.1SPEC:视觉格式化模型之width属性详解(上)

    在介绍了包含块之后,CSS2.1标准中介绍了width属性和height属性,这两个属性在我们的页面布局中也发挥着重要的作用.在盒模型中,width和height包围了一个框的内容区域(content ...

  8. Python爬虫入门教程 65-100 爬虫与反爬虫的修罗场,点评网站,字体反爬之三

    爬虫与反爬虫的修罗场 哪种平台最吸引爬虫爱好者,当然是社区类的,那里容易产生原生态,高质量的数据啊, 你看微博,知乎,豆瓣爬的不亦乐乎. 评论也是产生内容的好地方 生活类点评网站 旅游类点评网站 音乐 ...

  9. Day 28面向对象的进阶-内置函数(__new__,__del__)

     元类 创造 类  所有类的type 都是他的元类 类创造 对象   具体创造对象的方法 __new__方法 class 类名(classmata = type)#默认是 class 类名(class ...

  10. CentOS 7 - 安装Eclipse

    注意问题:Eclipse官方网站提供的tar文件有可能有问题,我今天下载的一个tar文件,在Windows下解压缩,随后放到CentOS 7里面不行,随后我又重新下载一份,还是不行,最终我下载了另外一 ...