Redis 关于大量1级key的测试
版权声明 本站原创文章 由 萌叔 发表 转载请注明 萌叔 | http://vearne.cc 起因:有文章提到Redis的1级key数量不应该超过100w 我十分怀疑这个结论是怎么得到的。我们知道在Redis中一个DB中的所有key维护在一个HashMap中,较多的key当然会导致,key的移动更加困难,当然由于HashMap的原因,在rehash时,可能消耗更多的时间;另外内存可能有少部分浪费。可是key的数量增大到100w以上,是否真的会带来其它问题吗 1. 测试验证 1.1 测试方法 使用string 类型,不断的插入新key,为了保证key仅可能不重复,且长度一致 使用自增变量 i 的md5值 每写入10w个key记录一下当前的内存值,已经插入这10w个key所消耗的时间 import json import redis import random import time import hashlib r = redis.Redis(host='localhost',port=6379,db=5) SIZE = 100000 fp = open('result.txt', 'w') counter = 0 for i in xrange(0, 100): t1 = time.time() for j in xrange(0, SIZE): counter += 1 print 'counter', counter m = hashlib.md5() m.update(str(i * SIZE + j)) key = m.hexdigest() r.set(key, 1) t2 = time.time() margin = t2 - t1 info = r.info() #print info ll = [] ll.append( str((i + 1) * SIZE) ) ll.append(str(margin)) ll.append(str(info['used_memory'])) fp.write(','.join(ll) + '\n') fp.flush() print (i + 1) * SIZE, margin, info['used_memory'] fp.close() 1.2 测试数据 测试总计写入1000w个key,耗时大概在半小时 图1 ...