承接 henzeb/laravel-cache-index 相关项目开发

从需求分析到上线部署,全程专人跟进,保证项目质量与交付效率

邮箱:yvsm@zunyunkeji.com | QQ:316430983 | 微信:yvsm316

henzeb/laravel-cache-index

最新稳定版本:v1.5.1

Composer 安装命令:

composer require henzeb/laravel-cache-index

包简介

Flexible replacement for tags

README 文档

README

Build Status Latest Version on Packagist Total Downloads Test Coverage License

When you have a situation where you need to be able to track keys, you can use tags. Unfortunately tags aren't supported by all drivers, and retrieving keys is only doable the hacky way with redis.

Cache Index for Laravel provides a driver-independent way for managing such indexes.

Installation

Just install with the following command.

composer require henzeb/laravel-cache-index

Usage

Under the hood, index returned an extended Illuminate\Cache\Repository object, which manages your index.

See Laravel doc's for the possible methods.

keys are prefixed with the index name, so that you can't accidentally overwrite any values belonging to that index.

Note: tags are currently not supported when using index.

Cache::index('myIndex')->add('test', 'my value');
Cache::index('myIndex')->put('put', 'my value');

Cache::driver('file')->index('myIndex')->remember('filed', 'my value in file');

Cache::index('myIndex')->get('put'); // returns 'my value'
Cache::get('put'); // returns null

Cache::index('myIndex')->flush(); // only flushes keys in index

index name

The index name can, next to a regular string, also be applied as an array. This is handy when you have an index based on variables.

Cache::index(['myIndex', 'Read', 'Write']); // uses index name `myIndex.Read.Write`
Cache::index(['myIndex', ActionEnum::Read]); // uses index name `myIndex.Read`
Cache::index(['myIndex', new StdClass()]); // uses index name `myIndex.StdClass`
Cache::index(['myIndex', new StringableClass('stringed')]); // uses index name `myIndex.stringed`

Keys

Retrieving a list of keys is very easy.

Cache::index('myIndex')->keys(); // returns ['test', 'put']
Cache::driver('file')->index('myIndex')->keys(); // returns ['filed']

Count

With this method, you can know how many keys are inside your index.

Cache::index('myIndex'); // using default driver
Cache::driver('file')->index('myIndex'); // using file driver

Copy & Move

Copy

Makes a copy of a cached item, and adds the key in the new index.

It returns true if it's successful, false otherwise.

Cache::index('myIndex')->copy('myKey', 'targetIndex');
Cache::index('myIndex')->copy('myKey', 'targetIndex', 10);

Move

Does the same as Copy, except that it removes its own copy.

It returns true if it's successful, false otherwise.

Cache::index('myIndex')->move('myKey', 'targetIndex');
Cache::index('myIndex')->move('myKey', 'targetIndex', 10);

Note: Be aware that either copy and move do nothing with the TTL. It creates a new copy of the cached item with a new TTL if given.

pop

Just like with arrays, takes and removes the last indexed key and returns the value associated with that index.

shift

Just like with arrays, takes and removes the first indexed key and returns the value associated with that index.

random

returns a random value.

randomKey

returns a random key.

pullRandom

Returns a random value and pulls it from the cache.

syncTtl

Allows you to synchronize the ttl between indexed keys.

Cache::index('myIndex')->syncTtl(10);
Cache::index('myIndex')->syncTtl(now()->addSeconds(10));

Testing this package

composer test

Changelog

Please see CHANGELOG for more information what has changed recently.

Contributing

Please see CONTRIBUTING for details.

Security

If you discover any security related issues, please email henzeberkheij@gmail.com instead of using the issue tracker.

Credits

License

The GNU AGPLv. Please see License File for more information.

统计信息

  • 总下载量: 11.86k
  • 月度下载量: 0
  • 日度下载量: 0
  • 收藏数: 12
  • 点击次数: 1
  • 依赖项目数: 0
  • 推荐数: 0

GitHub 信息

  • Stars: 12
  • Watchers: 1
  • Forks: 4
  • 开发语言: PHP

其他信息

  • 授权协议: AGPL-3.0-only
  • 更新时间: 2023-01-25