在Python中使用Redis数据库

3 篇文章 0 订阅

一、Redis数据库的配置

以windows系统为例,下载Redis安装包解压后,配置redis.windows.conf 文件:

# The filename where to dump the DB
dbfilename dump.rdb

# The working directory.
#
# The DB will be written inside this directory, with the filename specified
# above using the 'dbfilename' configuration directive.
# 
# The Append Only File will also be created inside this directory.
# 
# Note that you must specify a directory here, not a file name.
dir .\stock-master\

可以配置数据库的名称和目录,还有其他参数。

建立一个批处理命令start-server.bat,每次启动服务可以指定conf配置。

#start-server.bat
redis-server  redis.windows.conf

二、Python调用redis

需先通过pip或easy_install安装redis库

1,写数据

python操作代码:

import redis

r = redis.Redis(host='127.0.0.1', port=6379)
print 'choose redis'

# 查数据库大小
print '\ndbsize:%s' %r.dbsize()

# 看连接
print 'ping %s' %r.ping()

for idx, row in df.iterrows():
    print idx, row
    mapStock =  {'code':idx, 'name':row['name']}
    # 写入hash表
    r.hmset('basic_info:"+idx, mapStock)

    #索引
    r.sadd(cm.INDEX_STOCK_BASIC, idx)

上述代码实现将获取的DataFrame格式的股票数据,先组装成dict,再写入redis的hash表中。
同时建立索引,将股票编码存入set集合中。

2,读数据

redis采用key-value键值存储,NoSql,查询没有sql那么方便。

#获取所有股票代码
codes = r.smembers(cm.INDEX_STOCK_BASIC)

#获取某只股票的指定日期范围内的K线
keys = r.lrange(cm.INDEX_STOCK_KLINE+code, 0, -1)
listSeries = []
for key in keys:
    if key > date_start and key < date_end:
        dict = r.hgetall(cm.PRE_STOCK_KLINE+code +':'+ key)
        #_se = pd.Series(dict, index=[cm.KEY_DATE, cm.KEY_OPEN, cm.KEY_HIGH, cm.KEY_CLOSE, cm.KEY_LOW, cm.KEY_VOLUME,cm.KEY_AMOUNT]) 
        _se = pd.Series(dict, index=[cm.KEY_DATE, cm.KEY_CLOSE]) 
        listSeries.append(_se)
df = pd.DataFrame(listSeries)

查询每天K线数据,速度非常快。
瓶颈在获取数据后重新组织装配数据,比较耗时,对于一只从2000年到今年的日K线数据,生成DataFrame大概需要2s,对于A股2000多只股票来说,这速度是不能容忍的。

对于即去即用型的数据,用redis存储效率是非常高的。如果取出的value数据,还需进一步加工,而且数据值很大,还是推荐用sql数据库。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值