无法使用stackexchange.redis连接到redis群集
我找到了一个非常简单的代码块,以测试我是否能够连接到Elasticache上的redis cluster 这是代码: using StackExchange.Redis; Console.WriteLine("Hello, World!"); ConnectionMultiplexer redis = ConnectionMultiplexer.Connect("xxxxx.xxxxx.ng.0001.euw2.cache.amazonaws.com:6379,connectTimeout=30000,responseTimeout=30000,ssl=true,sslProtocols=tls12"); IDatabase db = redis.GetDatabase(); string value = "abcdefg"; db.StringSet("mykey", value); string value1 = db.StringGet("mykey"); Con
8 2024-04-26
编程技术问答社区
如何在c#中从Lambda中使用AWS Elasticache
我已经搜索和搜索过,无法找到上述所有内容的教程/示例/演练! 我正在尝试在C#中编写Lambda功能,该功能利用一些Elasticache存储. 我可以从C#找到ElasticAcce访问的示例,但是我发现的每个引用的库都不会使用.netcore 1.0运行,这就是Lambda使用的! 有人设法这样做吗? 非常感谢. 解决方案 是的,这是可能的,您是对的,有关此主题的信息很少.关键是在同一VPC中托管您的Elasticache实例和Lambda功能.从高水平来看,您需要: 设置至少两个子网组,一个路由表和一个安全组的VPC. 创建一个指向步骤1中创建的两个子网组的弹性ache子网组. 创建您的Elasticache实例,指向第2步中创建的Elasticache子网组. 创建您的C#lambda功能,并使用第三方库连接到Elasticache.对于Redis,我使用.NET Core 1.0成功使用了STACKEXCHANGE.REDIS 1.2.1.最新版本将不适用于
10 2024-04-22
编程技术问答社区
通过C#使用ElastiCache
我试图在我的.NET应用程序中设置Elastic Cache(Memcached Engine)并通过Memcache C#客户端API" Enyim". 我是AWS的新手,面临一些问题.我有几个问题: - 问题1:我可以从本地计算机访问我的高速缓存节点吗? 问题2:设置完整的AWS弹性缓存实例的过程是什么?正确的 如果我错了: - 设置VPC(默认情况下) 在EC2中设置安全组(默认情况下) 与同一VPC一样,设置缓存群集. 现在如何使用相同的缓存群? 我已经在Local上设置了Memcache引擎,并且通过Enyim正在运行相同的代码,但是我无法为Elasticache节点实例运行相同的(GET/SET)代码. 解决方案 就问题1而言,我敢肯定,当使用弹性缓存的redis风味时,您无法(根据AWS将无法)从AWS内的任何地方访问缓存. . 出于调试目的,这将是一个不错的选择,但是在生产模式下,从外部AWS访问缓存将引入足够的潜伏期来击败您
14 2024-04-22
编程技术问答社区
启用群集模式后,当批量上传到 Elasticache 时,redis-cli -pipe 会产生 MOVED 错误
我正在尝试使用redis-cli- pipe将一些命令上传到我的AWS Elasticache以进行REDIS群集.这些命令来自通过自定义awk命令解析文件,该命令有助于生成一些HSET命令. awk命令在自定义壳脚本中.当我的redis服务器的Elasticache禁用了群集模式时,执行以下操作就像魅力一样: sh script_containing_awk.sh $FILE_TO_PARSE | redis-cli -h -p --tls --cacert --pipe 由于内部项目的要求,启用了REDIS服务器的Elasticache已重新创建群集模式,因此我将-c flag添加到上面的命令中以指定. . 尝试使用启用cluster模式的Redis Server使用Elasticache时,会看到以下结果: 我可以通过配置终点连接到群集没有问题! 单个命令上传工作(即:redis
6 2024-04-05
编程技术问答社区
Boto3获得Elasticache ARN
我正在尝试自动化AWS中服务的创建和破坏. 破坏是基于标签的,以便使用boto3.client('elasticache').list_tags_for_resource() 我需要提供它的缓存群集,它不是描述方法boto3.client('elasticache').describe_cache_clusters()的一部分 像其他资源一样(例如,DynamoDB或RDS) 是否有不同的方法来获取ARN(手动组装除外)或另一种方法可以迭代现有的高速缓存群体并检查标签? 解决方案 基于 arn:aws:Elasticache:区域:account-id:cluster:resource-name 示例: arn:aws:Elasticache:us-west-2:0123456789:群集:mycluster 或 arn:aws:Elasticache:us-west-2:0123456789:快照:mysnapshot 参考链接: http
12 2024-04-03
编程技术问答社区
拒绝Lambda Elasticache redis连接
我正在尝试连接到lambda的Elasticache redis实例. Lambda和Elasticache在同一VPC上,Lambda的执行角色已获得Elasticache的所有许可.但是我仍然会得到eConnefused. const redis = require("redis"); const AWS = require("aws-sdk"); const apig = new AWS.ApiGatewayManagementApi({ endpoint: process.env.ApiGatewayEndpoint, }); exports.handler = async (event, context) => { const redisClient = redis.createClient({ host: "botgo-cache.fhvwf2.ng.0001.aps1.cache.amazonaws.com", port: "6379",
20 2024-03-22
编程技术问答社区
缓存lambda函数的结果
我们正在开发无服务器应用程序.该应用程序具有"用户","用户","在不同的"资源"上具有"权限"的"组".要检查用户是否有权对资源采取措施,我们将需要进行一些计算. (我们使用的是DynamoDB) 基本上,在每个操作之前,我们需要检查用户是否有权在给定资源上执行该特定操作.我当时认为我们可以拥有一个lambda函数,可以从缓存中检查一下,如果不是在缓存中,则命中DB,进行计算,在缓存中写入并返回. 在这里最好使用哪种缓存?我们将从后端本身内部命名. API网关是否静止不动? 为此目的,弹性缓存怎么样?我们可以不需要配置VPC而使用它?我们正在尝试不必在应用程序中使用VPC. 任何更好的方法? 解决方案 它们都是不错的选择! Elasticache是​​为缓存数据而设计的. API网关也可以缓存结果. 一种替代方法是通过使用全局变量来保持数据"内部" AWS lambda函数.下次调用lambda函数时,这些值将保持存在,因此您可以缓存结
在Lambda函数中关闭DAX客户端
我有一个node.js函数,我想将其部署为AWS lambda函数.我注意到,当我使用redis Elasticache时,我必须关闭与redis.createclient打开的连接,否则lambda功能时间.我只需调用客户端的Quit()方法来做到这一点.如果我在发出lambda回调之前这样做,则lambda功能会按预期结束.如果我不这样做,则lambda在我设置的任何超时间隔中发挥作用.在测试环境中,我有一个在缓存上操作的lambda函数,并以30毫秒为单位终止.如果没有呼叫redis client Quit()方法,则在1分钟超时之前不会终止相同的lambda函数.我不确定,但是我认为lambda函数的行为是这样的,因为它不知道该函数是否已完成(即使在回调后),因为REDIS连接仍然处于活动状态. 我并不是所有人,因为它很容易调用Quit()方法.我遇到的问题是,当我尝试使用DynamoDB DAX客户端做类似的事情时.我可以通过VPC端点直接使lambda函数访问Dynam
AWS VPC Lambda功能不断失去互联网接入
希望有人可以在这个问题上帮助我启发我.我目前正在使用Lambda功能,该功能利用云手表调度程序检查各种设备,并且它使用Elasticache在读取上维护一个简单的数据库. 我的问题是,晚上关闭测试后.我在早上启动了Lambda功能,并且该功能无法访问互联网.由函数计时表示.经过几个小时的路线和我的VPC设置,经过几个小时后,它将再次开始工作.只是为了打破第二天.有时,它仅使用NAT实例与NAT网关一起使用.我通常对VPC设置的更改很小.我使用的设置模式是一个公共,一间私人和一间Natgateway. 更新:昨天无法整天从我的VPC访问Internet之后,今天运行良好.我做了什么不同,什么都没有.当它停止再次运行时,可能是今天晚些时候,我会打电话给AWS,看看我们是否可以陷入困境. 解决方案 我刚刚解决了我的lambdas的同一问题 - 问题是我将lambda设置为所有子网(我有2个私人和1个公共).本知识库文章指定您应该仅在私人子网中运行它们,这是有道理的:
14 2024-03-22
编程技术问答社区
将现有的AWS Lambda和API网关导出至Cloudformation模板
如何将现有的配置和测试基础结构导出(包括AWS Lambda功能,API网关,Elasticache簇,CloudWatch规则)到云形式模板? 我知道CloudFormer工具,但它支持有限数量的AWS服务(Amazon VPC,DynamoDB等),并且不支持我们使用的某些服务.在我的情况下,我可以使用哪些工具和方法来生成云形式模板? 解决方案 部分解决方案:有能力将lambda函数导出到AWS SAM文件 ,然后 我们将获取YAML文件,将您的lambda函数描述为'aws :: serverless :: function'.但是,几乎没有什么事情 - 我们无法用这种方法导出兰伯达别名.另外,这无助于API网关导出. 其他解决方案 这里. 以前2允许您从 您在AWS帐户中的现有资源.通过制作 使用AWS JavaScript SDK的相关呼叫,以前2将扫描 您的基础架构并为您介绍您的资源列表 选择要生成的输出. 我只是用它将API网关
无法从我的vpc配置的lambda函数连接dynamo Db
我需要从单个lambda函数连接弹性缓存和发电机DB.我的代码是 exports.handler = (event, context, callback) => { var redis = require("redis"); var client; function connectRedisClient() { client = redis.createClient(6379, "dgdfgdfgdfgdfgdfgfd.use1.cache.amazonaws.com", { no_ready_check: true }); } connectRedisClient(); client.set('sampleKey', 'Hello World', redis.print); console.log("set worked"); client.quit(); var AWS = requ
2 2024-03-22
编程技术问答社区
CloudFormation模板中的Elasticache复制组ID
使用云形式模板时,如何设置Redis ReplicationGroup ID?在 cli 您可以做到这很容易.我的最终目标是让一个带有3个群集成员的Redis复制组,但我想选择名称而不是AWS为我设置唯一名称. 这是我的模板的片段: "Resources": { "mqpReplicationGroup": { "Type": "AWS::ElastiCache::ReplicationGroup", "Properties": { "CacheNodeType": { "Ref": "CacheNodeType" }, "CacheSubnetGroupName": { "Ref": "CacheSubnets" }, "ReplicationGroupDescription": "Redis Replication G
22 2024-03-22
编程技术问答社区
AWS Elasticache Vs API Gateway Cache
我是使用AWS lambda的无服务器体系结构的新手,并且仍在尝试弄清楚某些作品如何结合在一起.我已经将网站从EC2(React Client和Node API)转换为无服务器体系结构. React客户端现在使用S3静态Web托管,并且API已转换为使用AWS Lambda和API网关. 在我以前的实施中,我将Redis用作缓存其他第三方API的缓存响应. API网关可以选择启用缓存,但我也将Elasticache视为一种选择.它们的价格都相当,而API网关高速缓存稍微昂贵. 尝试使用Elasticache时遇到的一个问题是它需要在VPC中运行,我再也无法召集我的第三方API. 我想知道使用另一个有任何好处吗?目前,我的缓存的主要目的是减少对API的请求,但可能会随着时间的推移而改变.让lambda专门检查Elasticache,以查看是否存储了一个值,并且如果不触发另一个lambda来从API中检索信息,或者甚至可能是可能的,这是有意义的.还是对于我的用例,AP
用Spring Data为AWS ElastiCache(Redis)提供原子增量
我们有多个在ELB(负载平衡器)后面部署的同一应用程序的实例.每当完成某项工作时,我们都会计算一些元素,然后想增加计数器的价值. 我们使用Elasticache将这些指标保存在内存中.我们已经将其设置为REDIS实例集群. 我很难理解如何与Elasticache正确相互作用,因此计数器永远不会错过任何增量(即原子操作).我知道INCRBY似乎是必经之路,但是我不确定如何设置弹簧数据,以便我可以向我的Master发出redis命令.实际上,我们的方法甚至都不是线程安全,但这是代码: @Slf4j @Service @RequiredArgsConstructor public class MetricServiceImpl implements MetricService { private final IntegerMetricRepository integerMetricRepository; private static final BigIn
Terraform错误:" replication_group_id":与Engine_version发生冲突. (redis)
我正在尝试使用redis 创建aws_elasticache_replication_group resource "aws_elasticache_cluster" "encryption-at-rest" { count = 1 cluster_id = "${var.namespace}-${var.environment}-encryption-at-rest" engine = "redis" engine_version = var.engine_version node_type = var.node_type num_cache_nodes = 1 port = var.redis_port #az_mode = var.az_mode replication_group_id = aws_elasticache_replica
从VPC内的EC2连接到ElastiCache(VPC外)实例
我们有大量的应用程序,这些应用程序使用一个位于VPC(经典实例)之外的ElasticCache实例(REDIS).某些应用程序位于VPC中,有些应用在VPC(经典实例)之外.我们如何将所有应用程序连接到缓存? 我们没有问题将VPC以外的应用程序连接到缓存,因为缓存也位于VPC之外 VPC内部无法连接到缓存的少数应用程序. 谢谢. 解决方案 无法直接从VPC实例访问经典群集.解决方法将在经典实例上配置NAT. NAT需要具有简单的TCP代理 YourIP=1.2.3.4 YourPort=80 TargetIP=2.3.4.5 TargetPort=22 iptables -t nat -A PREROUTING --dst $YourIP -p tcp --dport $YourPort -j DNAT \ --to-destination $TargetIP:$TargetPort iptables -t nat -A POSTROUTING -p t
20 2024-01-26
编程技术问答社区
如何将 elasticache redis 集群设置为从属集群?
根据Elasticache手册,从属命令限制为AWS缓存节点. 无论如何是否有将现有的Elasticache节点设置为从属,以便我可以将现有的redis群集迁移到AWS? 解决方案 当您发现时,相反,要迁移您的redis群集,应该使用然后,您应该将此快照文件上传到S3,并允许弹性搜索访问该文件: 授予Elasticache阅读访问对Amazon S3 的快照的访问权限 登录AWS管理控制台并打开Amazon S3控制台 at https://console.aws.amazon.com/s3/. 单击所有存储桶,然后单击Amazon S3存储桶的名称 其中包含您的.RDB文件. 单击包含.rdb文件的文件夹的名称. 单击.rdb文件的名称,单击"动作"下拉菜单, 然后选择属性. 单击权限,然后单击添加更多权限. 在"受赠者"框中,输入此电子邮件地址: aws-scs-s3-readonly@amazon.com. 对于以下区
16 2024-01-26
编程技术问答社区
如何在AWS Elasticache中测试redis的性能?
我想测试在AWS Elasticache中运行的REDIS性能. 我已经尝试了redis-benchmark工具来在本地机器中对其进行测试. 我需要在Elasticache中进行测试,但我相信没有终端访问或redis-benchmark实用工具. 如何在AWS Elasticache中为redis进行redis-benchmark测试? 还有其他方法可以测试Elasticache中REDIS的性能吗? 解决方案 Redis-benchmark redis安装中包含工具.您可能要做的是;从EC2连接到REDIS群集.这个 tutorial 显示了连接它的步骤从您的EC2实例. 然后您可以这样连接到您的实例; redis-cli -h mycachecluster.eaogs8.0001.usw2.cache.amazonaws.com -p 6379 就像连接到群集一样,您可以使用 redis-benchmark -h mycachecluster
18 2024-01-26
编程技术问答社区
连接ElasticCache Redis Cache节点的Java客户端
是否有一种方法可以通过提供节点端点来连接到Redis Cache cluster节点? 我应该使用哪个库? 另外,我应该使用哪种API来存储和检索高速缓存的内容? 解决方案 在简称 中 这取决于. 说明 您可以连接到REDIS群集节点,而无需命令分配到其他节点.您应该确保访问由节点处理的键.如果要连接到从属,请确保您的连接处于READONLY模式,否则将以MOVED. 响应. 有很多基于Java的Redis客户端: 低水平 jedis - SynChronous API lettuce - async和sync api srp jredis 高级 redisson ...等等.您可以在 http://redis.io/clients#java/a 您应该接受哪个客户? 好吧,这主要取决于您的要求.如果您需要"只是客户"来进行短暂的连接,那么吉迪斯也许是您的正确选择.如果您需要灵活性,异步响应和自定义编解码器,
32 2024-01-26
编程技术问答社区
Redis 6能否利用多核CPU的优势?
以来,由于同样,在AWS Elasticache上使用> 2 VCPU的实例类型是有意义的吗? 解决方案 基于发行说明我猜是. 这是其中的一块小信息: 尽管Redis在高性能方面享有当之无愧的声誉,但其单线架构在工程师中引起了争议,他们想知道Redis是否会更快. REDIS 6环在一个新时代:虽然保留了核心单线程数据访问界面,但I/O现在已穿线. 通过将阅读和写入的时间委托给I/O插座上的其他线程,Redis过程可以将更多的周期用于操纵,存储和检索数据,从而提高整体性能.这种改进保留了以前版本的交易特性,因此您不必重新考虑应用程序即可利用性能提高.同样,现在可以将Redis的单线线程Del命令配置为以自REDIS版本4以来可用的多线程Unlink命令的表现. . 局部变量的性能几乎总是无与伦比的,最后,即使是像REDIS一样高性能的数据库也比从堆栈或堆中访问某些东西要慢得多. REDIS 6为复杂的客户库库添加了一种新技术,以实现客户端缓存层,以将数据子集存
14 2024-01-26
编程技术问答社区