NAME
Rose::DBx::Object::Cached::FastMmap - Rose::DB::Object Cache Cache::FastMmap
SYNOPSIS
package Category;
use Rose::DBx::Object::Cached::FastMmap;
our @ISA = qw(Rose::DBx::Object::Cached::FastMmap);
__PACKAGE__->meta->table('categories');
__PACKAGE__->meta->columns
(
id => { type => 'int', primary_key => 1 },
name => { type => 'varchar', length => 255 },
description => { type => 'text' },
);
__PACKAGE__->meta->add_unique_key('name');
__PACKAGE__->meta->initialize;
...
## Defaults to default settings of L<Cache::FastMmap>.
$cat1 = Category->new(id => 123,
name => 'Art');
$cat1->save or die $category->error;
$cat2 = Category->new(id => 123);
# This will load from the cache, not the database
$cat2->load or die $cat2->error;
...
## Set the cache options for all Rose::DB::Object derived objects
$Rose::DBx::Object::Cached::FastMmap::SETTINGS = {
root_dir => '/tmp/global_fastmmap',
};
$cat1 = Category->new(id => 123,
name => 'Art')->save;
## In another script
$Rose::DBx::Object::Cached::FastMmap::SETTINGS = {
root_dir => '/tmp/global_fastmmap',
};
# This will load from the FastMmap cache, not the database
$cat2 = Category->new(id => 123,
name => 'Art')->load;
...
## Set cache options for all Category derived objects
Category->cached_objects_settings(
root_dir => '/tmp/global_fastmmap',
);
...
## Set cache expire time for all Category objects
Category->cached_objects_expire_in('5 seconds');
DESCRIPTION
This module intends to extend the caching ability in Rose::DB::Object allowing objects to be cached wth Cache::FastMmap. This module was created becaue of speed issues with Rose::DBx::Object::Cached::CHI. Those issues arise do to the overhead that the CHI introduces to caching of objects.
Most of the code is taken straight from Rose::DB::Object::Cached. This does not extend Rose::DB::Object::Cached because function calls and how the cache is accessed needed to be changed thoughout the code.
MAJOR DIFFERENCE from Rose::DB::Object::Cached
All objects derived from a Rose::DBx::Object::Cached::FastMmap class are set and retrieved from FastMmap, therefore 2 objects that are loaded with the same parameters are not the same code reference.
- In Rose::DB::Object::Cached
-
$cat1 = Category->new(id => 123, name => 'Art'); $cat1->save; $cat2-> Category->new(id => 123, name => 'Art'); $cat2->load; print $cat1->name; # prints "Art" print $cat2->name; # prints "Art" $cat1->name('Blah'); print $cat2->name; # prints "Blah"
- In Rose::DBx::Object::Cached::FastMmap
-
$cat1 = Category->new(id => 123, name => 'Art'); $cat1->save; $cat2-> Category->new(id => 123, name => 'Art'); $cat2->load; print $cat1->name; # prints "Art" print $cat2->name; # prints "Art" $cat1->name('Blah'); print $cat2->name; # prints "Art"
GLOBALS
- $SETTINGS
-
This global is used to set FastMmap settings for all objects derived from Rose::DBx::Object::Cached::FastMmap. Any settings here will override any default settings, but will conceded to settings configured by the class method cached_objects_settings
Example:
$Rose::DBx::Object::Cached::FastMmap::SETTINGS = { root_dir => '/tmp/global_fastmmap', };
CLASS METHODS
Only class methods that do not exist in Rose::DB::Object::Cached are listed here.
- cached_objects_settings [PARAMS]
-
If called with no arguments this will return the current cache settings. PARAMS are any valid options for the Cache::FastMmap constructor.
Example: Category->cached_objects_settings ( root_dir => '/tmp/global_fastmmap', expires_in => '15m', )
- default_cached_objects_settings [PARAMS]
-
Returns the default FastMmap settings for the class. This method should be implemented by a sub class if custom settings are required.
package Category; use base Rose::DBx::Object::Cached::FastMmap; ... sub default_cached_objects_settings ( return { root_dir => '/tmp/global_fastmmap', expires_in => '15 minutes', }; )
OBJECT METHODS
Only object methods that do not exist in Rose::DB::Object::Cached are listed here.
PRIVATE METHODS
- __xrdbopriv_clone
-
Calls the __xrdbopriv_clone method in Rose::DB::Object::Helpers
Because of the nature of Storable all objects set to cache are set by $object->__xrdbopriv_clone->__xrdbopriv_strip
- __xrdbopriv_strip
-
Calls the __xrdbopriv_strip method in Rose::DB::Object::Helpers
Because of the nature of Storable all objects set to cache are set by $object->__xrdbopriv_clone->__xrdbopriv_strip
There is most likely at better and cheaper way to do this....
TODO
- Tests
-
Currently tests only exist for MySQL. Almost all of these have been copied directly from the tests that exist for Rose::DB::Object.
SUPPORT
Right now you can email kmcgrath@baknet.com.
AUTHOR
Kevin C. McGrath
CPAN ID: KMCGRATH
kmcgrath@baknet.com
COPYRIGHT
This program is free software; you can redistribute it and/or modify it under the same terms as Perl itself.
The full text of the license can be found in the LICENSE file included with this module.
SEE ALSO
perl(1).
2 POD Errors
The following errors were encountered while parsing the POD:
- Around line 552:
'=item' outside of any '=over'
- Around line 574:
You forgot a '=back' before '=head1'