I don't really know if the list is the right place to do this, but attached is a hack of what I had for my Cached FastMmap module converted over to CHI. I've tested the basic functionality, but don't know if this is really the correct way to implement it. I like the idea of CHI and would like to be able to do something along the lines of selecting the cache driver I want to use with my script that starts my process. In one script I may want to set my Rose Objects to use a Memory cache, but in my FastCGI or modperl process I may want it to use FastMmap. I keep thinking an environment variable of some sort, but there has to be a better way, right? -Kevin
_____ From: [EMAIL PROTECTED] [mailto:[EMAIL PROTECTED] On Behalf Of Sam Tregar Sent: Thursday, February 07, 2008 12:54 PM To: Rose::DB::Object list Subject: Re: [RDBO] Anyone done more advanced caching with rdbo? On Feb 7, 2008 9:40 AM, Kevin McGrath <[EMAIL PROTECTED]> wrote: I've actually been working on a Cached::FastMmap module for my own project a My::DB::Object::Cached::FastMmap type module. I wanted to test using FastMmap because I want my application to use the same cache across different processes. So far it's been a success and I've now been working on trying to make it more generic. I'd be willing to help with coming up with a module that does this, I would definitely have an interest for it. Instead of using Cache::FastMmap directly, how about using CHI: http://search.cpan.org/~jswartz/CHI/ That would let you experiment with different backends without changing your code. I haven't tried it yet but I've heard good things. -sam
#### Within Metadata Class ###
### By default there will be namespace for every
### class. But if a lot of classes are loaded a new
### FastMmap file will need to be created for each one.
### Keys are set in a way that we could use a global namespace
### if we wanted to here, so only one FastMmap file is created.
sub defalut_cache_settings {
# Over-ride in own meta class
my %default = (
driver=>'FastMmap',
#root_dir=>'/tmp/RDBO-global',
#namespace=>'global_namespace',
);
return %default;
}
sub cache_settings {
my $self = shift;
my @args = @_;
my %settings;
unless (defined $self->{__cache_settings}) {
%settings = __PACKAGE__->defalut_cache_settings();
$self->{__cache_settings} = \%settings;
}
if ($args) {
push @{%settings}, @args;
$self->{__cache_settings} = \%settings;
} else {
return $self->{__cache_settings}
}
}
sub cache_handle {
my $self = shift;
my $handle = shift;
if ($handle) {
$self->{__cache_handle} = $handle;
} else {
return $self->{__cache_handle}
}
}
CachedCHI.pm
Description: Binary data
------------------------------------------------------------------------- This SF.net email is sponsored by: Microsoft Defy all challenges. Microsoft(R) Visual Studio 2008. http://clk.atdmt.com/MRT/go/vse0120000070mrt/direct/01/
_______________________________________________ Rose-db-object mailing list [email protected] https://lists.sourceforge.net/lists/listinfo/rose-db-object
