草庐IT

原子钟

全部标签

redis - 在单个命令中插入原子索引重写结构

我正在创建一个重写查找结构以将ID从字符串命名空间映射到数字索引。我这样做的原因是字符串ID很大(数百字节),有数百万个,并且它们在Redis中用于许多不同的对象。将复杂的字符串ID映射到更简洁的命名空间将有助于符合常驻内存设计考虑因素。实现上述目标的一种方法是插入到某个结构中,如果要插入的键不存在,则接收回一个自动递增的整数。如果它确实存在,则只需接收回先前关联的整数即可。通过Python表达上述内容的一种非原子方式如下:defget_or_set(d,item):ifitemnotind:d[item]=len(d)returnd[item]插入操作将是并行的,因此解决方案需要是原

Redis 中的 Lua 执行 - 原子性和规模?

我在Redis中有一些键其中V是逗号分隔的子字符串V:.到目前为止,我只是通过使用Jedis(Java中的RedisAPI)中的事务来设置key。但是一个新的需求需要我对现有的key进行一些操作。所以我有两个选择:检索key、执行操作、设置key在Lua中编写操作代码并将文件连同键作为参数传递。选项2似乎更快,因为它可以节省往返时间,但我有以下考虑:如果Lua在Redis之间执行失败怎么办,比如在n个键之后。(可能是脚本或Redis的问题)。Redis保证一致性吗?在选项1中,我可以中止写入并防止出现不一致的状态。据我所知,Lua脚本将键作为参数。但是我需要操作1000万个键。Lua可

Redis 中的 Lua 执行 - 原子性和规模?

我在Redis中有一些键其中V是逗号分隔的子字符串V:.到目前为止,我只是通过使用Jedis(Java中的RedisAPI)中的事务来设置key。但是一个新的需求需要我对现有的key进行一些操作。所以我有两个选择:检索key、执行操作、设置key在Lua中编写操作代码并将文件连同键作为参数传递。选项2似乎更快,因为它可以节省往返时间,但我有以下考虑:如果Lua在Redis之间执行失败怎么办,比如在n个键之后。(可能是脚本或Redis的问题)。Redis保证一致性吗?在选项1中,我可以中止写入并防止出现不一致的状态。据我所知,Lua脚本将键作为参数。但是我需要操作1000万个键。Lua可

lua - Redis:原子获取和条件集

我想在Redis中执行原子GET,如果返回值等于某个预期值,我想执行SET,但我想将所有这些链接在一起作为一个原子操作。(我正在尝试设置一个标志,指示是否有任何进程正在将数据写入磁盘,因为可能只允许一个进程这样做。)有没有可能用Redis来完成这个?我看过关于MULTI操作的文档,但我还没有看到MULTI操作中的条件操作。其他人可以为此提供的任何建议将不胜感激! 最佳答案 您可以使用Luascripts在redis服务器本身上执行GET和set操作。.它们是原子的,也允许您添加逻辑。 关

lua - Redis:原子获取和条件集

我想在Redis中执行原子GET,如果返回值等于某个预期值,我想执行SET,但我想将所有这些链接在一起作为一个原子操作。(我正在尝试设置一个标志,指示是否有任何进程正在将数据写入磁盘,因为可能只允许一个进程这样做。)有没有可能用Redis来完成这个?我看过关于MULTI操作的文档,但我还没有看到MULTI操作中的条件操作。其他人可以为此提供的任何建议将不胜感激! 最佳答案 您可以使用Luascripts在redis服务器本身上执行GET和set操作。.它们是原子的,也允许您添加逻辑。 关

amazon-web-services - 当多个客户端尝试同时读/写一个项目时,Redis 是原子的吗?

假设我有几个构成我的API的AWSLambda函数。其中一个函数从单个Redis节点上的特定键读取特定值。业务逻辑如下:ifthekeyexists:servethevalueofthatkeytotheclientifthekeydoesnotexist:getthemostrecentitemfromdynamoDBinsertthatitemasthevalueforthatkey,andsetanexpirationtimedeletethatitemfromdynamoDB,sothatitonlygetsreadintomemoryonceServethevalueofth

amazon-web-services - 当多个客户端尝试同时读/写一个项目时,Redis 是原子的吗?

假设我有几个构成我的API的AWSLambda函数。其中一个函数从单个Redis节点上的特定键读取特定值。业务逻辑如下:ifthekeyexists:servethevalueofthatkeytotheclientifthekeydoesnotexist:getthemostrecentitemfromdynamoDBinsertthatitemasthevalueforthatkey,andsetanexpirationtimedeletethatitemfromdynamoDB,sothatitonlygetsreadintomemoryonceServethevalueofth

c# - 使用 StackExchange.Redis 从 Redis 进行原子读取和删除

有没有一种简单的方法来自动读取一个值,然后使用StackExchangec#驱动程序将其从Redis中删除?我在Redis中缓冲项目,当它们达到某个阈值时,我会检索它们,但我也想刷新我的缓冲区。我需要提及的是,我将项目存储在列表中,“刷新缓冲区”是指我想删除列表。“关键”:[项目列表] 最佳答案 您可以创建一个事务并以原子方式执行GET/DEL,如下所示:vardb=connectionMultiplexer.GetDatabase();vartran=db.CreateTransaction();vargetResult=tran

c# - 使用 StackExchange.Redis 从 Redis 进行原子读取和删除

有没有一种简单的方法来自动读取一个值,然后使用StackExchangec#驱动程序将其从Redis中删除?我在Redis中缓冲项目,当它们达到某个阈值时,我会检索它们,但我也想刷新我的缓冲区。我需要提及的是,我将项目存储在列表中,“刷新缓冲区”是指我想删除列表。“关键”:[项目列表] 最佳答案 您可以创建一个事务并以原子方式执行GET/DEL,如下所示:vardb=connectionMultiplexer.GetDatabase();vartran=db.CreateTransaction();vargetResult=tran

redis - redis HINCRBY 是原子的吗?

我想跟踪库存状态。我们目前在堆栈中使用redis。目前我们使用Postgres来做这件事。每当有库存时,我们都会增加计数,而每当库存不足时,我们都会减少计数。为了提高效率,我想尝试redisHIncrBy。这个操作是原子的吗?有什么我应该注意的陷阱吗? 最佳答案 由于Redis是单线程的,所以一切都是原子的。 关于redis-redisHINCRBY是原子的吗?,我们在StackOverflow上找到一个类似的问题: https://stackoverflow