我是 DevOps 新手,所以如果FLUSHALL ASYNCRedis 线程安全,请指导我。当 Redis 使用不同的线程在后台删除键而不阻塞服务器时,它会影响我的服务器性能吗?当前使用:laravel PS 我想使用这个命令,这样我的服务器就不会变得没有响应,因为它变得更早(10秒,所有点击不断增加,导致CPU饥饿)
实际上FLUSHALL ASYNC是为每个数据库字典创建一组新的空哈希表(每个字典有两个哈希表)并安排旧哈希表进行延迟释放。
它是线程安全的,但是当数据库在后台清空时,它会增加 CPU 使用率,并且性能也会有所下降。
在一个空的 redis 服务器上,我加载了几个数据库,每个数据库都有 20M 个密钥:
>select 4
OK
[4]> debug populate 20000000 key 20
OK
(16.49s)
[4]> select 3
OK
[3]> debug populate 20000000 key 20
OK
(16.75s)
[3]> info memory
# Memory
used_memory:3739770656
used_memory_human:3.48G
Run Code Online (Sandbox Code Playgroud)
跑基准:
~$ redis-benchmark -c 5 -t set,lpush -q
SET: 30413.62 requests per second
LPUSH: 30553.01 requests per second
Run Code Online (Sandbox Code Playgroud)
运行后立即进行相同的基准测试FLUSHALL ASYNC(服务器在后台删除 40M 密钥):
~$ redis-benchmark -c 5 -t set,lpush -q
SET: 26288.12 requests per second
LPUSH: 25367.83 requests per second
Run Code Online (Sandbox Code Playgroud)
我看到大约 15% 的退化