最近项目中在用Redis的set做数据对账功能,在实际使用过程中发现速度很慢,比对完成需要数十分钟(最多10万条数据),于是花了点时间去看怎么优化Redis的性能,经过尝试之后发现比较有效的优化方式有以下几种。
尽量不要使用时间复杂度为O(n)的命令
比如smembers,sinter,sdiff
使用pipeline
使用pipeline,客户端通过一条tcp connection传送多条命令,服务端通过一条tcp connection接收到多条命令后,拆分成多条后像处理单条命令一样处理,以减少RTT(RoundTripTime)
选择合适的数据持久化方式
如果完全丢弃也没关系(如做cache),则可以完全关闭持久化。
目前redis默认使用RDB而不使用AOF