Redis的高级特性一览

应用场景

  • 缓存系统:用于缓解数据库的高并发压力
  • 计数器:使用Redis原子操作,用于社交网络的转发数,评论数,粉丝数,关注数等
  • 排行榜:使用zset数据结构,进行排行榜计算
  • 实时系统:使用Redis位图的功能实现布隆过滤器,进而实现垃圾邮件处理系统
  • 消息队列:使用list数据结构,消息发布者push数据,多个消息订阅者通过阻塞线程pop数据,以此提供简单的消息队列能力

之所以说简单,是因为Redis官方不提供可靠消费/发布的机制;需要自行实现故障转移、队列持久化、队列监控和流量控制等mq具备的功能

高级功能

慢查询

慢查询只记录Redis在处理存储的时间计数(图中的3步骤),并不包含网络通信时间和排队时间,所以客户端超时分析时要综合每个因素。

注意:

  • 慢查询保存数量参数不要设置过小,同时最好能定期持久化慢查询记录,方便历史问题排查。

pipline

pipline用于异步处理大量Redis请求。

注意:

  • 大量任务需要划分出多个pipline进行操作(否则,网络和等待时间都承受压力)。
  • pipline每次只能作用在一个Redis节点上。
  • M操作(mget,mset类似的指令)相比pipline,前者是原子操作,后者并不是。Redis会把一个携带很多命令的pipeline拆分成几个子命令。

发布订阅

Redis 发布订阅(pub/sub)是一种消息通信模式:发送者(pub)发送消息,订阅者(sub)接收消息。

注意:

  • Redis无法做消息堆积(新订阅者无法获取历史订阅消息)

bitmap

字符串big对应的二进制(ASCII码)如图所示, bitmap可以直接操控位。使用每个数位代表一个用户或者状态,相比int数据结构保存,节省了32倍的内存空间。

注意:

  • bitmap并不是适合所有场景去替换常规的数据存储
  • bit是string类型,最大只能存512MB
  • 注意setbit函数会自动补位,所以生产环境要注意setbit的偏移量,可能会造成较大的耗时

Hyperloglog

基于HyperLogLog算法,实现用极小空间完成独立数量的统计,类型本质是string。

注意:

  • 无法保证数据完全正确。官网说明错误率为0.81%
  • 无法取到单条数据

GEO

GEO(地理信息定位)是Redis3.2版本发布的功能,存储经纬度,计算两地距离,范围计算等,类型本质是zset。

Redis-sentinel

Redis哨兵是Redis2.8版本发布的功能,解决Redis集群的故障转移等痛点,支持高可用。

Redis-cluster

Redis集群是Redis3.0版本发布的功能,支持分布式

本文分享自微信公众号 - 全菜工程师小辉(mseddl),作者:全菜工程师小辉

原文出处及转载信息见文内详细说明,如有侵权,请联系 yunjia_community@tencent.com 删除。

原始发表时间:2019-05-26

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

我来说两句

0 条评论
登录 后参与评论

相关文章

  • Java秒杀系统优化的工程要点

    这篇博客是笔者学习慕课网若鱼老师的《Java秒杀系统方案优化 高性能高并发实战》课程的学习笔记。若鱼老师授课循循善诱,讲解由浅入深,欢迎大家支持。

    全菜工程师小辉
  • 一文搞懂单例模式

    单例模式(Singleton Pattern)是Java中最简单的设计模式之一,属于创建型模式。它提供了一种创建对象的最佳方式。

    全菜工程师小辉
  • Redis哨兵(Sentinel)模式快速入门

    当主服务器宕机后,需要手动把一台从服务器切换为主服务器,这就需要人工干预,费事费力,还会造成一段时间内服务不可用。 所以更多时候,我们优先考虑哨兵(sentin...

    全菜工程师小辉
  • 单线程Redis性能为何如此之高?

    实际项目开发中现在无法逃避的一个问题就是缓存问题,而缓存问题也是面试必问知识点之一,如果面试官好一点可能会简单的问你二八定律或者热数据和冷数据,但是如果问的深入...

    创译科技
  • 为什么我的Redis这么“慢”?

    Redis 作为内存数据库,拥有非常高的性能,单个实例的 QPS 能够达到 10W 左右。

    架构师修行之路
  • 这些 Redis 面试题虽然简单,但是面试常常问到

    Redis应该算面试中必问的一个知识点,但是发现很多童鞋并不熟悉这块,这篇就常见的一些问题做一些整理,有不对的地方欢迎留言指正!

    咸鱼学Python
  • Redis是什么?看这一篇就够了

    在Web应用发展的初期,那时关系型数据库受到了较为广泛的关注和应用,原因是因为那时候Web站点基本上访问和并发不高、交互也较少。而在后来,随着访问量的提升,使用...

    葡萄城控件
  • Spring Boot 如何快速集成 Redis 哨兵?

    前面的分享栈长介绍了如何使用 Spring Boot 快速集成 Redis,上一篇是单机版,也有粉丝留言说有没有 Redis Sentinel 的集成教程,这篇...

    Java技术栈
  • 学会这几个Redis技巧,让你的程序快如闪电

    实际上NewLife.Redis是一个完整的Redis协议功能的实现,但是Redis的核心功能并没有在这里面,而是在NewLife.Core里面。

    JAVA葵花宝典
  • Redis:基础学习资料 PDF 版下载

    随着Web 2.0的蓬勃发展,网站数据快速增长,人们对高性能读写的需求越来越多,关系数据库越来越不能适应相关的存储需求……

    田维常

扫码关注云+社区

领取腾讯云代金券