redis应用场景

1.概述

Redis 是速度非常快的非关系型(NoSQL)内存键值数据库,可以存储键和五种不同类型的值之间的映射。

键(key)的类型只能为字符串(String)值(value)支持五种数据类型:字符串(String)、列表(list)、集合(set)、有序集合(zset)、哈希(hash)。

Redis 支持很多特性,例如将内存中的数据持久化到硬盘中,使用复制来扩展读性能,使用分片来扩展写性能。

Redis的使用场景

(1)缓存:Redis当今最为人熟知的使用场景。再提升服务器性能方面非常有效;

(2)排行榜:利用Redis的SortSet数据结构能够非常方便搞定;

(3)计算器/限速器:利用Redis中原子性的自增操作,我们可以统计类似用户点赞数、用户访问数等,这类操作如果用MySQL,频繁的读写会带来相当大的压力;限速器比较典型的使用场景是限制某个用户访问某个API的频率,常用的有抢购时,防止用户疯狂点击带来不必要的压力;

注:限速器也是对请求限流的一种实现方式。

(4)好友关系:利用集合的一些命令,比如求交集、并集、差集等。可以方便搞定一些共同好友、共同爱好之类的功能;

(5)简单消息队列:除了Redis自身的发布/订阅模式,我们也可以利用List来实现一个队列机制,比如:到货通知、邮件发送之类的需求,不需要高可靠,但是会带来非常大的DB压力,完全可以用List来完成异步解耦;不过最好用kafka、RabbitMQ等消息中间件。

(6)Session共享:默认Session是保存在服务器的文件中,即当前服务器,如果是集群服务,同一个用户过来可能落在不同机器上,这就会导致用户频繁登陆;采用Redis保存Session后,无论用户落在那台机器上都能够获取到对应的Session信息。

Redis优点:
  • 速度快,完全基于内存;
  • 使用C语言实现,网络层使用epoll解决高并发问题;
  • 单线程模型避免了不必要的上下文切换及竞争条件;
Redis的缺点:

滥用可能导致系统的不稳定、成本增高等问题。

比如,用Redis去保存用户的基本信息,虽然它能够支持持久化,但是它的持久化方案并不能保证数据绝对的落地,并且还可能带来Redis性能下降,因为持久化太过频繁会增大Redis服务的压力。

简单总结就是数据量太大、数据访问频率非常低的业务都不适合使用Redis。数据太大会增加成本,访问频率太低,保存在内存中纯属浪费资源。如果不担心浪费资源,那请忽略。

文章目录
  1. 1. Redis的使用场景
  2. 2. Redis优点:
  3. 3. Redis的缺点:
| 139.6k