hi-man/localcache

提供本地和远程缓存的缓存

v0.0.9 2020-11-28 01:44 UTC

This package is auto-updated.

Last update: 2024-09-28 10:05:18 UTC


README

Build Status

现在,让我们回到教室,教授正在讲解 cpu 的架构,就像你正在创建的软件一样,《Redis》是 L2 缓存,而《Yac》是你的软件的 L1 缓存,而《LocalCache》是《Redis》和《Yac》的缓存管理器。

所以,如果你的 Redis 服务器很忙,而且你的数据不经常改变,那么《LocalCache》就是你要找的人。

如果我看得更远,那是因为我站在巨人的肩膀上。

感谢 phpredisyac

功能

  • 具有重试机制的 Redis 客户端
  • 通过在内存中缓存数据来减少 Redis 请求
  • 支持 Redis 连接池
  • 更优雅的异常处理程序
  • 按需禁用缓存

用法

  1. 扩展 CacheService 类(推荐)
  2. CachePoolService 中使用静态函数
  3. 直接使用 LocalCache

要求

  • PHP 7.0+
  • phpredis
  • yac

安装

composer require 'hi-man/localcache'

测试

composer test

CachePoolService

LocalCache 的池,可以静态调用

initCacheInstance

初始化 LocalCache

getCacheInstance

通过连接名称获取 LocalCache 实例

setCacheValue

设置缓存值

getCacheValue

获取缓存值

deleteByKey

通过键从缓存中删除

CacheService

使用 CachePoolService 更高效地使用的抽象类

getConfigByConnection

必须实现 通过连接标识符获取 Redis 配置

logException

必须实现 异常处理程序

setCacheValue

CachePoolService::setCacheValue 的包装器

getCacheValue

CachePoolService::getCacheValue 的包装器

deleteByKey

CachePoolService::deleteByKey 的包装器

LocalCache

在应用程序和 Redis 服务器之间提供本地缓存

构造函数

$lc = new LocalCache(
  '127.0.01' /* redis host */,
  'Yac prefix' /* yac prefix, empty prefix will disable yac, default value is empty, max length is 20 */,
  6379 /* redis port, default value is 6379 */,
  3 /* redis connection timeout, in seconds, default value is 3 */,
  500000 /* redis retry interval, in microseconds, default value is 500000 */,
  3 /* redis read timeout, default value is 3 */,
  3 /* max retry, default value is 3 */,
  0 /* redis reserved, default value is 0 */
);

选择

与 Redis 命令 select 相同,但实际上不发送命令请求。

$lc->select(0 /* redis database index */);

获取

与 Redis 命令 get 相同,首先使用 yac 缓存值,如果缓存缺失则发送命令请求。

$lc->get(
  'key' /* redis item key */,
  'default value' /* default value if the key does not exists */
);

设置

与 Redis 命令 set 相同,重置 yac 缓存值

$lc->set(
    'key',      /* redis item key */
    'value',    /* value to store */
    3           /* ttl */
    'default value' /* default value if the key does not exists */
);

删除 / 解链

与 Redis 命令 deleteunlink 相同,同时也删除 yac 缓存

$lc->delete(
    'key',      /* redis item key */
);

$lc->unlink(
    'key',      /* redis item key */
);

过期

与 Redis 命令 expire 相同,同时也重置 yac 缓存的过期时间

$lc->expire('key' /* redis item key */, 3 /* expire time in seconds */);

清除

与 Redis 命令 flushdb 相同,但刷新 所有 yac 缓存

$lc->clear();

hDel / hGetAll / hMSet / hMGet / hSet / hGet

与 Redis 命令相同

setLocalCacheTimeout

设置 yac 缓存超时,根据您的场景设置正确的值。缓存失效是一个处理概念的大概念。

$lc->setLocalCacheTimeout(
    'key',      /* redis item key */
    'value',    /* value to store */
    3           /* ttl */
    'default value' /* default value if the key does not exists */
);

getLocalCacheTimeout

获取 yac 缓存超时

$lc->getLocalCacheTimeout();