现状:
1、买了一台主从的阿里云Redis,内存就1GB。
2、查询了阿里云的帮助,没有找到性能相关的说明, 有的也是4GB版本的并发性能
3、提工单问客服 一个集合里有300万数据,单次查询性能大概怎么推算,客服让我自己验证(自己的产品性能如何都不知道,还卖货……)
解决方案:自己验证
1、构造300万数据, 写到文件1.txt,将数据写入到集合test500内
sadd test500 long_str10000001
sadd test500 long_str10000002
...
...
sadd test500 long_str13000000
2、在windows电脑上安装redis客户端,并通过命令管道快速导入这300万条命令(不带pipe,只能做到1小时导入30万条;带pipe就十几秒钟导入完成)
redis-cli -h xxx.redis.rds.aliyuncs.com -p 6379 -a password --pipe <1.txt
3、在python中调用查询某个value,响应时间为0.04~0.08秒 【包括了网络响应的时长】
# -*- coding: utf-8 -*- import time import redis class T: def __init__(self): pool = redis.ConnectionPool(host='r-xxx.redis.rds.aliyuncs.com', port=6379, password='xxx', db=1, decode_responses=True) self.r = redis.Redis(connection_pool=pool) self.value = 'long_str10000001' if __name__ == '__main__': t = T() time_begin = time.clock() qq = t.r.sismember('test500', 'long_str10031001') time_end = time.clock() time2 = time_end - time_begin if qq: print("数据查询成功,耗时", time2) else: print("数据查询失败,耗时", time2)
结论:Redis的某一个集合,放百万数据,查询性能毫无影响。
遗留问题:
该集合是300万数据,每条数据16个字节,数据大小是45M左右,而存放到了阿里云的Redis,占用了200MB空间,这个不符合我的诉求; 需要后期上其他方案,降低内存的占用
