当前位置:   article > 正文

Cassandra的PHP客户端的另一个选择---SimpleCassie_cassie7simple

cassie7simple

接上例: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的构造函数需要修改一下:

  1. public function __construct() {}
  2. // public function __construct($host,$port=9160,$timeout=null)
  3. // {
  4. // $this->__nodes[$host] = array($port,$timeout);
  5. // }
由于对CodeIgniter不是很熟,这一步是不是必须目前不敢确定。

4. 在controller里可以直接使用SimpleCassie类库了:

  1. $cassie = $this->simplecassie;
  2. $cassie->addNode("192.168.11.124", 9160);
  3. $cassie->addNode("192.168.11.185", 9160);
  4. if(!$cassie->isConnected())
  5. throw new Exception('Couldn\'t connect to server');
  6. $activeNode = $cassie->getActiveNode();
  7. $cassie->keyspace('LiftDNA_DB');
  8. $cassie->keyspace('MyApp')->cf('LiftDNA_Table')->key('shenyi')->column('age')->set('27');
  9. $cassie->cf('LiftDNA_Table')->key('yangye')->column('age')->set('28');
  10. //$cassie->cf('LiftDNA_Table')->key('yangye')->column('name')->batch('28');
  11. //$cassie->cf('LiftDNA_Table')->key('yangye')->column('age')->batch('29');
  12. //$cassie->batchCommit();
  13. $age = $cassie->cf('LiftDNA_Table')->key('shenyi')->column('age')->value();
  14. $this->load->view('cassandra', $age);

