Redis的高级特性一览

更多内容,欢迎关注微信公众号:全菜工程师小辉。公众号回复关键词,领取免费学习资料。html

应用场景

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

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

消息队列

高级功能

慢查询

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

慢查询

注意:缓存

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

pipline

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

注意:网络

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

pipline

发布订阅

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

注意:并发

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

发布订阅

bitmap

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

注意:分布式

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

bitmap

Hyperloglog

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

注意:

  • 没法保证数据彻底正确。官网说明错误率为0.81%
  • 没法取到单条数据

GEO

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

Redis-sentinel

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

Redis-cluster

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

更多内容,欢迎关注微信公众号:全菜工程师小辉。公众号回复关键词,领取免费学习资料。

哎呀,若是个人名片丢了。微信搜索“全菜工程师小辉”,依然能够找到我

原文出处:https://www.cnblogs.com/mseddl/p/11456765.html

相关文章
相关标签/搜索