Redis内存碎片清理

当Redis中清理了大量的Key之后原先Redis申请的内存(used_memory_rss)将继续持有而不会释放,此时查看内存信息将会看到存在大量的内存碎片。那么,Redis的内存碎片可以清理么,该如何清理呢?

翻看了Redis的相关资料发现,Redis4版本之后开始支持内存碎片的清理,于是进行了一次测试,内容如下:

1.  搭建Redis

搭建一个Redis,版本为4.0.14.搭建步骤参考历史博文或微信公众号,步骤相对简单,没有太多幺蛾子,很快便可以搭建成功。

2.  插入一堆Key,使其内存占用很大

可以批量写一个循环,插入大量key。

3.  删除90%以上的key

循环删除key或在创建key时设置过期时间,待key删除或过期之后,可以查看内存的情况。

127.0.0.1:6379> info memory # Memory used_memory:137040696 used_memory_human:130.69M used_memory_rss:11705876480 used_memory_rss_human:10.90G used_memory_peak:12091169848 used_memory_peak_human:11.26G used_memory_peak_perc:1.13% used_memory_overhead:3473184 used_memory_startup:786648 used_memory_dataset:133567512 used_memory_dataset_perc:98.03% total_system_memory:16862617600 total_system_memory_human:15.70G used_memory_lua:37888 used_memory_lua_human:37.00K maxmemory:12000000000 maxmemory_human:11.18G maxmemory_policy:noeviction mem_fragmentation_ratio:85.42 mem_allocator:jemalloc-4.0.3 active_defrag_running:0 lazyfree_pending_objects:0

内容版权声明:除非注明,否则皆为本站原创文章。

转载注明出处:https://www.heiqu.com/zzdjwy.html