ytake/laravel-couchbase
Composer 安装命令:
composer require ytake/laravel-couchbase
包简介
Couchbase providers for Laravel
README 文档
README
for Laravel 5.1.*(higher)
cache, session, database, queue extension package required ext-couchbase
Notice
Supported Auto-Discovery, Design Document, Cache Lock (Laravel5.5)
| Laravel version | Laravel-Couchbase version | ext-couchbase |
|---|---|---|
| Laravel 5.6 | ^1.1 | >=2.3.2 |
| Laravel 5.5 | ^1.0 | >=2.3.2 |
| Laravel 5.4 | ^0.7 | ^2.2.2 |
| Laravel 5.3 | ^0.6 | ^2.2.2 |
| Laravel 5.2 | ^0.5 | ^2.2.2 |
| Laravel 5.1 | ^0.4 | ^2.2.2 |
Deprecated
not recommended couchbase-memcached driver couchbase session driver
install
$ composer require ytake/laravel-couchbase
or your config/app.php
'providers' => [ // added service provider \Ytake\LaravelCouchbase\CouchbaseServiceProvider::class, \Ytake\LaravelCouchbase\ConsoleServiceProvider::class, ]
usage
database extension
add database driver(config/database.php)
'couchbase' => [ 'driver' => 'couchbase', 'host' => 'couchbase://127.0.0.1', 'user' => 'userName', // optional administrator 'password' => 'password', // optional administrator // optional configuration / management operations against a bucket. 'administrator' => [ 'user' => 'Administrator', 'password' => 'password', ], ],
case cluster
'couchbase' => [ 'driver' => 'couchbase', 'host' => 'couchbase://127.0.0.1,192.168.1.2', 'user' => 'userName', // optional administrator 'password' => 'password', // optional administrator ],
choose bucket table() method
or
basic usage bucket() method
N1QL supported(upsert enabled)
see http://developer.couchbase.com/documentation/server/4.1/n1ql/n1ql-language-reference/index.html
SELECT
// service container access $this->app['db']->connection('couchbase') ->table('testing')->where('whereKey', 'value')->first(); // use DB facades \DB::connection('couchbase') ->table('testing')->where('whereKey', 'value')->get();
INSERT / UPSERT
$value = [ 'click' => 'to edit', 'content' => 'testing' ]; $key = 'insert:and:delete'; $result = \DB::connection('couchbase') ->table('testing')->key($key)->insert($value); \DB::connection('couchbase') ->table('testing')->key($key)->upsert([ 'click' => 'to edit', 'content' => 'testing for upsert', ]);
DELETE / UPDATE
\DB::connection('couchbase') ->table('testing')->key($key)->where('clicking', 'to edit')->delete(); \DB::connection('couchbase') ->table('testing')->key($key) ->where('click', 'to edit')->update( ['click' => 'testing edit'] );
execute queries
example)
"delete from testing USE KEYS "delete" RETURNING *" "update testing USE KEYS "insert" set click = ? where click = ? RETURNING *"
returning
default *
\DB::connection('couchbase') ->table('testing') ->where('id', 1) ->offset($from)->limit($perPage) ->orderBy('created_at', $sort) ->returning(['id', 'name'])->get();
View Query
$view = \DB::view("testing"); $result = $view->execute($view->from("dev_testing", "testing"));
cache extension
for bucket type couchbase
config/cache.php
'couchbase' => [ 'driver' => 'couchbase', 'bucket' => 'session' ],
for bucket type memcached
'couchbase-memcached' => [ 'driver' => 'couchbase-memcached', 'servers' => [ [ 'host' => '127.0.0.1', 'port' => 11255, 'weight' => 100, 'bucket' => 'memcached-bucket-name', 'option' => [ // curl option ], ], ], ],
not supported
couchbase bucket, use bucket password
config/cache.php
'couchbase' => [ 'driver' => 'couchbase', 'bucket' => 'session', 'bucket_password' => 'your bucket password' ],
session extension
.env etc..
specify couchbase driver
consistency
default :CouchbaseN1qlQuery::NOT_BOUNDED
$this->app['db']->connection('couchbase') ->consistency(\CouchbaseN1qlQuery::REQUEST_PLUS) ->table('testing') ->where('id', 1) ->returning(['id', 'name'])->get();
callable consistency
$this->app['db']->connection('couchbase') ->callableConsistency(\CouchbaseN1qlQuery::REQUEST_PLUS, function ($con) { return $con->table('testing')->where('id', 1)->returning(['id', 'name'])->get(); });
Event
for N1QL
| events | description |
|---|---|
| \Ytake\LaravelCouchbase\Events\QueryPrepared | get n1ql query |
| \Ytake\LaravelCouchbase\Events\ResultReturning | get all property from returned result |
| \Ytake\LaravelCouchbase\Events\ViewQuerying | for view query (request uri) |
Schema / Migrations
The database driver also has (limited) schema builder support.
easily manipulate indexes(primary and secondary)
use Ytake\LaravelCouchbase\Schema\Blueprint as CouchbaseBlueprint; \Schema::create('samples', function (CouchbaseBlueprint $table) { $table->primaryIndex(); // primary index $table->index(['message', 'identifier'], 'sample_secondary_index'); // secondary index // dropped $table->dropIndex('sample_secondary_index'); $table->dropPrimary(); });
Supported operations:
- create and drop
- index and dropIndex (primary index and secondary index)
Artisan
for couchbase manipulate indexes
| commands | description |
|---|---|
| couchbase:create-index | Create a secondary index for the current bucket. |
| couchbase:create-primary-index | Create a primary N1QL index for the current bucket. |
| couchbase:drop-index | Drop the given secondary index associated with the current bucket. |
| couchbase:drop-primary-index | Drop the given primary index associated with the current bucket. |
| couchbase:indexes | List all N1QL indexes that are registered for the current bucket. |
| couchbase:create-queue-index | Create primary index, secondary indexes for the queue jobs couchbase bucket. |
| couchbase:create-design | Inserts design document and fails if it is exist already. for MapReduce views |
-h more information.
create design
config/couchbase.php
return [ 'design' => [ 'Your Design Document Name' => [ 'views' => [ 'Your View Name' => [ 'map' => file_get_contents(__DIR__ . '/../resources/sample.ddoc'), ], ], ], ] ];
Queue
Change the the driver in config/queue.php:
'connections' => [ 'couchbase' => [ 'driver' => 'couchbase', 'bucket' => 'jobs', 'queue' => 'default', 'retry_after' => 90, ], ],
example
php artisan queue:work couchbase --queue=send_email
hacking
To run tests there are should be following buckets created on local Couchbase cluster:
$cluster = new CouchbaseCluster('couchbase://127.0.0.1'); $clusterManager = $cluster->manager('Administrator', 'password'); $clusterManager->createBucket('testing', ['bucketType' => 'couchbase', 'saslPassword' => '', 'flushEnabled' => true]); $clusterManager->createBucket('memcache-couch', ['bucketType' => 'memcached', 'saslPassword' => '', 'flushEnabled' => true]); sleep(5); $bucketManager = $cluster->openBucket('testing')->manager(); $bucketManager->createN1qlPrimaryIndex();
Also tests are expecting regular Memcached daemon listening on port 11255.
soon
- authintication driver
- Eloquent support
Couchbase Document
REST API / Creating and Editing Buckets
couchbase-cli / user-manage
Authentication
Authorization API
ytake/laravel-couchbase 适用场景与选型建议
ytake/laravel-couchbase 是一款 基于 PHP 开发的 Composer 扩展包,目前已累计 52.34k 次下载、GitHub Stars 达 30, 最近一次更新时间为 2015 年 11 月 01 日, 在 PHP 生态内属于活跃度较高的组件。
它主要适用于以下技术方向: 「database」 「queue」 「cache」 「session」 「laravel」 「couchbase」 等业务场景。在实际项目中,围绕这些方向常见需要落地的问题包括:接口对接、性能调优、并发安全、与既有框架(Laravel / ThinkPHP / Yii / Webman 等)的兼容适配,以及生产环境的日志埋点与稳定性保障。
我们在过去多个企业项目中使用过 ytake/laravel-couchbase 或与其功能相近的方案,如果你在选型或落地过程中遇到问题,例如 版本兼容、二次改造、私有化封装、与内部系统对接、生产 BUG 排查,欢迎联系我们协助评估。
基于 ytake/laravel-couchbase 在你已有业务上做功能扩展、字段裁剪、UI 适配、与内部账号 / 权限 / 日志系统的深度对接。
线上偶发问题、内存泄漏、慢查询、并发异常等排查修复;针对高流量场景做缓存、队列、索引层面的调优。
承接完整的项目从需求 → 设计 → 开发 → 上线 → 长期运维;也可按月提供技术保姆服务。
与 ytake/laravel-couchbase 相关的其它包
同方向 / 同关键字的高下载量 PHP Composer 包推荐,方便对比选型:
Dibi is Database Abstraction Library for PHP
repository php library
Store your language lines in the database, yaml or other sources
PHP AMQP Binding Library
A Laravel package to monitor queue jobs.
A package for automatically encrypting and decrypting Eloquent attributes in Laravel 5.5+, based on configuration settings.
统计信息
- 总下载量: 52.34k
- 月度下载量: 0
- 日度下载量: 0
- 收藏数: 30
- 点击次数: 23
- 依赖项目数: 0
- 推荐数: 0
其他信息
- 授权协议: MIT
- 更新时间: 2015-11-01