标签: redis-cache

Redis可以写出像PostgreSQL这样的数据库吗?

我一直在使用PostgreSQL.我的所有数据都存在于Postgres中.我最近研究过redis,它有很多强大的功能,否则需要在Django(python)中做几行.Redis数据是持久的,只要它运行的机器没有停机,您可以将其配置为每1000个键或每5分钟左右写入存储到磁盘的数据,具体取决于您的选择.

Redis会创建一个很好的缓存,它肯定会取代我在python中编写的很多函数(投票给用户的帖子,查看朋友列表等等).但我担心的是,所有这些数据都需要转化为postgres.我不相信将这些数据存储在redis中.我认为redis是一种临时存储解决方案,可以快速检索信息.它非常快,远远超过对postgres进行重复查询.

我假设从技术上将redis数据写入数据库的唯一方法是保存()通过Django从redis到postgres数据库的'get'查询得到的任何东西.

这是我能想到的唯一解决方案.你知道这个问题的其他解决方案吗?

python django postgresql redis redis-cache

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

为什么Azure Redis Cache的连接如此之高?

我在查询缓存的单个计算机的高负载情况下使用Azure Redis缓存.这台机器每秒大约可以获得约20件物品.在白天,这种情况会增加,在夜间这种情况会减少.

到目前为止,事情一直很好.今天我意识到"连接客户端"的指标非常高,尽管我只有一个客户端只是经常获取和设置项目.以下是我所指的指标的屏幕截图: Redis缓存已连接的客户端

我的代码看起来像这样:

public class RedisCache<TValue> : ICache<TValue>
{
    private IDatabase cache;
    private ConnectionMultiplexer connectionMultiplexer;

    public RedisCache()
    {
        ConfigurationOptions config = new ConfigurationOptions();
        config.EndPoints.Add(GlobalConfig.Instance.GetConfig("RedisCacheUrl"));
        config.Password = GlobalConfig.Instance.GetConfig("RedisCachePassword");
        config.ConnectRetry = int.MaxValue; // retry connection if broken
        config.KeepAlive = 60; // keep connection alive (ping every minute)
        config.Ssl = true;
        config.SyncTimeout = 8000; // 8 seconds timeout for each get/set/remove operation
        config.ConnectTimeout = 20000; // 20 seconds to connect to the cache

        connectionMultiplexer = ConnectionMultiplexer.Connect(config);
        cache = connectionMultiplexer.GetDatabase();
    }

