标签: redis-cache

可靠的Redis缓存TTL过期钩子

Azure Redis 缓存是否允许我设置一个函数,以便在缓存中的某个键过期时可靠地触发?

redis-cache azure-redis-cache

4
推荐指数
1
解决办法
2733
查看次数

我的 Superset 缓存设置为 Redis,但我仍然在日志中收到缓存警告

我在日志文件中收到缓存警告,但不确定原因。

我的缓存覆盖:

CACHE_CONFIG = {
    'CACHE_TYPE': 'RedisCache',
    'CACHE_DEFAULT_TIMEOUT': 86400,
    'CACHE_KEY_PREFIX': 'superset_',
    'CACHE_REDIS_HOST': 'localhost',
    'CACHE_REDIS_PORT': 6379,
    'CACHE_REDIS_DB': 1,
    'CACHE_REDIS_URL': 'redis://localhost:6379/1'
}
Run Code Online (Sandbox Code Playgroud)

我也尝试过redis而不是RedisCache

日志语句:

2022-05-06 15:03:27,118:INFO:root:配置的类型为 <class 'superset.utils.log.DBEventLogger'> 的事件记录器回退到内置缓存,该缓存将数据存储在元数据数据库中,用于以下缓存:FILTER_STATE_CACHE_CONFIG. 建议使用 RedisCache,MemcachedCache或另一个用于生产部署的专用缓存后端 2022-05-06 15:03:27,123:WARNING:superset.utils.cache_manager:回退到将数据存储在元数据数据库中的内置缓存,对于以下缓存:FILTER_STATE_CACHE_CONFIG. 建议使用 RedisCacheMemcachedCache其他用于生产部署的专用缓存后端 回退到内置缓存,将数据存储在元数据数据库中,用于以下缓存: EXPLORE_FORM_DATA_CACHE_CONFIG。建议使用 RedisCacheMemcachedCache其他专用缓存后端进行生产部署

redis-cache apache-superset

4
推荐指数
1
解决办法
6021
查看次数

Redis对对象的编码和大小的影响

当我将一些对象写入 Redis 时,我可以获得不同的内存使用统计信息。我想了解这是如何发生的。

简单的例子:

127.0.0.1:6379> set a 1
OK
127.0.0.1:6379> MEMORY usage a
(integer) 49
127.0.0.1:6379> set a "1"
OK
127.0.0.1:6379> MEMORY usage a
(integer) 49
127.0.0.1:6379> set a \x01 <<<< Message packed of number 1
OK
127.0.0.1:6379> MEMORY usage a
(integer) 55
127.0.0.1:6379> set a '\x01' <<<< Message pack of number 1 but added '' 
OK
127.0.0.1:6379> MEMORY usage a
(integer) 55
127.0.0.1:6379> set a "\x01" <<<<< Message pack of number 1 but added "" 
OK
127.0.0.1:6379> MEMORY usage …
Run Code Online (Sandbox Code Playgroud)

memory redis redis-cache redis-cli

3
推荐指数
1
解决办法
1380
查看次数

Spring Redis 缓存中的 ClassCastException

我正在使用 Spring Boot 版本 2.1.8.RELEASE 开发 Spring Boot 应用程序。我需要构建自定义 RedisCacheManager。

RedisCacheManager如下。

@EnableCaching
@Configuration
class CacheConfig {
    @Bean
    fun redisCacheManager(lettuceConnectionFactory: RedisConnectionFactory): RedisCacheManager? {
        val redisCacheConfiguration = RedisCacheConfiguration.defaultCacheConfig()
            .entryTtl(Duration.ofHours(1))

        return RedisCacheManager.RedisCacheManagerBuilder
            .fromConnectionFactory(lettuceConnectionFactory)
            .cacheDefaults(redisCacheConfiguration)
            .build()
    }
}
Run Code Online (Sandbox Code Playgroud)

在我的服务中,我使用 @Cacheble 缓存响应。看:

@Cacheable(cacheNames = ["cached_sample"])
    fun getAllSample(): List<SampleRecord> {
        return auditableRepository.findAll()
    }
Run Code Online (Sandbox Code Playgroud)

模型我缓存:

data class SampleRecord(
    @ApiModelProperty(readOnly = true)
    val id: Long? = null,
    @ApiModelProperty(readOnly = true)
    val active: Boolean? = null,
    @ApiModelProperty(readOnly = true)
    val createdDate: Instant? = null,
    val param: String
): Serializable …
Run Code Online (Sandbox Code Playgroud)

redis spring-data redis-cache spring-boot spring-cache

3
推荐指数
1
解决办法
3293
查看次数

Docker 的 Django Redis 问题:InvalidCacheBackendError:没有名为“django.core.cache.backends.redis”的模块

我想通过 docker 使用 Redis 进行缓存,但出现此错误。

django.core.cache.backends.base.InvalidCacheBackendError: Could not find backend 'django.core.cache.backends.redis.RedisCache': No module named 'django.core.cache.backends.redis'
Run Code Online (Sandbox Code Playgroud)

我的缓存设置是这样的

CACHES = {
    'default': {
        'BACKEND': 'django.core.cache.backends.redis.RedisCache',
        'LOCATION': 'redis://127.0.0.1:6379',
    }
}
Run Code Online (Sandbox Code Playgroud)

我从 Django 文档中获取了它们。

我使用这个命令在 docker 中启动一个 Redis 实例。

docker run --name some-redis -d redis
Run Code Online (Sandbox Code Playgroud)

django redis-cache docker

3
推荐指数
1
解决办法
3363
查看次数

Symfony 4.3,redis 缓存池的 tags:true 选项没有实现 TagAware ItemInterface

使用 symfony 4.3,我配置了一个缓存池,它应该为缓存项目启用 TagAwarable。配置是这样的:

framework:
cache:
    #app: cache.adapter.redis
    default_redis_provider: 'redis://%env(REDIS_HOST)%:%env(int:REDIS_PORT)%'

    pools:
        redis.cache:
            adapter: '%framework_cache_adapter%'
            provider: 'redis://%env(REDIS_HOST)%:%env(int:REDIS_PORT)%'
            default_lifetime: '%framework_cache_lifetime%'
            tags: true
Run Code Online (Sandbox Code Playgroud)

在代码中,使用依赖注入,我使用池名称检索 CacheInterface 并尝试标记它,这会引发以下异常:

缓存项“appSettings”来自非标记感知池:您无法标记它。

代码如下所示:

public function __construct(EntityManagerInterface $em, CacheInterface $redisCache)
{
    $this->m_cache = $redisCache;
    $this->m_entityManage = $em;
}

public function getKey(string $key) : ?string
{
    $appSettings = $this->m_cache->get(self::CACHE_KEY, function (ItemInterface $item) {
        $item->expiresAfter(3600);
        $item->tag([ 'settings', 'app_cache' ]);

        return $settings;
    });

    return $appSettings[$key] ?? null;
}
Run Code Online (Sandbox Code Playgroud)

我尝试了不同的方法无济于事,不知道如何从这里开始。

感谢您对如何标记项目的任何帮助。

php redis-cache symfony4

1
推荐指数
1
解决办法
1442
查看次数