Cassandra的PHP客户端的另一个选择---SimpleCassie
来源:互联网 发布:网络 网路 编辑:程序博客网 时间:2024/05/13 19:45
接上例:http://blog.csdn.net/kunshan_shenbin/article/details/7193289
官方主页:http://code.google.com/p/simpletools-php/
API介绍:http://code.google.com/p/simpletools-php/wiki/SimpleCassie
和上例一样,依然尝试将SimpleCassie继承到CodeIgniter中运行。
1. 下载源码:http://code.google.com/p/simpletools-php/downloads/list,解压后把SimpleCassie.php拷贝至application/libraries下。
2. 修改autoload.php如下:
$autoload['libraries'] = array('SimpleCassie', 'smarty');
注意,如果和上例是同一个工程,则不用让SimpleCassie和上例中的db同时自动加载,因为他们都是cassandra的client类库,很多的class同名的。
3. 为了能够被加载进codeigniter,SimpleCassie的构造函数需要修改一下:
public function __construct() {}// public function __construct($host,$port=9160,$timeout=null)// {// $this->__nodes[$host] = array($port,$timeout);// }由于对CodeIgniter不是很熟,这一步是不是必须目前不敢确定。
4. 在controller里可以直接使用SimpleCassie类库了:
$cassie = $this->simplecassie;$cassie->addNode("192.168.11.124", 9160);$cassie->addNode("192.168.11.185", 9160);if(!$cassie->isConnected())throw new Exception('Couldn\'t connect to server');$activeNode = $cassie->getActiveNode();$cassie->keyspace('LiftDNA_DB');$cassie->keyspace('MyApp')->cf('LiftDNA_Table')->key('shenyi')->column('age')->set('27');$cassie->cf('LiftDNA_Table')->key('yangye')->column('age')->set('28');//$cassie->cf('LiftDNA_Table')->key('yangye')->column('name')->batch('28');//$cassie->cf('LiftDNA_Table')->key('yangye')->column('age')->batch('29');//$cassie->batchCommit();$age = $cassie->cf('LiftDNA_Table')->key('shenyi')->column('age')->value();$this->load->view('cassandra', $age);
更多代码参考:
<?php require_once('SimpleCassie.php'); $cassie = new SimpleCassie(HOST, PORT, TIMEOUT_MS); //failover support added since SimpleCassie 0.7.1.2 by: $cassie->addNode(HOST2, PORT2, TIMEOUT_MS); $cassie->addNode(HOST3, PORT3, TIMEOUT_MS); if(!$cassie->isConnected()) throw new Exception('Couldn\'t connect to server'); //checking active node - since SimpleCassie 0.7.1.2 $activeNode = $cassie->getActiveNode(); /* * setting working keyspace * @return - (false) on failure true on success * working keyspace can be change at any point by running ->keyspace() method */ $cassie->keyspace('Keyspace1'); /* * setting new column (and key if not exist) * @return - (false) on failure */ $cassie->keyspace('MyApp')->cf('Users')->key('user1')->column('name')->set('Marcin'); $cassie->cf('Users')->key('user1')->column('surname')->set('Rosinski'); /* * setting in batches * @return - number of batches or false on failure */ $cassie->cf('Users')->key('user1')->column('name')->batch('Marcin'); $cassie->cf('Users')->key('user1')->column('surname')->batch('Rosinski'); //batching deletion $cassie->cf('Users')->key('user1')->column('columntodrop')->batch(); //commiting all above batches $cassie->batchCommit(); /* * delete column or row/key * @return - (false) on failure */ //deleting column $cassie->cf('Users')->key('user1')->column('name')->remove(); //deleting row $cassie->cf('Users')->key('user1')->remove(); /* * count number of columns in row/key * @return - (int) on succes, false on failure */ $count = $cassie->cf('Users')->key('user2')->count(); /* * count number of columns with predicate: from column to column * @return - (int) on succes, false on failure */ $count = $cassie->cf('Users')->key('user2')->column('fromColumn','toColumn')->count();/* * count number of columns with predicate: from column to column for multiple keys * @return - (int) on succes, false on failure */ $count = $cassie->cf('Users')->key('user2','user3')->column('fromColumn','toColumn')->count(); /* * getting single column * @return - object on succes, null on failure */ $name = $cassie->keyspace('Keyspace1')->cf('Standard1')->key('user1')->column('name')->get(); /* * getting multiple columns * @return - array of objects on success, null on failure */ $user = $cassie->cf('Standard1')->key('user1')->column('name','surname')->get();/* * getting multiple column values * @return - array of objects on success, null on failure */ $user = $cassie->cf('Standard1')->key('user1')->column('name','surname')->value(); /* * getting single column from multiple rows/keys * @return - array of objects on succes, null on failure */ $users = $cassie->cf('Standard1')->key('user1','user2')->column('name')->get(); /* * getting multiple columns from multiple rows/keys * @return - array of objects on succes, null on failure */ $users = $cassie->cf('Standard1')->key('user1','user2')->column('name','username')->get(); /* * getting slice of columns from single row/key * @return - array of objects on succes, null on failure */ $limit = 10; $reversed = false; $from_name = 'Puma'; $to_name = 'Tiger'; $friends = $cassie->cf('Standard1')->key('user1friends')->column($from_name,$to_name)->slice($limit,$reversed); /* * getting slice of columns from single supercolumn row * @return - array of objects on succes, null on failure */ $limit = 10; $reversed = false; $friends = $cassie->cf('Standard1')->key('user1')->supercolumn('friends')->column($from_name,$to_name)->slice($limit,$reversed); //resetting supercolumn for future use - deprecated since SimpleCassie 0.7.1.3 - this process has been automated $cassie->key('user1')->supercolumn(null); /* * getting slice of columns from multiple rows/keys * @return - array of objects on succes, null on failure */ $limit = 10; $reversed = true; $friends = $cassie->cf('Standard1')->key('user1friends','user2friends')->column($from_name,$to_name)->slice($limit,$reversed); /* * increment column value * @return - (int) new value on succes, false on failure */ $new_value = $cassie->cf('Standard1')->key('user1')->column('friends')->increment(); /* * decrement column value * @return - (int) new value on succes, false on failure */ $new_value = $cassie->cf('Standard1')->key('user1')->column('friends')->decrement(); /* * Getting active keyspace */ echo $cassie->keyspace(); /* * Range support - since SimpleCassie 0.7.1.2 */ $range = $cassie->cf('MyColumnFamily')->key('fromKey','toKey')->column('fromColumn','toColumn')->range($keyCount,$columnCount); ?>
UUID Usage Examples:
<?php //setting new uuid column $cassie->keyspace('MyApp')->cf('BlogPosts')->key('post')->column($cassie->uuid())->set('I like raw food.'); //getting latest added post (assuming TimeUUIDType) $post = $cassie->cf('BlogPosts')->key('post')->slice(1); //getting post column uuid name in canonical form $uuid = $cassie->uuid($post->column->name); $string_form = (string) $uuid; //canonical form $binary_form = $uuid->uuid; ?>
- Cassandra的PHP客户端的另一个选择---SimpleCassie
- Cassandra的Java客户端的另一个选择---Pelops
- Cassandra的PHP客户端的更多选择---Cassandra-PHP-Client-Library
- Cassandra客户端连接的说明---PHP版
- Cassandra客户端连接的说明---Java版
- 关于PHP客户端 memcache 和 memcahed 的选择
- Hector——一个高层的Cassandra Java客户端
- 客户端对象模型然而,另一个有趣的
- 除了 SSH 之外的另一个选择 -- Nutz
- php 引入另一个php页面的方式
- PHP解析Cassandra的map类型出现乱码,解决方案
- 企业应用程序客户端的选择
- 智能客户端,未来的选择?
- arcIMS 客户端 连接器的选择
- cassandra入门二- Cassandra的配置
- Redis的PHP客户端
- Redis的PHP客户端
- 选择php的理由
- 关于Socket程序中的ntohs, ntohl, htons,htonl
- web服务器权限问题
- 有关windows的web服务器的问题
- 我的第一个OpenGL 程序
- Windows系统中常用密码的破解方法
- Cassandra的PHP客户端的另一个选择---SimpleCassie
- 使用jpa模板
- windows系统各进程详解
- JAVA简单匿名内部类写法
- nslookup命令详解
- [转]Xcode 快捷键全集
- windows 2003开机不需按CTRL+ALT+DEL和自动登陆
- Linux下安装USB转串口驱动(PL2303)
- Windows蓝屏案例分析