【Redis】Redis Key长度与性能

Posted by 西维蜀黍 on 2020-05-07, Last Modified on 2021-09-21

Question

我们知道,在Redis中,get和set操作的time complexity均为O(1)。然而,当我们提供一个超长的key给Redis时,理论上,Redis需要花费更多内存来存储这个key。

因此,key的长度有没有可能影响Redis的性能呢?

Benchmark Script

在key为不同长度(包含的字符长度)时,Redis 的get和set操作的Performance(QPS)测试脚本

#!/bin/bash
echo "Test the length of key in Redis will influence performance..."

for (( c=1; c<=100000000000000; c=c*10 ))
do  
   echo "Current length: ${c}"
   redis-cli flushall
   redis-benchmark -n 1000000 -t set,get -r ${c} -q
done

Get 操作

Set 操作

可以发现,Redis 对Key的长度并不敏感,或者说,当key的长度小于100个字符时(这是几乎cover我们正常使用的所有情况),key的长度对 Redis的性能几乎几乎没有任何影响。

但是,值得一提的是,由于总内存空间是一定的,因此,每个key的平均长度越长,可以给value使用的内存空间就相对更少了。

Reference