Redis通常应用于哪些场景?

85 阅读2分钟

1. 缓存

  • 缓存是现在所有中大型应用系统必用的中间件, 合理利用缓存既可以提升系统的访问速度, 还能够大大降低db的访问压力
  • Redis提供了键过期功能, 也提供了灵活的键淘汰策略。所以Redis用在缓存的场景非常多。

image.png

  • 在该场景下, 有一些存储于db中的数据会被频繁访问。如果频繁的访问db, db的负载会升高, 同时因为db的io比较慢, 应用系统的响应会比较差。这时候, 如果使用Redis来缓存这些被频繁访问的数据, 既可以有效降低db的负载, 也可以提高应用系统的请求响应。

2. 排行榜

  • 利用Redis的有序集合, 可以轻松实现排行榜功能,支持快速的插入、删除和范围查询。

3. 计数器

  • 比如电商网站商品的浏览量、视频网站视频的播放数等。
  • 为了保证每次浏览都得给+1, 并发量高时如果每次都请求数据库操作无疑是种挑战和压力。Redis提供的incr命令来实现计数器功能, 内存操作, 性能非常好, 非常适用于这些计数场景。

4. 分布式会话

  • 集群模式下, 在应用不多的情况下一般使用容器自带的session复制功能就能满足。当应用增多相对复杂的系统中, 一般都会搭建以Redis等内存数据库为中心的session服务, session不再由容器管理, 而是由session服务及内存数据库管理。

5. 分布式锁

  • 在很多互联网公司中都使用了分布式技术, 分布式技术带来的技术挑战是对同一个资源的并发访问, 如全局ID、减库存、秒杀等场景, 并发量不大的场景可以使用数据库的悲观锁、乐观锁来实现。但在并发量高的场合中, 利用数据库锁来控制资源的并发访问是不太理想的, 大大影响了数据库的性能。可以利用Redis的setnx功能来编写分布式的锁, 如果设置返回1说明获取锁成功, 否则获取锁失败, 实际应用中要考虑的细节要更多。