Redis 有哪些应用场景?
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Redis 有哪些应用场景?相关的知识,希望对你有一定的参考价值。
缓存:这应该是 Redis 最主要的功能了,也是大型网站必备机制,合理地使用缓存不仅可以加 快数据的访问速度,而且能够有效地降低后端数据源的压力。共享Session:对于一些依赖 session 功能的服务来说,如果需要从单机变成集群的话,可以选择 redis 来统一管理 session。
消息队列系统:消息队列系统可以说是一个大型网站的必备基础组件,因为其具有业务 解耦、非实时业务削峰等特性。Redis提供了发布订阅功能和阻塞队列的功 能,虽然和专业的消息队列比还不够足够强大,但是对于一般的消息队列功 能基本可以满足。比如在分布式爬虫系统中,使用 redis 来统一管理 url队列。
分布式锁:在分布式服务中。可以利用Redis的setnx功能来编写分布式的锁,虽然这个可能不是太常用。 当然还有诸如排行榜、点赞功能都可以使用 Redis 来实现,但是 Redis 也不是什么都可以做,比如数据量特别大时,不适合 Redis,我们知道 Redis 是基于内存的,虽然内存很便宜,但是如果你每天的数据量特别大,比如几亿条的用户行为日志数据,用 Redis 来存储的话,成本相当的高。 参考技术A 缓存:
string类型,可以做热点数据缓存(如报表),对象缓存、全页缓存、可以提升热点数据的访问数据;
数据共享分布式:
string类型,因为Redis是分布式的独立服务,可以在多个应用之间共享,例如分布式Session;
分布式锁:
string类型setnx方法,只有不存在时才能添加成功,返回true;
全局ID:
int类型,incrby,利用原子性,incrby userid 1000,分库分表的场景,一次性拿一段;
计数器:
int类型,incr方法,例如文章的阅读量、微博点赞数、允许一定的延迟,先写入Reids,再定时同步到数据库;
限流:
int类型,incr方法,以访问者的ip和其他信息作为key,访问一次增加一次计数,超过次数则返回false;
位统计:
string类型的bitcount(1.6.6的bitmap数据结构介绍),字符是以8位二进制存储的,例如:在线用户统计,留存用户统计,支持按位与、按位或等等操作;
购物车:
String或hash。所有String可以做的hash都可以做;
消息队列:
List提供了两个阻塞的弹出操作:blpop/brpop,可以设置超时时间,队列:先进先除:rpush
blpop,左头右尾,右边进入队列,左边出队列,栈:先进后出:rpush、brpop;
抽奖:
自带一个随机获得值。
以上是关于Redis 有哪些应用场景?的主要内容,如果未能解决你的问题,请参考以下文章