频道栏目
首页 > 数据库 > 其他综合 > 正文
python读取redis三种方式效率对比
2018-09-30 09:49:56           
收藏   我要投稿

横轴是读取redis的key的数量,纵轴是时间。绿色是pipline方式,蓝色是单次读取,红色是mget方式读取。此图在相同环境下运行时间对比,包含连接redis和读取时间,有比较意义。

{0: {1000: 0.05, 20000: 0.41, 40000: 0.74}, 1: {1000: 0.23, 20000: 3.93, 40000: 7.73}, 2: {1000: 0.03, 20000: 0.18, 40000: 0.31}}

0 是pipline方式;1是单次get方式;2是mget方式

1000/20000/40000是读取数量,对应value是消耗时间。

\

def getCourseShowAll(redis_0, courseIdDict, num):
    pipe = redis_0.pipeline()
    cnt = 0
    for course_id, courseInfo in courseIdDict.items():
        if cnt == num:
            break
        cnt += 1
        pipe.get("course_show_"+str(course_id))
    result = pipe.execute()
    cntResult = len(result)
    return result, cnt, cntResult

def getCourseMGet(redis_0, courseIdDict,num):
    cnt = 0
    listId = []
    for course_id, courseInfo in courseIdDict.items():
        if cnt == num:
            break
        listId.append("course_show_"+str(course_id))
        cnt += 1
    result = redis_0.mget(listId)
    return result, cnt

if __name__ == "__main__":

    start_time = time.clock()
    redis_0 = redis.Redis(host=OaDataSystem.Core.redisAddress['host'],port=OaDataSystem.Core.redisAddress['port'],db=0)
    if sig == 0:
        print sig
        result, allCnt, cntResult = getCourseShowAll(redis_0, courseIdDict,num)
     #   print result, allCnt
    elif sig == 1:
        print sig
        i = 0
        for course_id, courseInfo in courseIdDict.items():
            if i == num:
                break
            package_name = getCourseShow(redis_0, course_id)
            i += 1
        allCnt = i
    elif sig == 2:
        print sig
        result, allCnt = getCourseMGet(redis_0, courseIdDict, num)
      #  print result, allCnt
    end_time = time.clock()
    print 'using time: '+ str( end_time - start_time),  allCnt
点击复制链接 与好友分享!回本站首页
上一篇:Windows安装Redis服务
下一篇:windows,cmd登录MySQL
相关文章
图文推荐
点击排行

关于我们 | 联系我们 | 广告服务 | 投资合作 | 版权申明 | 在线帮助 | 网站地图 | 作品发布 | Vip技术培训 | 举报中心

版权所有: 红黑联盟--致力于做实用的IT技术学习网站