redis 学与思系列(1)

前言

本篇文章主要解答如下几个问题:redis

  • 为何使用 Redis?
  • redis 有哪些适用场景?
  • 使用 Redis 有什么缺点?

这3个问题实际上能够看作是一类问题,主要从适用场景,优缺点角度解读redis。数据库

一.redis 能够解决什么问题?----适用场景

  • 缓存:缓存是redis使用最多的场景了,缓存机制几乎全部中大型的网站都会用到缓存,缓存能够说是扛高并发的一把利器。redis提供了丰富的数据结构类型,也提供了灵活的缓存过时机制和过时数据淘汰策略(这部份内容后面分享)。
  • 分布式锁:借助redis 的set key value ex time nx 指令能够实现分布式锁(可是这个有缺陷,后面进一步分析)
  • 排行版系统: 借助redis的有序集合能够实现
  • 异步队列: 借助redis的列表(lpush,rpop)等等相关指令能够实现
  • 统计和查找:好比从10亿个无序的数中选择最大的10个数,能够借助redis的位图功能实现。
  • 不精确的统计去重:好比统计用户访问某个页面的UV,能够借助redis的HyperLogLog 来实现
    ....还有不少,不一一列举了。

二.redis 有哪些优缺点?

  • 优势:
1. 执行速度快.
2. 提供了丰富的数据结构,如字符串,列表,集合,有序集合,散列表,位图,HyperLogLog等等。
3. 支持键过时和过时数据的淘汰策略.
4. 提供了发布订阅功能,能够作消息队列.
5. 提供了简单的事务功能,pipeline 管道功能.
6. 支持lua脚本.
7. 支持数据持久化.
8. 支持分布式集群高可用部署.
复制代码
  • 缺点:缓存

    因为是内存数据库,因此,单台机器,存储的数据量,跟机器自己的内存大小。虽然redis自己有key过时策略,可是仍是须要提早预估和节约内存。若是内存增加过快,须要按期删除数据。
    复制代码

后记

本文只是(从我的理解角度)简单的解答了一下redis可用的适用场景和优缺点。后续在不断的实践过程当中就这块内容有了更深的体会以后再作进一步补充。数据结构

相关文章
相关标签/搜索