Last active
August 29, 2015 14:26
-
-
Save Ivlyth/a895c1b55fcb6b3f1d06 to your computer and use it in GitHub Desktop.
test for operate on redis: set, mset, get, mget, hset, hmset, hget, hmget, hgetall
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
#!/usr/bin/env python | |
# -*- coding:utf-8 -*- | |
''' | |
Author : myth | |
Date : 15-7-28 | |
Email : belongmyth at 163.com | |
''' | |
from datetime import datetime | |
from datetime import timedelta | |
import redis | |
import random | |
import functools | |
def timer(func): | |
@functools.wraps(func) | |
def wrapper(*args, **kwargs): | |
title = kwargs.pop(u'title', func.func_name) | |
no_timer = kwargs.pop(u'no_timer', False) | |
if no_timer: | |
v = func(*args, **kwargs) | |
else: | |
s = datetime.now() | |
v = func(*args, **kwargs) | |
e = datetime.now() | |
print u'%s total use %s'%(title, e-s) | |
return v | |
return wrapper | |
@timer | |
def gen_datas(): | |
datas = [] | |
start_time = datetime.strptime(u'2015-06-01 00:00:00', u'%Y-%m-%d %H:%M:%S') | |
intervel = 300#s | |
for i in range(12000): | |
t = (start_time+timedelta(seconds=i*intervel)) | |
ts = t.strftime(u'%Y-%m-%d %H:%M:%S') | |
vs = u'%.3f'%(random.randint(5000000, 50000000) * random.random(), ) | |
datas.append((ts, vs)) | |
return datas | |
@timer | |
def save_datas_use_set(): | |
for ts, vs in DATAS: | |
c.set(ts, vs) | |
@timer | |
def save_datas_use_mset(): | |
ds = dict(DATAS) | |
c.mset(ds) | |
@timer | |
def save_datas_use_hset(): | |
for ts, vs in DATAS: | |
c.hset(CHANNEL_ID, ts, vs) | |
@timer | |
def save_datas_use_hmset(): | |
ds = dict(DATAS) | |
c.hmset(CHANNEL_ID, ds) | |
@timer | |
def get_datas_use_get(): | |
vdatas = [] | |
for ts in tss: | |
vs = c.get(ts) | |
vdatas.append((ts, vs)) | |
return vdatas | |
@timer | |
def get_datas_use_mget(): | |
vss = c.mget(tss) | |
return vss | |
@timer | |
def test_mget(times): | |
for i in range(times): | |
get_datas_use_mget(no_timer = True) | |
@timer | |
def get_datas_use_hget(): | |
vdatas = [] | |
for ts in tss: | |
vs = c.hget(CHANNEL_ID, ts) | |
vdatas.append((ts, vs)) | |
return vdatas | |
@timer | |
def test_hget(times): | |
for i in range(times): | |
get_datas_use_hget(no_timer=True) | |
@timer | |
def get_datas_use_hmget(): | |
vss = c.hmget(CHANNEL_ID, tss) | |
return vss | |
@timer | |
def test_hmget(times): | |
for i in range(times): | |
get_datas_use_hmget(no_timer = True) | |
@timer | |
def get_datas_use_hgetall(): | |
vss = c.hgetall(CHANNEL_ID) | |
return vss | |
@timer | |
def test_hgetall(times): | |
for i in range(times): | |
get_datas_use_hgetall(no_timer = True) | |
c = redis.StrictRedis() | |
CHANNEL_ID = u'channel_xxxxxxxxxxxxxxxxxxxxxxxx' | |
DATAS = gen_datas() | |
tss = [d[0] for d in DATAS] | |
times = 5 | |
save_datas_use_set() | |
save_datas_use_mset() | |
get_datas_use_get() | |
get_datas_use_mget() | |
test_mget(times, title=u'get_datas_use_mget %d times'%times) | |
save_datas_use_hset() | |
save_datas_use_hmset() | |
get_datas_use_hget() | |
get_datas_use_hmget() | |
get_datas_use_hgetall() | |
test_hget(times, title=u'get_datas_use_hget %d times'%times) | |
test_hmget(times, title=u'get_datas_use_hmget %d times'%times) | |
test_hgetall(times, title=u'get_datas_use_hgetall %d times'%times) | |
''' | |
gen_datas total use 0:00:00.109303 | |
save_datas_use_set total use 0:00:00.583253 | |
save_datas_use_mset total use 0:00:00.072797 | |
get_datas_use_get total use 0:00:00.540243 | |
get_datas_use_mget total use 0:00:00.072904 | |
get_datas_use_mget 5 times total use 0:00:00.370845 | |
save_datas_use_hset total use 0:00:00.596802 | |
save_datas_use_hmset total use 0:00:00.070581 | |
get_datas_use_hget total use 0:00:00.640865 | |
get_datas_use_hmget total use 0:00:00.069553 | |
get_datas_use_hgetall total use 0:00:00.099832 | |
get_datas_use_hget 5 times total use 0:00:02.704983 | |
get_datas_use_hmget 5 times total use 0:00:00.364204 | |
get_datas_use_hgetall 5 times total use 0:00:00.497511 | |
''' |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment