lua-cassandra
一个用于 Apache Cassandra 的纯 Lua 客户端库
$ opm get thibaultcha/lua-cassandra
lua-cassandra
![模块版本][badge-version-image] [![构建状态][badge-travis-image]][badge-travis-url] [![覆盖率状态][badge-coveralls-image]][badge-coveralls-url]
一个用于 Apache Cassandra (2.x/3.x) 的纯 Lua 客户端库,兼容 [OpenResty]。
特性
这个库提供两个模块:一个“单主机”模块,兼容 PUC Lua 5.1/5.2、LuaJIT 和 OpenResty,允许您的应用程序连接到指定的 Cassandra 节点;另一个“集群”模块,仅兼容 OpenResty,支持多节点 Cassandra 数据中心。
单主机
cassandra
模块无依赖
支持 Cassandra 2.x 和 3.x
简单、预备和批处理语句
分页(通过 Lua 迭代器进行手动和自动分页)
SSL 客户端到节点连接
客户端身份验证
利用 ngx_lua 中的非阻塞、可重用 cosocket API(在不支持的上下文中自动回退到 LuaSocket)
集群
resty.cassandra.cluster
模块cassandra
模块的所有功能集群拓扑发现
高级查询选项
可配置策略(负载均衡、重试、重新连接)
针对 OpenResty 的性能优化
用法
单主机模块(Lua 和 OpenResty)
local cassandra = require "cassandra"
local peer = assert(cassandra.new {
host = "127.0.0.1",
port = 9042,
keyspace = "my_keyspace"
})
peer:settimeout(1000)
assert(peer:connect())
assert(peer:execute("INSERT INTO users(id, name, age) VALUES(?, ?, ?)", {
cassandra.uuid("1144bada-852c-11e3-89fb-e0b9a54a6d11"),
"John O Reilly",
42
}))
local rows = assert(peer:execute "SELECT * FROM users")
local user = rows[1]
print(user.name) -- John O Reilly
print(user.age) -- 42
peer:close()
集群模块(仅限 OpenResty)
http {
# you do not need the following line if you are using luarocks
lua_package_path "/path/to/src/?.lua;/path/to/src/?/init.lua;;";
# all cluster informations will be stored here
lua_shared_dict cassandra 1m;
server {
...
location / {
content_by_lua_block {
local Cluster = require 'resty.cassandra.cluster'
-- For performance reasons, the cluster variable
-- should live in an upvalue at the main chunk level of your
-- modules to avoid creating it on every request.
-- see the 'intro' example in the online documentation.
local cluster, err = Cluster.new {
shm = 'cassandra', -- defined by the lua_shared_dict directive
contact_points = {'127.0.0.1', '127.0.0.2'},
keyspace = 'my_keyspace'
}
if not cluster then
ngx.log(ngx.ERR, 'could not create cluster: ', err)
return ngx.exit(500)
end
local rows, err = cluster:execute "SELECT * FROM users"
if not rows then
ngx.log(ngx.ERR, 'could not retrieve users: ', err)
return ngx.exit(500)
end
ngx.say('users: ', #rows)
}
}
}
}
安装
使用 [Luarocks]
$ luarocks install lua-cassandra
或通过 opm
$ opm get thibaultcha/lua-cassandra
或手动
在您拥有此模块的 lib/
目录的本地副本后,将其添加到您的 LUA_PATH
(或 OpenResty 的 lua_package_path
指令)中。
/path/to/lib/?.lua;/path/to/lib/?/init.lua;
注意:在 OpenResty 之外 使用或在 init_by_lua
上下文中使用时,此模块需要额外的依赖项
文档和示例
请参阅在线 [手册] 和详细的 [文档]。您还可以在其中找到 [示例],并浏览测试套件以获取深入的示例。
路线图
集群
新的负载均衡策略(令牌感知)
CQL
实现
decimal
数据类型v4:实现
date
和time
数据类型v4:实现
smallint
和tinyint
数据类型
开发
测试套件
单主机测试需要安装 [busted] 和 [ccm]。它们可以通过以下命令运行
$ make busted
集群模块测试除了 ccm 之外还需要 Test::Nginx::Socket。它们可以通过以下命令运行
$ make prove
工具
此模块使用各种工具进行文档和代码质量检查,您可以通过运行以下命令从 Luarocks 轻松安装这些工具
$ make dev
代码覆盖率使用来自 busted 测试的 luacov 进行分析
$ make coverage
代码使用 luacheck 进行代码风格检查
$ make lint
文档使用 ldoc 生成,可以通过以下命令生成
$ make doc
[Luarocks]: https://luarocks.org [OpenResty]: https://openresty.org.cn [ccm]: https://github.com/pcmanus/ccm [busted]: http://olivinelabs.com/busted
[文档]: http://thibaultcha.github.io/lua-cassandra/ [手册]: http://thibaultcha.github.io/lua-cassandra/manual/README.md.html [示例]: http://thibaultcha.github.io/lua-cassandra/examples/intro.lua.html
[badge-travis-url]: https://travis-ci.org/thibaultcha/lua-cassandra [badge-travis-image]: https://travis-ci.org/thibaultcha/lua-cassandra.svg?branch=master
[badge-coveralls-url]: https://coveralls.io/r/thibaultcha/lua-cassandra?branch=master [badge-coveralls-image]: https://coveralls.io/repos/thibaultcha/lua-cassandra/badge.svg?branch=master&style=flat
[badge-version-image]: https://img.shields.io/badge/version-1.5.2-blue.svg?style=flat
作者
Thibault Charbonnier (thibaultcha)
许可证
mit
版本
-
一个用于 Apache Cassandra 的纯 Lua 客户端库 2022-05-20 18:16:01
-
一个用于 Apache Cassandra 的纯 Lua 客户端库 2019-09-26 01:04:53
-
一个用于 Apache Cassandra 的纯 Lua 客户端库 2019-05-09 20:03:56
-
一个用于 Apache Cassandra 的纯 Lua 客户端库 2019-01-23 22:28:04
-
一个用于 Apache Cassandra 的纯 Lua 客户端库 2018-11-09 23:56:43
-
一个用于 Apache Cassandra 的纯 Lua 客户端库 2018-08-10 20:26:43
-
一个用于 Apache Cassandra 的纯 Lua 客户端库 2018-06-15 02:53:33
-
一个用于 Apache Cassandra 的纯 Lua 客户端库 2017-01-12 22:17:21