草庐IT

redis-test

全部标签

java - 如何在 Redis 中缓存表

如何在Redis中缓存整个表,要么为一个键缓存整个表,要么为每个行缓存一个不同的键。如果我们为单个键缓存整个表,即使每次都将返回整个表我需要一条记录作为我的输出。我对Redis缓存很陌生,不清楚如何缓存整个表。 最佳答案 你应该使用RedisHash,因此您可以通过其键对行进行索引并在O(1)中检索元素。例如使用redis-cli(可以在http://try.redis.io中尝试)将行元素插入名为“table”的键中的散列:>HSETtable100"serializedrowwithid100"(integer)0>HSETta

redis - 获取排序集中成员的左侧和右侧

我需要能够获取排序集中给定成员左侧和右侧的成员。例如:["red","green","blue","yellow","black"]如果我要求“蓝色”左侧和右侧的成员,我需要返回“绿色”和“黄色”。我可以这样做的一种方法是使用zrank获取蓝色(2)的成员(我们称它为x)的索引,然后使用zrange和x-1的start和x+1的stop。问题:它不是原子的。如果在两个步骤(zrank和zrange)之间删除了索引有原子的方式来做到这一点吗? 最佳答案 使用LUA脚本。像这样的东西:localrank=redis.call('zran

redis - redis中通知系统的架构

我有一个用户通知系统。可以通过id向用户发送个人通知或向所有用户发送广播消息(例如,关于新功能)。现在它被实现为数据库中的单个表,其结构如下和操作:为用户插入消息为用户Y获取X消息以显示并从数据库中删除它们(不再显示第二次)为每个用户插入相同的消息(广播消息)删除所有超过N天的广播消息(为了不保留长时间未登录用户的广播消息,但不删除个人消息)现在我正在考虑将整个消息传递系统从MySQL迁移到Redis,但我在选择有效的Redis数据结构时遇到了问题。我有一个想法为每个用户创建一个列表/一组消息。个人消息传递没问题,但如果我有广播消息,我需要遍历所有列表并在其中放置一条消息。同样的问题是

mysql - 每 15 分钟刷新一次 Azure Redis 缓存

我需要每15分钟将数据从MySQL数据库同步到Redis缓存,以便缓存为最新数据。我正在使用ubuntu来托管(Node.js)webservcies。因此,每次调用restapi时,它都需要从缓存中获取数据并提供服务。所以现在我需要写一个后台作业来将MySQL数据同步到缓存内存。如果我需要编写后台作业,我可以在node.js中编写并同步它并使用crontab命令在Ubuntu中作为后台作业运行。 最佳答案 是的。您可以编写一个nodejs脚本并通过crontab命令运行它以将数据从MySQL同步到Redis。根据我的经验,您需要下

redis - Redis 中可以嵌套 GET 吗?

基本设置是这样的:SETfoobarSETbazfoo在一条语句中可以实现这样的事情吗?GETGETbaz"bar"谢谢 最佳答案 虽然您不能使用Redis字符串来做到这一点,但如果您保留一个包含所有“键”和“值”的哈希值,那是可行的。例如:HSETminiredisfoobarHSETminiredisbazfoo现在,要获取商品,您需要Lua,但由于所有内容都捆绑在单个数据结构中,因此它将是集群安全的(以可扩展性为代价)。EVAL"returnredis.call('HGET',KEYS[1],redis.call('HGET'

node.js - 针对 SAVE 命令强制执行 Redis 快照/持久化?

我正在为Node.js使用ioredis库-我想知道如何向Redis发送信号以强制持久化。我很难找到如何做到这一点。SAVE命令似乎可以执行此操作,但我无法验证。谁能确定SAVE命令是否会告诉Redis根据命令将内存中的所有内容写入磁盘?thisarticlehintsatit:https://community.nodebb.org/topic/932/redis-useful-infosodoesthisone:http://redis.io/commands/save 最佳答案 答案是肯定的,SAVE将为您完成这项工作,但它具

redis - 超过Redis maxmemory

我正在我的本地机器上试验redis3.0逐出策略——我想限制最大内存,这样redis就不能消耗超过20兆字节。我的配置:logleveldebugmaxmemory20mbmaxmemory-policynoeviction从这里开始,我使用我的配置运行redis-server,然后是redis-benchmark-q-n100000-c50-P12在内存中存储一​​堆key。这使得我的Mac上redis的内存使用量为21MB,超过指定限制1MB。如果我再次运行它,会消耗更多。根据redisdocumentation这应该由我的maxmemory指令和逐出策略控制,在后续写入时会抛出错

python - 在 Redis 上分页 "KEYS"命令

我需要redis中的所有键匹配给定的模式:*_xyz_*,然后我通过以下python代码获取它们的所有值:-defget_keys(self,pattern):self.r_prod.keys(pattern);keys=self.r_prod.execute();foriinkeys[0]:self.r_prod.get(i);returnself.r_prod.execute();现在keys非常大,可以将所有内容保存在内存中。所以,我想知道是否有任何方法可以对特定限制的键进行分页? 最佳答案 使用SCAN命令:>>>impor

redis - 如何使 Redis 过期事件只发送给一个客户端

如果两个相同的客户端连接到一个redis服务器,并在一个键过期事件上注册相同的监听器,我可以让redis服务器只发送一个过期事件给一个客户端,而不是两个客户端吗 最佳答案 不,你不能用RedisKeyspaceNotifications做到这一点.KeyspaceNotifications只是Pub/Sub的一个特例.Pub/Sub不允许您这样做。 关于redis-如何使Redis过期事件只发送给一个客户端,我们在StackOverflow上找到一个类似的问题:

python - redis管道execute()方法什么时候被阻塞?

我实现了如下所示的Redis包装器类。importredisimportthreadingimporttimeclassIntervalRedis(object):@classmethoddefinit(cls,interval=0.1,host='localhost',port=6379,db=0):cls._r=redis.Redis(host=host,port=port,db=db)cls.r=cls._r.pipeline()cls.t=threading.Thread(target=cls._intervalExecute)cls.interval=intervalcls.