    public virtual …
Run Code Online (Sandbox Code Playgroud)

caching azure redis-cache azure-redis-cache

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

将 Redis 缓存与 Node.js 一起使用时,套接字已打开问题

当我将 Redis 与 Node.js 项目一起使用时,我遇到“错误:套接字已打开问题”。

我正在尝试将数据库结果缓存到Redis缓存中。当Redis键不为空时,我将从Redis键中选择记录。当它为空时,我将从数据库中选择并设置为 Redis Key。

这是我的代码:

const { response } = require('express');
var express = require('express');
var mysql = require('mysql');
const redis = require('redis');
const client = redis.createClient();

function GetLatestPosts() {
    return new Promise(async function(resolve, reject) {
        await client.connect();
        const value = await client.get('indexitems');
        if (value != null) {
            await client.disconnect();
            resolve(JSON.parse(value));
        }
        else {
            var PostsList;
            mysqldb.getConnection(function (err, connection) {
                var sql = "CALL PRC_GetPostsList()";
                connection.query(sql, async function (err, data, fields) {
                    if (err) throw err; …
Run Code Online (Sandbox Code Playgroud)

redis node.js express redis-cache

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

名称或服务未知[tcp:// redis:6379]

我在使用laravel设置redis缓存时遇到问题.我在我的本地机器上有一个redis服务器runnig:

在此输入图像描述

我的.env:

在此输入图像描述

我准备好并在端口6379上使用localhost:

在此输入图像描述

有人告诉我这里发生了什么事?在此输入图像描述

php redis-cache phpredis predis laravel-5

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

从 StackExchangeRedisCacheClient 迁移到 RedisCacheClient

我正在构建一个基于StackExchangeRedisCacheClient的项目,但已经过时了:'StackExchangeRedisCacheClient' 已过时:'此接口将在下一个专业中删除。请改用 RedisCacheClient。

所以我想移动从StackExchangeRedisCacheClientRedisCacheClient 遗憾的是没有文件或做一些有用的信息。

如何创建缓存客户端?与RedisCacheClient?需要的参数是 'RedisCacheClient( IRedisCacheConnectionPoolManager , ISerializer , RedisConfiguration )'

我查看了以下链接并尝试实现单个池但没有成功https://github.com/imperugo/StackExchange.Redis.Extensions/issues/176# 在提供连接字符串后无法创建 cacheClient。

StackExchangeRedisCacheClient:(工作正常)

  public CacheManager()
    {
        string connectionString = "localhost:300....."
        var serializer = new NewtonsoftSerializer();
        cacheClient = new StackExchangeRedisCacheClient(serializer, connectionString);
        clientName = cacheClient.Database.Multiplexer.ClientName;

    }
Run Code Online (Sandbox Code Playgroud)

RedisCacheClient:

  public CacheManager()
    {
        string connectionString = "localhost:300....."
        var serializer = new NewtonsoftSerializer();
        cacheClient = new RedisCacheClient( *** ??? *** );
        clientName = cacheClient.Database.Multiplexer.ClientName;

    }
Run Code Online (Sandbox Code Playgroud)

.net c# redis-cache stackexchange.redis

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

Nestjs:如何删除typeorm中带前缀的redis缓存

我有一个服务类create,list,其中包含update修改实体的方法

我在list方法中设置了redis缓存,缓存key是list_cache_1,list_cache_2,...

我的问题是,如何删除createupdate方法中的所有相关缓存,例如

this.connection.queryResultCache.remove([`list_cache:*`]);
Run Code Online (Sandbox Code Playgroud)

redis-cache typeorm nestjs

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

AWS RedisConnectionException:没有连接可用于服务此操作。SocketClosed异常

突然,我们在点击时开始出现以下提到的异常Redis Cache (AWS)。过去工作正常。我们已经看到,Redis节点的“ 当前连接数 ”继续增加。

访问redis时出现“无连接可用”异常。以下是例外-“无连接可用于服务此操作:套接字在xxxxx / Interactive上关闭,来源:ProcessReadBytes,输入缓冲区:0,优秀:0,上次读取:69s前,上次写入:69s前,未回答:2630s前,keep-alive:60s,未决:0 ,状态:ConnectedEstablished,位于:0,ar:0,last-heartbeat:0s之前,last-mbeat:0s之前,global:0s之前:StackExchange.Redis.ConnectionMultiplexer.ExecuteSyncImpl [T](消息,ResultProcessor1处理器,RedisConnectionException) ,ServerEndPoint服务器)位于c:\ code \ StackExchange.Redis \ StackExchange.Redis \ StackExchange \ Redis \ ConnectionMultiplexer.cs:第2027行,位于StackExchange.Redis.RedisBase.ExecuteSync [T](消息消息,ResultProcessor1处理器,ServerEndPoint服务器) C:

我们使用.Net framework 4.5StackExchange.Redis 1.2.1,我们尝试使用最新版本的StackExchange.Redis,但它似乎不支持.Net framework 4.5

在不更改当前应用程序.Net框架的情况下该怎么办?谢谢。

redis redis-cache stackexchange.redis cachingframework.redis

5
推荐指数
0
解决办法
25
查看次数

带有 redis 缓存存储的 Rails Keycloak gem 抛出 ActionDispatch::Cookies::CookieOverflow

我在 Rails 应用程序中使用 Keycloak gem。根据 keycloak 文档,keycloak 使用 cookie。在我的应用程序中,我使用 Redis 缓存存储来存储这些 cookie。

config.session_store :cache_store, key: ENV['APP_SESSION_KEY']
Run Code Online (Sandbox Code Playgroud)

它抛出以下

raise CookieOverflow if options[:value].bytesize > MAX_COOKIE_SIZE

ActionDispatch::Cookies::CookieOverflow
Run Code Online (Sandbox Code Playgroud)

如果我使用active_record_store它工作正常。但我真的需要使用redis_cache_store

我该如何处理?

ruby-on-rails session-cookies redis-cache rails-activerecord keycloak

5
推荐指数
0
解决办法
84
查看次数

java.lang.ClassCastException:DTOObject无法强制转换为DTOObject

我在我的应用程序中面临一个奇怪的问题,它运行在Spring Boot 1.4.0M3上,它使用Spring缓存实现,其中provider是Redis,我收到classCastException,相同的对象无法生成

我使用Mongodb作为数据库,我有User Object,其中包含懒惰加载的Roles对象列表,Roles内部包含权限对象,如下所示

@Document
@Data
public class User implements Serializable{
private String passwordResetToken;

private boolean enabled = false;

@DBRef(lazy= true)
private List<Role> roleList;
}
Run Code Online (Sandbox Code Playgroud)

我的角色DTO如下

@Data
@Document
public class Role implements Serializable{
   private String roleName;
    private String description;
    @DBRef(lazy= true)
    private List<Permission> permissions;
}
Run Code Online (Sandbox Code Playgroud)

现在在我的Spring MVC加载所有角色时我调用所有权限,因为这是重复操作,我想到缓存结果并使用redis,同时加载我在异常下面收到的角色值.

raised java.lang.ClassCastException: com.learning.securedapp.domain.Permission cannot be cast to com.learning.securedapp.domain.Permission
Run Code Online (Sandbox Code Playgroud)

帮助我克服这个错误.

我将源代码附加到我的项目,并在RoleController.java的第91行收到错误

要在本地环境中复制,请登录到应用程序,然后单击权限菜单,然后单击角色菜单,在角色菜单中,现在单击任何编辑图标.您将收到以上错误.

spring caching spring-mvc redis-cache spring-boot

4
推荐指数
2
解决办法
3564
查看次数

使用 AddDistributedRedisCache 时为 IDistributedCache.SetAsync 设置过期时间

我正在使用带有 aws redis 缓存的 .net core api (2.1)。我没有看到将过期设置为IDistributedCache.SetAsync 的方法。这怎么可能?

我的代码段如下:

// Startup.cs
public void ConfigureServices(IServiceCollection services)
{
    services.AddDistributedRedisCache(options =>
    {
        var redisCacheUrl = Configuration["RedisCacheUrl"];
        if (!string.IsNullOrEmpty(redisCacheUrl))
        {
            options.Configuration = redisCacheUrl;
        }
    });
}

Run Code Online (Sandbox Code Playgroud)
//Set & GetCache
public async Task<R> GetInsights<R>(string cacheKey, IDistributedCache _distributedCache)
{
    var encodedResult = await _distributedCache.GetStringAsync(cacheKey);               

    if (!string.IsNullOrWhiteSpace(encodedResult))
    {
    var cacheValue = JsonConvert.DeserializeObject<R>(encodedResult);
    return cacheValue;
    }

    var result = GetResults<R>(); //Call to resource access
    var encodedResult = JsonConvert.SerializeObject(result);
    await _distributedCache.SetAsync(cacheKey, Encoding.UTF8.GetBytes(encodedResult)); //Duration?

    return result;
} …
Run Code Online (Sandbox Code Playgroud)

redis-cache asp.net-core-2.1

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