草庐IT

refit_keys

全部标签

redis - 仅当 Redis 存在 key 时如何进行 HSET?

我想运行HSET命令,但前提是key存在。类似于HSETNX除了exists而不是notexists我读过关于可能使用WATCH或其他东西的信息,但到目前为止我还不能真正弄明白。我会很感激在正确的方向轻推。我唯一看到的就是这个,但考虑到这些甚至不是有效的Redis命令,我看不出它是如何工作的。HSETifkeyexist此外,在阅读了我关注的WATCH之后,因为我不想在收到另一个请求时中止交易。我基本上是在尝试HGETALL并在为HSET发出第二个命令后立即说它已被读取一次。之后,我希望所有后续请求都知道它已被读取。问题是,当我在一个不存在的键上调用HSET时,它不仅会失败,还会在re

redis - 仅当 Redis 存在 key 时如何进行 HSET?

我想运行HSET命令,但前提是key存在。类似于HSETNX除了exists而不是notexists我读过关于可能使用WATCH或其他东西的信息,但到目前为止我还不能真正弄明白。我会很感激在正确的方向轻推。我唯一看到的就是这个,但考虑到这些甚至不是有效的Redis命令,我看不出它是如何工作的。HSETifkeyexist此外,在阅读了我关注的WATCH之后,因为我不想在收到另一个请求时中止交易。我基本上是在尝试HGETALL并在为HSET发出第二个命令后立即说它已被读取一次。之后,我希望所有后续请求都知道它已被读取。问题是,当我在一个不存在的键上调用HSET时,它不仅会失败,还会在re

node.js - 使用 node_redis 时如何访问传递给 hgetall 的 key ?

我有一个node.js(express)应用程序,我正在使用node_redis从我的redis数据库中获取所有用户。redis=require"redis"client=redis.createClient()client.smembers"users",(err,user_ids)->results=newArray()foruser_idinuser_idsclient.hgetalluser_id,(err,items)->results.pushitemsifuser_ids.lengthisresults.lengthres.jsonresults这会产生以下结果:[{"n

node.js - 使用 node_redis 时如何访问传递给 hgetall 的 key ?

我有一个node.js(express)应用程序,我正在使用node_redis从我的redis数据库中获取所有用户。redis=require"redis"client=redis.createClient()client.smembers"users",(err,user_ids)->results=newArray()foruser_idinuser_idsclient.hgetalluser_id,(err,items)->results.pushitemsifuser_ids.lengthisresults.lengthres.jsonresults这会产生以下结果:[{"n

asp.net-mvc - 阻止访问 Redis key (ServiceStack)

我正在尝试使用ServiceStackRedis客户端实现我认为是非常常见的缓存场景,但我很难找到一个很好的例子。在ASP.NETMVC应用程序中,我们对外部Web服务进行相对长时间运行(和计量)的调用,并将结果缓存一段时间。在缓存实现中,希望在Web服务调用完成之前阻止对该键的额外请求,以避免额外的(昂贵的)调用。那么,实现键级锁的最佳方式是什么?Redis开箱即用吗?ServiceStack的IRedisClient.AcquireLock非常适合这个,或者如果我们不处理分布式锁,它会不会太过分了?或者我最好自己实现锁定,就像描述的那样here?提前致谢!

asp.net-mvc - 阻止访问 Redis key (ServiceStack)

我正在尝试使用ServiceStackRedis客户端实现我认为是非常常见的缓存场景,但我很难找到一个很好的例子。在ASP.NETMVC应用程序中,我们对外部Web服务进行相对长时间运行(和计量)的调用,并将结果缓存一段时间。在缓存实现中,希望在Web服务调用完成之前阻止对该键的额外请求,以避免额外的(昂贵的)调用。那么,实现键级锁的最佳方式是什么?Redis开箱即用吗?ServiceStack的IRedisClient.AcquireLock非常适合这个,或者如果我们不处理分布式锁,它会不会太过分了?或者我最好自己实现锁定,就像描述的那样here?提前致谢!

Redis:用于大型 key 集的高效服务器集群

我有一组非常大的键,200M键,具有小值,SELECT。根据我的计算,我似乎要耗尽内存。我想我需要超过4TB的内存来处理这种情况!我有哪些选择?首先,我的计算基于10000个具有100字节值的键占用220MB的RAM(这是我找到的一个表)。所以简单地输入(2*10^8/10^4)*220MB=4.4TB。如果我的计算看起来正确,我有哪些选择?我在不同的帖子上读到RedisVM不再是一个选项。我可以使用Redis集群吗?这似乎仍然需要太多服务器才能实用。我知道我可以切换到另一个数据库,但我希望这是最后的选择。 最佳答案 首先,不推荐使

Redis:用于大型 key 集的高效服务器集群

我有一组非常大的键,200M键,具有小值,SELECT。根据我的计算,我似乎要耗尽内存。我想我需要超过4TB的内存来处理这种情况!我有哪些选择?首先,我的计算基于10000个具有100字节值的键占用220MB的RAM(这是我找到的一个表)。所以简单地输入(2*10^8/10^4)*220MB=4.4TB。如果我的计算看起来正确,我有哪些选择?我在不同的帖子上读到RedisVM不再是一个选项。我可以使用Redis集群吗?这似乎仍然需要太多服务器才能实用。我知道我可以切换到另一个数据库,但我希望这是最后的选择。 最佳答案 首先,不推荐使

redis - 这个处理 key 过期竞争条件的redis lua脚本是纯函数吗?

我一直在使用redis来跟踪分布式系统中外部api的速率限制。我决定为存在限制的每条路线创建一个key。key的值是在限制重置之前我仍然可以发出多少请求。并且通过将key的TTL设置为限制重置的时间来进行重置。为此,我编写了以下lua脚本:ifredis.call("EXISTS",KEYS[1])==1thenlocalremaining=redis.call("DECR",KEYS[1])ifremaining0then--[[--Wewouldexceedthelimitifweweretodoacallnow,solet'ssendbackthatalimitexists(1)

redis - 这个处理 key 过期竞争条件的redis lua脚本是纯函数吗?

我一直在使用redis来跟踪分布式系统中外部api的速率限制。我决定为存在限制的每条路线创建一个key。key的值是在限制重置之前我仍然可以发出多少请求。并且通过将key的TTL设置为限制重置的时间来进行重置。为此,我编写了以下lua脚本:ifredis.call("EXISTS",KEYS[1])==1thenlocalremaining=redis.call("DECR",KEYS[1])ifremaining0then--[[--Wewouldexceedthelimitifweweretodoacallnow,solet'ssendbackthatalimitexists(1)