NAME
Rose::DBx::Object::Cached::FastMmap - Rose::DB::Object Cache Cache::FastMmap
SYNOPSIS
package
Category;
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.
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'