hash vs json, python 对象存储到 redis 的选择

一直懒得写博文,不知道这次能坚持多久,闲话不提,进入正文。

测试需要测试综合能力,也就是create, get, update, delete 的能力,于是写了两个方法,分别用json和hash进行上述四种操作:

#!/usr/bin/python
#coding=utf-8

import redis

import ujson as json


db = redis.StrictRedis(host='localhost', port=6379, db=0)

mapper = {}

for letter in "abcdefghijklmnopqrstuvwxyz":
    mapper[letter] = ', '.join([letter] * 50)


def test_json():
    # create
    db.set('mapper', json.dumps(mapper))
    # get
    json.loads(db.get('mapper'))
    # update( updating by json, should get first.)
    x = json.loads(db.get('mapper'))
    x['a'] = 'a'
    db.set('mapper', json.dumps(mapper))
    # delete
    db.delete('mapper')


def test_hash():
    # create
    db.hmset('mapper', mapper)
    # get
    db.hgetall('mapper')
    # update
    db.hset('mapper', 'a', 'a')
    # delete
    db.delete('mapper')

import timeit

db.flushdb()

print "json", timeit.timeit("test_json()", setup="from __main__ import test_json", number=100000)

db.flushdb()

print "hash", timeit.timeit("test_hash()", setup="from __main__ import test_hash", number=100000)

测试结果:

json 41.7783219814

hash 97.2103219032

[Finished in 139.1s]

是不是很惊呀?json的性能是hash的一倍!

转载于:https://my.oschina.net/jander/blog/266628

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值