NAME

CHI::Driver::SharedMem - Cache data in shared memory

VERSION

Version 0.19

SYNOPSIS

CHI driver which stores data in shared memory objects for persistence over processes. Size is an optional parameter containing the size of the shared memory area, in bytes. Shmkey is a mandatory parameter containing the IPC key for the shared memory area. See IPC::SharedMem for more information.

    use CHI;
    my $cache = CHI->new(
	driver => 'SharedMem',
	max_size => 2 * 1024,	# Size of the cache
	shm_size => 32 * 1024,	# Size of the shared memory area
	shm_key => 12344321,	# Choose something unique, but the same across
				# all caches so that namespaces will be shared,
				# but we won't step on any other shm areas
    );
    # ...

The shared memory area is stored thus:

# Number of bytes in the cache [ int ]
'cache' => {
	'namespace1' => {
		'key1' => 'value1',
		'key2' => 'value2',
		# ...
	},
	'namespace2' => {
		'key1' => 'value3',
		'key3' => 'value2',
		# ...
	}
	# ...
}

SUBROUTINES/METHODS

store

Stores an object in the cache. The data are serialized into JSON.

fetch

Retrieves an object from the cache

remove

Remove an object from the cache

clear

Removes all data from the current namespace

get_keys

Gets a list of the keys in the current namespace

get_namespaces

Gets a list of the namespaces in the cache

default_discard_policy

Use an LRU algorithm to discard items when the cache can't add anything

discard_policy_lru

When the Shared memory area is getting close to full, discard the least recently used objects

BUILD

Constructor - validate arguments

DEMOLISH

If there is no data in the shared memory area, and no-one else is using it, it's safe to remove it and reclaim the memory.

AUTHOR

Nigel Horne, <njh at bandsman.co.uk>

BUGS

Please report any bugs or feature requests to bug-chi-driver-sharedmem at rt.cpan.org, or through the web interface at http://rt.cpan.org/NoAuth/ReportBug.html?Queue=CHI-Driver-SharedMem. I will be notified, and then you'll automatically be notified of progress on your bug as I make changes.

Max_size is handled, but if you're not consistent across the calls to each cache, the results are unpredictable because it's used to create the size of the shared memory area.

The shm_size argument should be deprecated and only the max_size argument used.

SEE ALSO

CHI, IPC::SharedMem

SUPPORT

You can find documentation for this module with the perldoc command.

perldoc CHI::Driver::SharedMemory

You can also look for information at:

LICENSE AND COPYRIGHT

Copyright 2010-2023 Nigel Horne.

This program is released under the following licence: GPL2