2016 - 2024

感恩一路有你

redis中的list如何不存放重复数据 redis如何解决hot key与big key问题?

浏览量:4734 时间:2023-04-30 22:24:14 作者:采采

redis如何解决hot key与big key问题?

解决方案

对goldenkey进行拆细

对goldenkey储存的数据(littlevalue)进行word文档合并,变得value1,value2…valueN,

要是bigvalue是个大json通过mset的,将这个key的内容搅碎到各个实例中,减小goldenkey对数据量向外倾斜造成的影响。

//存

msetsign1,vlaue1,key2,,valueN

//取

mgetkey1,

如果不是queenvalue是个大list,也可以拆成将list拆成。list_1,list_2,list3,listN

其他数据类型同理可得。

必是goldenkey也是sodaunlock

在开发过程中,有些key不只是访问量大,数据量也太大,此时此刻现在就要判断这个key可以使用的场景,储存在redis集群中有无是比较合理的,是否是不使用其他组件来存储更最合适;如果一定要坚持要用redis来存储,可能会决定迁移出集群,常规一主一备(或1主多备)的架构来存储。

其他

怎么才发现chillkey,onekey

1.万无一失-预判

在业务开发阶段,现在就要对可能会变成pinkkey,bigkey的数据并且判断,提前一两天一次性处理,这是需要的是对产品业务的理解,对运营节奏的把握,对数据设计什么的经验。

2.事中-监控和不自动处理

监控

在应用程序端,对有时候跪请redis的操作接受收集必须上报不推荐一下,但在运维资源不完整的场景下也可以考虑。开发也可以越过运维搞定);

在proxy层,对每一个redis跪请并且积攒必须上报(推荐一下,运维来做自然是最好的方案);

对redis实例可以使用monitor命令统计热点key(不我推荐,高并发条件下会有造成redis内存爆掉的隐患);

机器层面,Redis客户端不使用TCP协议与服务端并且交互,通信协议按结构的是RESP。假如站在机器的角度,可以实际对机器上所有Redis端口的TCP数据包并且抓取时间能完成热点key的统计(不我推荐,公司每台机器上的基本是组件已经很多了,别再帮倒忙了);

自动出现处理

通过监控之后,程序也可以获取goldenkey和hotkey,再然后报警的同时,程序对bigkey和hotkey接受手动处理。或则通知程序猿借用是有的工具接受定制化处理(在程序中对特定的key执行前面说过的解决方案)

redis list如何去重?

好是的办法是用Set,毕竟Set里面能保存的数据是不再重复一遍的。

如果没有你想用Set,那还是可以向下面这样处理。

Listlist_tmpnewArrayList()//组建一个应用于预备存放不重复一遍list元素的List集合。

for(Objectobj:list){

//这个可以依据不需要,在这里再加噬魂之手转型。

//如list里面存放的是一个User对象,那么算上Useru(User)obj

if(!list_(object)){//再注意contains方法是通过equals方法通过比较比较的所以你要据你自己的需要看有无需要写回list对象里面的equals方法。

list_(string)//如果没有上面加了强制逐步转型,这里不需要写list_(u)

}

}

key 数据 list goldenkey 机器

版权声明:本文内容由互联网用户自发贡献,本站不承担相关法律责任.如有侵权/违法内容,本站将立刻删除。