随着数据量的增长,MySQL已经满足不了大型互联网类应用的需求,因此,Redis作为内存数据库,很好的作为其架构上的补充。在某些场景下,可以充分的利用Redis的特性,大大提高效率。


使用场景说明

计数器

数据统计的需求非常普遍,通过原子递增保持计数。例如,点赞数、收藏数、分享数等。

排行榜

排行榜按照得分进行排序,例如,展示最近、最热、点击率最高、活跃度最高等等条件的top list。

用于存储时间戳

类似排行榜,使用redis的zset用于存储时间戳,时间会不断变化。例如,按照用户关注用户的最新动态列表。

记录用户判定信息

记录用户判定信息的需求也非常普遍,可以知道一个用户是否进行了某个操作。例如,用户是否点赞、用户是否收藏、用户是否分享等。

社交列表

社交属性相关的列表信息,例如,用户点赞列表、用户收藏列表、用户关注列表等。

缓存

缓存一些热点数据,例如,PC版本文件更新内容、资讯标签和分类信息、生日祝福寿星列表。

队列

Redis能作为一个很好的消息队列来使用,通过list的lpop及lpush接口进行队列的写入和消费,本身性能较好能解决大部分问题。但是,不提倡使用,更加建议使用rabbitmq等服务,作为消息中间件。

会话缓存

使用Redis进行会话缓存。例如,将web session存放在Redis中。

业务使用方式

  • String(字符串): 应用数, 资讯数等, (避免了select count(*) from …)

  • Hash(哈希表): 用户粉丝列表, 用户点赞列表, 用户收藏列表, 用户关注列表等。

  • List(列表):消息队列, push/sub提醒。

  • SortedSet(有序集合):热门列表, 最新动态列表, TopN, 自动排序。


更多相关文章

  1. 最近 5 年 133 个 Java 面试问题列表(上)
  2. 最近 5 年 133 个 Java 面试问题列表(下)
  3. 69.批量创建mysql用户
  4. 如何检测用户有关退出页面的信息?
  5. jQuery - 从一个列表项中查找活动类,并将此类提供给另一个列表
  6. 使用jquery和ajax更新选项列表
  7. 将AngularJS、jQueryUI、Angular-Drag-Drop合并为排序列表
  8. 当使用Javascript选择其中一个时,如何禁用复选框列表中的其他项目
  9. 如何在用户选择操作后获取当前日期和时间

随机推荐

  1. 怎样使用React Context API [每日前端夜
  2. 7个开放式的 HTML 面试题及回答策略 [每
  3. 尝鲜 ES2019 的新功能 [每日前端夜话0x38
  4. 表弟的数学题,我竟然用了python才解出来
  5. 7 个开放式 CSS 面试题及回答策略 [每日
  6. 在北京看场雪为什么这么难?
  7. 用python对2019年二手房价格进行数据分析
  8. 基于 Babel 的 npm 包的最小化设置 [每日
  9. 一文学懂 TypeScript 的类型 [每日前端夜
  10. 通过 Web 控制蓝牙设备:WebBluetooth入门