• 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命令让这些变得很容易,通过原子递增保持计数,getset用来重置计数器,过期属性用来确认一个关键字什么时候应该删除。由于是单线程,可以有效的避免并发问题,保证不会出错,而且100%毫秒级性能。

    最新列表

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

    排行榜

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

    消息系统

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

    队列和栈

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

    总结

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


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

  • 相关阅读:
    Git 分支管理
    Kubernetes 中文文档
    Docker 命令大全
    Redis 常用命令 大全
    Docker 资源汇总
    Docker 安装 Redis
    JavaScript闭包
    CSS选择器
    JavaScript类型转换
    javascript字符串处理方法
  • 原文地址:https://www.cnblogs.com/xifengxiaoma/p/9441951.html
Copyright © 2020-2023  润新知