事实上,Julia有多个操作Redis库。其中,我更倾向于下面这个:
https://github.com/jkaye2012/Redis.jl
前面我们已经知道,Redis 是KEY-VALUE结构。
如果在Redis客户端,我们可以(以下数据为虚拟)
set 600036.SH_1min:2014-10-8:0930:Open 10.08
set 600036.SH_1min:2014-10-8:0930:Close 10.20
set 600036.SH_1min:2014-10-8:0930:High 10.30
set 600036.SH_1min:2014-10-8:0930:Low 10.01
......
而如果利用Julia的脚本来替代其客户端,可以
tempdata =Dict{Any,Any}();
# 注意不能写Dict{ASCIIString,Float64}();hmset函数要求数据格式类型是DICT{ANY,ANY}()类型!
setindex!(tempdata,10.08,"600036.SH_1min:2014-10-8:0930:Open") # 0.4版本
setindex!(tempdata,10.20,"600036.SH_1min:2014-10-8:0930:Close")
setindex!(tempdata,10.30,"600036.SH_1min:2014-10-8:0930:High")
setindex!(tempdata,10.01,"600036.SH_1min:2014-10-8:0930:Low")
......
先把相关的DICT类型数据建立起来。
(1)存数据
using Redis;
conn = RedisConnection( host="127.0.0.1", port=6379, db=15)# 建立一个连接, 没有设置密码
我们假定在Redis数据库中,把一个代码某一天的数据存到一个文件中:
hmset(conn,“600036.SH_1min:2014-10-8”,tempdata)#把相关的数据(Dict类型)放入表内。
特别注意,如果tempdata =Dict("a"=>"b") 或 tempdata =Dict(1=>2) (大家可以验证是一下是什么类型?)
这类不是Dict{Any,Any}类型,会报错!(为什么?)
(2)取数据
historydata = hgetall(conn,“600036.SH_1min:2014-10-8”) # 原来的DICT集合。
其中,返回值historydata 是DICT{AbstractString,AbstractString} 类型。
注意,返回值不是Dict{Any,Any}类型!
(3)执行持久化命令
在客户端,可以用SAVE或BGSAVE(后台线程持久化).
在 Redis库中,Julia可以通过如下形式实现。
总之,Julia脚本实现对Redis的操作,也很方便。