public function test_serialized_col_name_validators() { $cf = new ColumnFamily($this->client, 'CompositeNames'); $columns = array(serialize(array(0, 'meta')) => 'foo', serialize(array(1, 'blah')) => 10); $cf->insert('key', $columns); $this->assertEquals($columns, $cf->get('key')); }
/** * Retrieve an item from the cache by key. * * @param string $key * @return mixed */ public function get($key) { $prefixed = $this->prefix . $key; $cache = $this->columnFamily->get($key); // If we have a cache record we will check the expiration time against current // time on the system and see if the record has expired. If it has, we will // remove the records from the database table so it isn't returned again. if (!is_null($cache)) { if (is_array($cache)) { $cache = (object) $cache; } if (time() >= $cache->expiration) { $this->forget($key); return null; } return $this->encrypter->decrypt($cache->value); } }
protected function getValue($key) { if (isset($this->cache[$key])) { return $this->cache[$key]; } $cf = new ColumnFamily($this->cassandra, $this->config['column_family']); try { $value = array_shift($cf->get($key, new ColumnSlice("", ""))); } catch (\cassandra\NotFoundException $e) { return false; } return json_decode($value, true); }
$pool = new ConnectionPool('Keyspace1', array('127.0.0.1')); $letters = new ColumnFamily($pool, 'Letters'); // Insert a few records $columns = array(1 => "a", 2 => "b", 3 => "c", 4 => "d", 5 => "e"); $letters->insert('key', $columns); function print_slice($columns) { echo "("; foreach ($columns as $number => $letter) { echo "{$number} => {$letter}, "; } echo ")\n"; } // Fetch everything >= 2 $slice = new ColumnSlice(2); print_slice($letters->get('key', $slice)); // Fetch everything between 2 and 4, inclusive $slice = new ColumnSlice(2, 4); print_slice($letters->get('key', $slice)); // Fetch the first three columns in the row $slice = new ColumnSlice('', '', $count = 3); print_slice($letters->get('key', $slice)); // Fetch the last three columns in the row $slice = new ColumnSlice('', '', $count = 3, $reversed = true); print_slice($letters->get('key', $slice)); // Fetch two columns before 4 $slice = new ColumnSlice(4, '', $count = 2, $reversed = true); print_slice($letters->get('key', $slice)); // Destroy our schema $sys->drop_keyspace("Keyspace1"); // Close our connections
// Use composites for column names and row keys $sys->create_column_family('Keyspace1', 'Composites', array("comparator_type" => "CompositeType(LongType, AsciiType)", "key_validation_class" => "CompositeType(AsciiType, LongType)")); // Start a connection pool, create our ColumnFamily instance $pool = new ConnectionPool('Keyspace1', array('127.0.0.1')); $cf = new ColumnFamily($pool, 'Composites'); // Make it easier to work with non-scalar types $cf->insert_format = ColumnFamily::ARRAY_FORMAT; $cf->return_format = ColumnFamily::ARRAY_FORMAT; // Insert a few records $key1 = array("key", 1); $key2 = array("key", 2); $columns = array(array(array(0, "a"), "val0a"), array(array(1, "a"), "val1a"), array(array(1, "b"), "val1b"), array(array(1, "c"), "val1c"), array(array(2, "a"), "val2a"), array(array(3, "a"), "val3a")); $cf->insert($key1, $columns); $cf->insert($key2, $columns); // Fetch a user record $row = $cf->get($key1); $col1 = $row[0]; list($name, $value) = $col1; echo "Column name: "; print_r($name); echo "Column value: "; print_r($value); echo "\n\n"; // Fetch columns with a first component of 1 $slice = new ColumnSlice(array(1), array(1)); $columns = $cf->get($key1, $slice); foreach ($columns as $column) { list($name, $value) = $column; echo "{$value}, "; } echo "\n\n";
use phpcassa\Connection\ConnectionPool; use phpcassa\ColumnFamily; use phpcassa\SystemManager; use phpcassa\Schema\StrategyClass; // Create a new keyspace and column family $sys = new SystemManager('127.0.0.1'); $sys->create_keyspace('Keyspace1', array("strategy_class" => StrategyClass::SIMPLE_STRATEGY, "strategy_options" => array('replication_factor' => '1'))); $sys->create_column_family('Keyspace1', 'Users'); // Start a connection pool, create our ColumnFamily instance $pool = new ConnectionPool('Keyspace1', array('127.0.0.1')); $users = new ColumnFamily($pool, 'Users'); // Insert a few records $users->insert('user0', array("name" => "joe", "state" => "TX")); $users->insert('user1', array("name" => "bob", "state" => "CA")); // Fetch a user record $user = $users->get('user0'); $name = $user["name"]; echo "Fetched user {$name}\n"; // Fetch both at once $both = $users->multiget(array('user0', 'user1')); foreach ($both as $user_id => $columns) { echo "{$user_id} state: " . $columns["state"] . "\n"; } // Only fetch the name of user1 $columns = $users->get('user1', $column_slice = null, $column_names = array("name")); echo "Name is " . $columns["name"] . "\n"; // Insert two more records at once $users->batch_insert(array("user3" => array("name" => "kat"), "user4" => array("name" => "tom"))); // Remove the last row $users->remove("user4"); // Clear out the column family
*/ require_once __DIR__ . '/../lib/autoload.php'; use phpcassa\Connection\ConnectionPool; use phpcassa\ColumnFamily; use phpcassa\SystemManager; use phpcassa\Schema\StrategyClass; // Create a new keyspace and column family $sys = new SystemManager('127.0.0.1'); $sys->create_keyspace('Keyspace1', array("strategy_class" => StrategyClass::SIMPLE_STRATEGY, "strategy_options" => array('replication_factor' => '1'))); $sys->create_column_family('Keyspace1', 'Counts', array("default_validation_class" => 'CounterColumnType')); // Start a connection pool, create our ColumnFamily instance $pool = new ConnectionPool('Keyspace1', array('127.0.0.1')); $count_cf = new ColumnFamily($pool, 'Counts'); // ColumnFamily::add() is the easiest way to increment a counter $count_cf->add("key1", "col1"); $results = $count_cf->get("key1"); $current_count = $results["col1"]; echo "After one add(): {$current_count}\n"; // You can specify a value other than 1 to adjust the counter by $count_cf->add("key1", "col1", 10); $results = $count_cf->get("key1"); $current_count = $results["col1"]; echo "After add(10): {$current_count}\n"; // ColumnFamily::insert() will also increment values, but you can // adjust multiple columns at the same time $count_cf->insert("key1", array("col1" => 3, "col2" => -1)); $results = $count_cf->get("key1"); $current_count = $results["col1"]; echo "After insert(3): {$current_count}\n\n"; // And ColumnFamily::batch_insert() lets you increment counters // in multiple rows at the same time
$columnfamily_name = $_POST['columnfamily_name']; } try { $pool = new ConnectionPool($keyspace_name, $cluster_helper->getArrayOfNodesForCurrentCluster(), null, 5, 5000, 5000, 10000, $cluster_helper->getCredentialsForCurrentCluster()); $cf_def = ColumnFamilyHelper::getCFInKeyspace($keyspace_name, $columnfamily_name); $is_super_cf = $cf_def->column_type == 'Super'; if ($is_super_cf) { $column_family = new SuperColumnFamily($pool, $columnfamily_name); } else { $column_family = new ColumnFamily($pool, $columnfamily_name); } if ($action == 'dec') { $value *= -1; } $column_family->add($key, $super_column, $column, $value); $new_value = $column_family->get($key); if ($column_family->cfdef->column_type == 'Super') { $new_value = $new_value[$super_column][$column]; } else { $new_value = $new_value[$column]; } redirect('counters.php?keyspace_name=' . $keyspace_name . '&columnfamily_name=' . $columnfamily_name . '&new_value=' . $new_value); } catch (Exception $e) { $_SESSION['message'] = $e->getMessage(); redirect('counters.php?keyspace_name=' . $keyspace_name . '&columnfamily_name=' . $columnfamily_name . '&error=1'); } } if (!$included_header) { echo getHTML('header.php'); if (!$is_valid_action) { // No action specified
// Make a couple of user IDs with non-Time UUIDs $user1_id = UUID::uuid4(); $user2_id = UUID::uuid4(); // Insert some log messages $user1_logs = array(); $user2_logs = array(); for ($i = 0; $i < 5; $i++) { $user1_logs[] = array(UUID::uuid1(), "message{$i}"); $user2_logs[] = array(UUID::uuid1(), "message{$i}"); } $user_logs->batch_insert(array(array($user1_id, $user1_logs), array($user2_id, $user2_logs))); echo "Using ColumnFamily::ARRAY_FORMAT\n"; echo "================================\n\n"; // Pull the first two logs back out $slice = new ColumnSlice('', '', $count = 2); $logs = $user_logs->get($user1_id, $slice); echo "First two logs for user1: \n"; list($uuid, $message) = $logs[0]; echo " " . $uuid->time . ", " . $message . "\n"; list($uuid, $message) = $logs[1]; echo " " . $uuid->time . ", " . $message . "\n\n"; // Fetch the last log for both users at once $slice = new ColumnSlice('', '', $count = 1, $reversed = true); $rows = $user_logs->multiget(array($user1_id, $user2_id), $slice); foreach ($rows as $row) { list($user_id, $logs) = $row; $log = $logs[0]; echo "Most recent log for {$user_id}:\n"; echo " " . $log[0]->time . ": " . $log[1] . "\n"; } echo "\n";