Redis笔记(七):Redis应用场景
特性优势
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应用场景的更多相关文章
- Redis常见七种使用场景(PHP实战)
edis 是一个开源的使用ANSI C语言编写.支持网络.可基于内存亦可持久化的日志型.Key-Value数据库,并提供多种语言的API. 本篇文章,主要介绍利用Redis常见应用场景下PHP实战. ...
- loadrunner基础学习笔记七-面向目标场景
部署应用程序之前,要执行验收测试以确保系统能够承担预期的实际工作量. 可以为想要生成的每秒点击次数,每秒事务数或事务响应时间设置目标 loadrunner将使用面向目标的场景自动生成所需的目标,当应用 ...
- redis相关笔记(三.redis设计与实现(笔记))
redis笔记一 redis笔记二 redis笔记三 1.数据结构 1.1.简单动态字符串: 其属性有int len:长度,int free:空闲长度,char[] bur:字符数组(内容) 获取字符 ...
- 一:Redis的7个应用场景
Redis的7个应用场景 一:缓存——热数据 热点数据(经常会被查询,但是不经常被修改或者删除的数据),首选是使用redis缓存,毕竟强大到冒泡的QPS和极强的稳定性不是所有类似工具都有的,而且相 ...
- 笔记-数据库-redis
笔记-数据库-redis 1. redis简介 Redis 是一个开源(BSD许可)的,内存中的数据结构存储系统,它可以用作数据库.缓存和消息中间件. 它支持多种类型的数据结构,如 stri ...
- 刨树根,抓住redis 进行七连问
追着 redis 进行七连问 Hello Redis 有几个问题想请教你 Hello,Redis! 我们相处已经很多年了,从模糊的认识到现在我们已经深入结合,你的好我一直都知道也一直都记住,能否在让我 ...
- redis笔记之一
NoSQL简介 全称是Not Only SQL,泛指菲关系型数据库,它是通过键值对存储数据并且将数据存储在内存中.而像mysql,sql server这些通过关系表存数据的就叫关系型数据库 为什么需要 ...
- 国内外三个不同领域巨头分享的Redis实战经验及使用场景
Redis不是比较成熟的memcache或者Mysql的替代品,是对于大型互联网类应用在架构上很好的补充.现在有越来越多的应用也在纷纷基于Redis做架构的改造.首先简单公布一下Redis平台实际情况 ...
- NoSQL初探之人人都爱Redis:(3)使用Redis作为消息队列服务场景应用案例
一.消息队列场景简介 “消息”是在两台计算机间传送的数据单位.消息可以非常简单,例如只包含文本字符串:也可以更复杂,可能包含嵌入对象.消息被发送到队列中,“消息队列”是在消息的传输过程中保存消息的容器 ...
- Redis作为消息队列服务场景应用案例
NoSQL初探之人人都爱Redis:(3)使用Redis作为消息队列服务场景应用案例 一.消息队列场景简介 “消息”是在两台计算机间传送的数据单位.消息可以非常简单,例如只包含文本字符串:也可以更 ...
随机推荐
- PriorityQueue源码分析
PriorityQueue其实是一个优先队列,和先进先出(FIFO)的队列的区别在于,优先队列每次出队的元素都是优先级最高的元素.那么怎么确定哪一个元素的优先级最高呢,jdk中使用堆这么一 ...
- C++ 中的运算符的优先级
C++ 中的运算符的优先级 直接看图
- 团队项目(第四周之一)—GG队
Alpha认领任务: 叶尚文:对应键盘监听结果的动画以及计算 于泽浩:制作背景gif图,并保证能在程序中循环播放 龙剑初:项目进度跟进及博客更新 杜婷萱:把图片结合起来,设置云朵透明度的变化 蔡晓晴: ...
- 设计模式--Singleton_(1)(C#版)
今天我们来探索一下Singleton设计模式的实现及应用场景. Singleton模式属于Creational Type(创建型)设计模式的一种.该模式一般用于确保在应用中仅创建一个某类的instan ...
- 统一登录中心SSO 单点登录系统的构想
什么是单点登录?我想肯定有一部分人“望文生义”的认为单点登录就是一个用户只能在一处登录,其实这是错误的理解.单点登录指的是多个子系统只需要登录一个,其他系统不需要登录了(一个浏览器内).一个子系统退出 ...
- .net core获取appsettings CustomSettings
private static string GetCustomSettings(string key) { var config = new ConfigurationBuilder() .AddIn ...
- CSS2.1SPEC:视觉格式化模型之width属性详解(上)
在介绍了包含块之后,CSS2.1标准中介绍了width属性和height属性,这两个属性在我们的页面布局中也发挥着重要的作用.在盒模型中,width和height包围了一个框的内容区域(content ...
- Python爬虫入门教程 65-100 爬虫与反爬虫的修罗场,点评网站,字体反爬之三
爬虫与反爬虫的修罗场 哪种平台最吸引爬虫爱好者,当然是社区类的,那里容易产生原生态,高质量的数据啊, 你看微博,知乎,豆瓣爬的不亦乐乎. 评论也是产生内容的好地方 生活类点评网站 旅游类点评网站 音乐 ...
- Day 28面向对象的进阶-内置函数(__new__,__del__)
元类 创造 类 所有类的type 都是他的元类 类创造 对象 具体创造对象的方法 __new__方法 class 类名(classmata = type)#默认是 class 类名(class ...
- CentOS 7 - 安装Eclipse
注意问题:Eclipse官方网站提供的tar文件有可能有问题,我今天下载的一个tar文件,在Windows下解压缩,随后放到CentOS 7里面不行,随后我又重新下载一份,还是不行,最终我下载了另外一 ...