django from django_redis import get_redis_connection后如何为该redis添加分布式锁呢?

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了django from django_redis import get_redis_connection后如何为该redis添加分布式锁呢?相关的知识,希望对你有一定的参考价值。

django-redis文档中提到 可使用with cache.lock("somekey"): do_some_thing()来为cache加锁,但这对get_redis_connection有效吗?

参考技术A 有效的,不过如果使用redis,他内部是单线程实现,大部分操作不加锁,也不会有并发问题,是安全的。

AWS Elastic Beanstalk EC2 与 Redis - 无法连接 - Django_Redis

【中文标题】AWS Elastic Beanstalk EC2 与 Redis - 无法连接 - Django_Redis【英文标题】:AWS Elastic Beanstalk EC2 With Redis - Cannot Connect - Django_Redis 【发布时间】:2018-09-07 15:29:47 【问题描述】:

您好,我正在尝试连接我的 Django 应用程序以使用 Redis ElastiCache,但无法使用 AWS 连接它。该应用程序使用 Elastic Beanstalk 发布到 EC2 实例,并且当我不尝试连接到我的 Redis 缓存时它运行完美。

从这里的帖子 (Setting up ElastiCache Redis with Elastic BeanStalk + Django) 我创建了 ElastiCache 以不使用集群,并且我已将 EC2 实例和 Redis 缓存设置为使用相同的安全组。

这是我的缓存在 settings.py 中的配置方式。

CACHES = 
'default': 
    'BACKEND': 'django_redis.cache.RedisCache',
    'LOCATION': 'redis://my-cache.kjshd.0001.use2.cache.amazonaws.com:6379/',
    'OPTIONS': 
        'CLIENT_CLASS': 'django_redis.client.DefaultClient'
    
  

我错过了什么?我的缓存或 AWS 中的某处是否需要更改其他设置才能打开通信?这个配置看起来好吗?我以前在 Azure 中使用 Redis,并且此配置有效,但现在需要迁移到 AWS。有没有办法测试我的 EC2 实例是否可以连接到 Redis?我可以通过 SSH 连接到服务器,但我不确定连接后我会做什么。

感谢您的帮助。

【问题讨论】:

【参考方案1】:

设置安全组后,我发现需要更改安全组的入站设置才能连接到我的 ElastiCache Redis 节点。

在此处找到文档。

https://docs.aws.amazon.com/AmazonElastiCache/latest/UserGuide/GettingStarted.AuthorizeAccess.html#GettingStarted.AuthorizeAccess.VPC

【讨论】:

以上是关于django from django_redis import get_redis_connection后如何为该redis添加分布式锁呢?的主要内容,如果未能解决你的问题,请参考以下文章

获取用户浏览历史记录(django_redis)

AWS Elastic Beanstalk EC2 与 Redis - 无法连接 - Django_Redis

Django Redis

Django连接redis

Django使用redis

django使用redis