Skip to content

Add IMultiReadStorage #2

Closed
Closed
@fprochazka

Description

@fprochazka

I propose adding a new interface IMultiReadStorage that will extend Nette\Caching\IStorage and it's implementation would mean that the cache can utilize the storage more effectively. Because reading 100 keys from memory cache at once is more effective than 100 requests.

Yes, this is a real world use-case, tested in our application and a friend on Posobota also told me he's using this approach.

We did implement our own IMultiReadStorage to Kdyby/Redis, but I wanna have a "standard" interface for my storage.

Also to the cache class should be added new method

class Cache
{
    public function multiLoad(array $keys)
    {
        if ($this->storage instanceof IMultiReadStorage) {
            return $this->storage->multiRead($keys);
        }

        $result = array();
        foreach ($keys as $key) {
            $result[$key] = $this->load($key);
        }
        return $result;
    }

To discuss:

  • should this be in Nette? (Should I send a pullrequest?)
  • better name for IMultiReadStorage ?
  • implementation details

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions