Skip to content

Instantly share code, notes, and snippets.

@Ivlyth
Last active August 29, 2015 14:26
Show Gist options
  • Save Ivlyth/a895c1b55fcb6b3f1d06 to your computer and use it in GitHub Desktop.
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
#!/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