首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >用phpcassa显示所有键

用phpcassa显示所有键
EN

Stack Overflow用户
提问于 2011-05-04 17:51:53
回答 2查看 2.2K关注 0票数 2

我是卡桑德拉的新手,但到目前为止我已经取得了很好的进步。

代码语言:javascript
复制
$conn = new ConnectionPool('Cluster');
$User = new ColumnFamily($conn, 'User');

$index_exp = CassandraUtil::create_index_expression('email', 'John@dsaads.com');
$index_clause = CassandraUtil::create_index_clause(array($index_exp));
$rows = $User->get_indexed_slices($index_clause);

foreach($rows as $key => $columns) {
echo $columns['name']."<br />";
}

我使用这种类型的查询从某人的电子邮件地址获取特定的日期。不过,我现在想做两件事。

".$columns'email':

  1. 计数数据库中的每个用户,并用$‘’name‘显示数据库中的每个用户的数字
    1. 列表。

在mysql中,我只需要从select查询中删除“where属性”,但是我认为这里要复杂一些吗?

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2011-05-05 17:10:49

在卡桑德拉,没有一种简单的方法来计算所有的行数。基本上你必须扫描所有的东西。如果这是你经常想做的事情,你就是做错了。示例代码:

代码语言:javascript
复制
$rows = $User->get_range("", "", 1000000);
$count = 0;
foreach($rows as $row) {
    $count += 1;
}

第二个答案类似:

代码语言:javascript
复制
$rows = $User->get_range("", "", 1000000, null, array("name", "email"));
foreach($rows as $key => $columns) {
    echo $columns["name"]." ".$columns["email"];
}
票数 4
EN

Stack Overflow用户

发布于 2012-08-11 18:39:42

泰勒·霍布斯举了个很好的例子。

但是,如果您有许多用户,则不希望一直对它们进行迭代。

最好每天迭代一两次,并将数据存储在cassandra或memcached / redis中。

我还会用单行进行CF,并将所有用户名(或用户键)放在单行上。然而,有些人认为这是一种奇怪的做法,有些人不会建议这样做。那你就做:

$count = $cf->get_count($rowkey = 0);

注意,get_count()操作也很慢,所以仍然需要缓存它。

如果get_count()返回100,则需要将phpcassa升级到最新版本。

关于第二部分--如果用户少于4000到5000,我会再次做一些奇怪的事情--然后作为超级列放在单行上。那么,read将只使用一个操作:

$users = $scf->get($rowkey = 0,新ColumnSlice("","",5000));foreach($users as $user){ echo $user“name”。“.$user”电子邮件;}

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/5887698

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档