在Python中使用Redis数据库
来源:互联网 发布:蘑菇战争2 数据 编辑:程序博客网 时间:2024/05/22 15:05
一、Redis数据库的配置
以windows系统为例,下载Redis安装包解压后,配置redis.windows.conf 文件:
# The filename where to dump the DBdbfilename 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.batredis-server redis.windows.conf
二、Python调用redis
需先通过pip或easy_install安装redis库
1,写数据
python操作代码:
import redisr = 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
- 在Python中使用Redis数据库
- 在python中使用redis
- Laravel 中使用 Redis 数据库
- Python中redis的使用
- [Redis]Windows下Redis的安装、权限设置和在Python中使用
- redis-如何在工程中使用redis
- redis-如何在工程中使用redis
- redis-如何在工程中使用redis
- 【Redis】在 Java 中使用 redis
- 在windows中使用redis
- redis 在Java中使用
- 在java中使用redis
- 在PHP中使用Redis
- 在项目中使用redis
- 在Redis中使用Lua
- 在yii框架下使用redis数据库
- 在Ruby On Rails项目中使用Redis做缓存数据库
- Spring Boot中使用Redis数据库
- anroid在Mac下的反编译工具配置
- 解读Android之Service(1)基础知识
- HTTP头信息解读
- 【零基础学习iOS开发】【02-C语言】08-基本运算
- 【日常学习】【搜索/递归】codevs2802 二的幂次方题解
- 在Python中使用Redis数据库
- 常用工具设置
- UISlider 的使用
- UnityShader实例08:溶解消融(Dissolve)材质
- C++学习笔记 模板 包含编译模式 分别编译模式
- HDU 1049 Climbing Worm
- VS OpenMP基础使用
- caffe study(2) 关于forward和backward - backward
- HP某型号打印机设计不当导致远程未授权打印漏洞