温馨提示×

温馨提示×

您好,登录后才能下订单哦!

密码登录×
登录注册×
其他方式登录
点击 登录注册 即表示同意《亿速云用户服务条款》

Redis中怎么实现高可用分布式

发布时间:2021-07-30 13:58:55 来源:亿速云 阅读:107 作者:Leah 栏目:大数据

Redis中怎么实现高可用分布式,针对这个问题,这篇文章详细介绍了相对应的分析和解答,希望可以帮助更多想解决这个问题的小伙伴找到更简单易行的方法。

慢查询 

作用

将查询时间超过一定限制的语句记录到日志中,找到系统中瓶颈的命令

客户端请求的生命周期

Redis中怎么实现高可用分布式

两点说明:

1.慢查询发生在第三阶段,判断依据是执行时长

2.客户端超时不一定慢查询(四个步骤都可能),但慢查询是客户端超时的一个可能因素

两个配置

config get slowlog-max-len=128  先进先出队列   通常设置1000,固定长度、保存在内存中

Redis中怎么实现高可用分布式

config get slowlog-log-slower-than=10000  慢查询阈值,单位微秒,即10ms,通常设置1ms

     =0即记录所有命令(查看命令所用时间),<0即不记录任何命令

Redis中怎么实现高可用分布式

慢查询命令

slowlog get [n] 获取慢查询队列

slowlog len   获取慢查询队列长度  队列里面有多少慢查询

slowlog reset   清空慢查询队列

定期持久化慢查询

动态配置

config set slowlog-max-len 1000

config set slowlog-log-slower-than 1000

4.2pipeline 流水线

作用

提高客户端的效率,减少网络时间的消耗

Redis中怎么实现高可用分布式

流水线的作用

Redis中怎么实现高可用分布式

注意:

redis命令是微秒级别

pipeline每次条数要控制(网络)

pipeline-Jedis使用

maven依赖

Redis中怎么实现高可用分布式

不使用pipeline,1w hset -> 50s

Redis中怎么实现高可用分布式

使用pipeline,1w hset -> 0.7s

Redis中怎么实现高可用分布式

使用建议:

注意每次pipeline携带数据量

pipeline每次只能作用在一个redis节点上

M操作与pipeline区别

Redis中怎么实现高可用分布式

Redis中怎么实现高可用分布式

4.3 发布订阅

 角色:发布者 订阅者 频道 

订阅者可以订阅多频道,但无法接收到订阅前的消息

Redis中怎么实现高可用分布式

命令

subscribe channel [channel ...] 订阅一个或多个频道的信息

publish channel message 信息发送到指定的频道

unsubscribe [channel [channel ...]] 指退订给定频道

Redis不仅可作为缓存服务器,还可用作消息队列。它的列表类型天生支持用作消息队列

消息队列 要抢   比如红包  

发布订阅  都有   比如公告

Redis中怎么实现高可用分布式

4.4 Bitmap 位图

作用:减少内存的方案

Redis中怎么实现高可用分布式

Redis中怎么实现高可用分布式

命令

setbit key offset value  设置指定位置偏移量为0/1

Redis中怎么实现高可用分布式

Redis中怎么实现高可用分布式

getbit  key offset  获取指定位的值

bitcount key [start end]  获取指定范围值为1的个数,不指定则为全部

bitop op destkey key [key...] 做多个Bitmap的and(交集)、or(并集)、not(非)、xor(异或),并将结果保存在destkey

bitpos key targetBit [start] [end]  计算范围内,偏移量等于targetBit的,第一个位置,不指定范围则为全部

实战:独立用户统计

1亿用户,5千五独立,使用set和Bitmap区别

Redis中怎么实现高可用分布式

只有10万独立用户

Redis中怎么实现高可用分布式

使用经验

type=string,最大512MB

注意setbit时的偏移量,可能有较大耗时

位图不是绝对好

4.5 HyperLogLog 

作用

极小空间完成独立数据统计,用来做基数统计(不重复元素统计)的算法,HyperLogLog 的优点是,在输入元素的数量或者体积非常非常大时,计算基数所需的空间总是固定 的、并且是很小的,本质还是字符串

命令

pfadd key element [element ...]  添加指定元素到 HyperLogLog 中

pfcount key [key ...]  返回给定 HyperLogLog 的基数估算值

pfmerge destkey sourcekey [sourcekey ...]  将多个 HyperLogLog 合并为一个 HyperLogLog

使用经验

是否能容忍错误,基数估计就是在误差可接受的范围内,快速计算基数。

是否需要单挑数据

4.6 GEO 地理信息

作用

用于存储经纬度,计算两地距离,范围计算等,  其实zset类型实现

命令

geoadd key 经度longitude 纬度latitude 城市member  添加地理位置信息

Redis中怎么实现高可用分布式

geopos key member 获取地理位置信息

Redis中怎么实现高可用分布式

geodist key member1 member2[unit] 获取两地距离,单位m、km、mi(英里)、ft(尺)

Redis中怎么实现高可用分布式

Redis中怎么实现高可用分布式

 Redis中怎么实现高可用分布式

关于Redis中怎么实现高可用分布式问题的解答就分享到这里了,希望以上内容可以对大家有一定的帮助,如果你还有很多疑惑没有解开,可以关注亿速云行业资讯频道了解更多相关知识。

向AI问一下细节

免责声明:本站发布的内容(图片、视频和文字)以原创、转载和分享为主,文章观点不代表本网站立场,如果涉及侵权请联系站长邮箱:is@yisu.com进行举报,并提供相关证据,一经查实,将立刻删除涉嫌侵权内容。

AI