草庐IT

lua-redis

全部标签

python - Redis pubsub 导致太多文件打开错误

我有一个使用Redis和Socket.IO的服务器。如果用户连接到socket.IO,服务器将运行一个greenlet并订阅redischannel。如果用户断开连接,greenlet将取消订阅该channel。经过大量的连接和断开连接,我在redis-cli中使用'clientlist'命令,我发现取消订阅的数量是累加的,它永远不会像其他命令那样关闭。它最终会导致“太多文件打开错误”我的代码是classListenMsgThreading(Greenlet):def__init__(self,app_eui,request_sid):Greenlet.__init__(self)se

python - 使用 Redis 实现持久化栈数据结构

我正在使用redis-py和Redis列表数据类型实现堆栈数据结构。我不清楚如何处理相应列表数据类型为空的情况。默认的Redis行为似乎是一旦列表为空,相关的键就会被删除。例如,当我在Python端弹出或清除堆栈数据结构中的所有元素时,在Redis上会出现空列表情况。基本上,我的设置是我的代码中有调用Redis列表上的操作的堆栈对象。例如,当堆栈对象的客户端执行stack.pop()时,堆栈对象然后使用redis-py在Redis中的相应列表上调用BRPOP。另外,在我的设置中,堆栈对象具有key属性,这是Redis中相关列表的键。到目前为止,我已经考虑过2种可能的解决方案:永远不要完

redis - Redis 中有类似MGET 的HASH 数据结构的命令吗?

我需要一次调用一组已知的REDIS哈希键的所有数据字段。我将MGET用于字符串键,例如:MGET键[键...]从1.0.0开始可用。时间复杂度:O(N),其中N是要检索的键的数量。返回所有指定键的值。对于每个不包含字符串值或不存在的键,返回特殊值nil。因此,操作永远不会失败。HMGET只为一个键带来所有字段。我需要很多键,所有字段都需要按键。 最佳答案 没有这样的命令,redis哈希在哈希中工作,因此HMGET在一个哈希中工作并给出该哈希中的所有字段。无法一次访问多个哈希中的所有字段。但是您可以在每个哈希上使用多个HMGET并获取

redis - redis集群中一个master和它的slave故障时,redis会删除所有的key吗

我有一个问题。假设我正在使用具有3个分片(主从)的Redis集群。我开始知道,如果一个master和它的slave同时发生故障,RedisCluster将无法继续运行。之后会发生什么。Redis集群是否也会从其他2个节点中删除所有其他键?(当它回来的时候)我们是否需要手动重启这个集群,我们能否以某种方式保留其他键值(在其他节点上)?如果我使用AzureRedis缓存,它将如何表现?提前致谢 最佳答案 1.Redis集群是否也会从其他2个节点中删除所有其他键?(当它回来时)首先,只有操作被阻止而不是集群事件,并且没有对数据做任何事情,

Redis 和 twemproxy

我最初在我的本地机器上形成了一个有3个主服务器和3个从服务器的Redis集群。现在我想使用twemproxy在Redis集群上,所以我使用了以下行(见下文)作为我的配置文件,并使用Redis集群实现了twemproxy。但我面临的问题是,在我发送到端口22122的100个key中,只有30-40个在Redis集群中注册。请帮忙!beta:listen:**.**.**.***:22122hash:fnv1a_64hash_tag:"{}"distribution:ketamaauto_eject_hosts:falsetimeout:400redis:trueservers:-**.*

php - Session 和 Laravel Queues 可以使用同一个 Redis 实例吗?

是否可以为session和队列使用相同的Redis实例(来自AWS)?在session和队列配置文件中设置相同的redis连接细节。如果Laravel框架进行彩票[2,100]session扫描,删除旧session,它是否可能会干扰作业/监听器的队列? 最佳答案 是的,它们可以用于session和队列。Laravel使用不同的Redis对象来存储session数据、缓存数据和队列数据。您应该为您的队列命名一些不同的东西。此外,redis中的延迟队列数据和立即队列数据之间存在分离。Laravelsession扫描不会触及队列数据。

redis - 是否可以只备份 Redis 的一个数据库?

我想在Redis上有2个(以后可能更多)具有不同备份要求的数据库。DB0用于临时数据,DB1用于持久数据。例如,DB0包含多个玩家的统计数据(例如,高分),我不介意丢失这些数据,因为它们会不断更新,而DB1包含每个玩家的前5名得分(我不想如果服务器崩溃则丢失)。我只想备份DB1。这可能吗?我认为AOF是我需要的,但我不想用DB0中的事务“污染”它。 最佳答案 不,这是不可能的。Redis的编号/共享数据库是穷人的命名空间,并且共享所有内容-配置、服务器进程和备份。 关于redis-是否可

php - Redis集群的配置

我在GlusterFS集群中运行Laravel,我也想设置一个Redis集群。我无法找到我应该如何配置Laravel。这是示例配置文件:'redis'=>['cluster'=>false,'default'=>['host'=>env('REDIS_HOST','localhost'),'password'=>env('REDIS_PASSWORD',null),'port'=>env('REDIS_PORT',6379),'database'=>0,],],如何添加多个服务器? 最佳答案 我假设您只是在那里添加另一个服务器并更新

ruby-on-rails - Redis模型缓存,什么时候调用items_helper中的fetch_items?

我正在尝试将Redis用作我的应用程序和PostgreSQL数据库之间的缓存层。请看下面,我的路线,items_controller,items_helper文件。我对应该如何调用items_helper中的#fetch_items感到困惑。目前,我正在从我所有的Controller操作中渲染jbuilder模板。我需要保留此功能。路线Rails.application.routes.drawdoresources:usersresources:itemsget'users/:id/sold_items'=>'users#sold_items'get'categories/:id/av

ruby-on-rails - Redis 和 Resque 是否需要从与应用程序相同的目录启动? ( rails )

Redis和Resque是否需要从与我计划运行的应用相同的目录启动?通常,在使用unicorn启动我的应用程序之前,我会同时启动redis-server和TERM_CHILD=1QUEUES=*rakeresque:work。但老实说,我仍在研究Redis和Resque。所以我想知道的是:Redis和Resque(如上)是否应该从与我正在运行的应用程序相同的目录启动?或者它们可以从我mac上的任何目录启动吗? 最佳答案 Redis可以从任何目录启动,因为它不依赖于您的代码库。Resque应该从您的应用程序根目录启动,因为它会根据您可