更多代码参考:

  1. <?php
  2. require_once('SimpleCassie.php');
  3. $cassie = new SimpleCassie(HOST, PORT, TIMEOUT_MS);
  4. //failover support added since SimpleCassie 0.7.1.2 by:
  5. $cassie->addNode(HOST2, PORT2, TIMEOUT_MS);
  6. $cassie->addNode(HOST3, PORT3, TIMEOUT_MS);
  7. if(!$cassie->isConnected())
  8. throw new Exception('Couldn\'t connect to server');
  9. //checking active node - since SimpleCassie 0.7.1.2
  10. $activeNode = $cassie->getActiveNode();
  11. /*
  12. * setting working keyspace
  13. * @return - (false) on failure true on success
  14. * working keyspace can be change at any point by running ->keyspace() method
  15. */
  16. $cassie->keyspace('Keyspace1');
  17. /*
  18. * setting new column (and key if not exist)
  19. * @return - (false) on failure
  20. */
  21. $cassie->keyspace('MyApp')->cf('Users')->key('user1')->column('name')->set('Marcin');
  22. $cassie->cf('Users')->key('user1')->column('surname')->set('Rosinski');
  23. /*
  24. * setting in batches
  25. * @return - number of batches or false on failure
  26. */
  27. $cassie->cf('Users')->key('user1')->column('name')->batch('Marcin');
  28. $cassie->cf('Users')->key('user1')->column('surname')->batch('Rosinski');
  29. //batching deletion
  30. $cassie->cf('Users')->key('user1')->column('columntodrop')->batch();
  31. //commiting all above batches
  32. $cassie->batchCommit();
  33. /*
  34. * delete column or row/key
  35. * @return - (false) on failure
  36. */
  37. //deleting column
  38. $cassie->cf('Users')->key('user1')->column('name')->remove();
  39. //deleting row
  40. $cassie->cf('Users')->key('user1')->remove();
  41. /*
  42. * count number of columns in row/key
  43. * @return - (int) on succes, false on failure
  44. */
  45. $count = $cassie->cf('Users')->key('user2')->count();
  46. /*
  47. * count number of columns with predicate: from column to column
  48. * @return - (int) on succes, false on failure
  49. */
  50. $count = $cassie->cf('Users')->key('user2')->column('fromColumn','toColumn')->count();
  51. /*
  52. * count number of columns with predicate: from column to column for multiple keys
  53. * @return - (int) on succes, false on failure
  54. */
  55. $count = $cassie->cf('Users')->key('user2','user3')->column('fromColumn','toColumn')->count();
  56. /*
  57. * getting single column
  58. * @return - object on succes, null on failure
  59. */
  60. $name = $cassie->keyspace('Keyspace1')->cf('Standard1')->key('user1')->column('name')->get();
  61. /*
  62. * getting multiple columns
  63. * @return - array of objects on success, null on failure
  64. */
  65. $user = $cassie->cf('Standard1')->key('user1')->column('name','surname')->get();
  66. /*
  67. * getting multiple column values
  68. * @return - array of objects on success, null on failure
  69. */
  70. $user = $cassie->cf('Standard1')->key('user1')->column('name','surname')->value();
  71. /*
  72. * getting single column from multiple rows/keys
  73. * @return - array of objects on succes, null on failure
  74. */
  75. $users = $cassie->cf('Standard1')->key('user1','user2')->column('name')->get();
  76. /*
  77. * getting multiple columns from multiple rows/keys
  78. * @return - array of objects on succes, null on failure
  79. */
  80. $users = $cassie->cf('Standard1')->key('user1','user2')->column('name','username')->get();
  81. /*
  82. * getting slice of columns from single row/key
  83. * @return - array of objects on succes, null on failure
  84. */
  85. $limit = 10;
  86. $reversed = false;
  87. $from_name = 'Puma';
  88. $to_name = 'Tiger';
  89. $friends = $cassie->cf('Standard1')->key('user1friends')->column($from_name,$to_name)->slice($limit,$reversed);
  90. /*
  91. * getting slice of columns from single supercolumn row
  92. * @return - array of objects on succes, null on failure
  93. */
  94. $limit = 10;
  95. $reversed = false;
  96. $friends = $cassie->cf('Standard1')->key('user1')->supercolumn('friends')->column($from_name,$to_name)->slice($limit,$reversed);
  97. //resetting supercolumn for future use - deprecated since SimpleCassie 0.7.1.3 - this process has been automated
  98. $cassie->key('user1')->supercolumn(null);
  99. /*
  100. * getting slice of columns from multiple rows/keys
  101. * @return - array of objects on succes, null on failure
  102. */
  103. $limit = 10;
  104. $reversed = true;
  105. $friends = $cassie->cf('Standard1')->key('user1friends','user2friends')->column($from_name,$to_name)->slice($limit,$reversed);
  106. /*
  107. * increment column value
  108. * @return - (int) new value on succes, false on failure
  109. */
  110. $new_value = $cassie->cf('Standard1')->key('user1')->column('friends')->increment();
  111. /*
  112. * decrement column value
  113. * @return - (int) new value on succes, false on failure
  114. */
  115. $new_value = $cassie->cf('Standard1')->key('user1')->column('friends')->decrement();
  116. /*
  117. * Getting active keyspace
  118. */
  119. echo $cassie->keyspace();
  120. /*
  121. * Range support - since SimpleCassie 0.7.1.2
  122. */
  123. $range = $cassie->cf('MyColumnFamily')->key('fromKey','toKey')->column('fromColumn','toColumn')->range($keyCount,$columnCount);
  124. ?>

UUID Usage Examples:

  1. <?php
  2. //setting new uuid column
  3. $cassie->keyspace('MyApp')->cf('BlogPosts')->key('post')->column($cassie->uuid())->set('I like raw food.');
  4. //getting latest added post (assuming TimeUUIDType)
  5. $post = $cassie->cf('BlogPosts')->key('post')->slice(1);
  6. //getting post column uuid name in canonical form
  7. $uuid = $cassie->uuid($post->column->name);
  8. $string_form = (string) $uuid; //canonical form
  9. $binary_form = $uuid->uuid;
  10. ?>

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/IT小白/article/detail/126220?site
推荐阅读
相关标签
  

闽ICP备14008679号