草庐IT

lua - 如何在 Redis 中实现多用户安全的线性同余生成器?

我使用线性同余生成器(http://en.wikipedia.org/wiki/Linear_congruential_generator)生成向用户公开的ID。nextID=(a*LastID+c)%m现在我想在Redis中实现LCG。这是问题所在:获取当前ID并在Redis之外生成下一个ID不是多用户安全的。Redis有2个可用于简单计数器的命令:INCRBY和INCRBYFLOAT,但不幸的是Redis本身不支持模运算。目前我看到的唯一方法是使用EVAL命令并编写一些lua脚本。更新1:一些lua模拟INCRBYLCG_Value((LCG_Value*a+c)%m)-LCG_V

lua - 如何在 Redis 中实现多用户安全的线性同余生成器?

我使用线性同余生成器(http://en.wikipedia.org/wiki/Linear_congruential_generator)生成向用户公开的ID。nextID=(a*LastID+c)%m现在我想在Redis中实现LCG。这是问题所在:获取当前ID并在Redis之外生成下一个ID不是多用户安全的。Redis有2个可用于简单计数器的命令:INCRBY和INCRBYFLOAT,但不幸的是Redis本身不支持模运算。目前我看到的唯一方法是使用EVAL命令并编写一些lua脚本。更新1:一些lua模拟INCRBYLCG_Value((LCG_Value*a+c)%m)-LCG_V

performance - Redis 中的 Lua 脚本 : HMGET with table?

是否存在将表传递给单个redis.call('HMGET',[key],...)的任何类似行为,而不是遍历表并运行多个>redis.call,一个接一个?我在Redis中有一个散列键,它表示具有100000个条目的Fenwick树。它有连续的整数索引和浮点值:127.0.0.1:6379[1]>hmgetfenwick1234...1)"0.75865226460558"2)"1.0234678955857959"3)"0.057608450324092272"4)"1.1002286486794375"...我正在尝试使用Redis的内置Lua解释器找到一些随机条目entryid的总

performance - Redis 中的 Lua 脚本 : HMGET with table?

是否存在将表传递给单个redis.call('HMGET',[key],...)的任何类似行为,而不是遍历表并运行多个>redis.call,一个接一个?我在Redis中有一个散列键,它表示具有100000个条目的Fenwick树。它有连续的整数索引和浮点值:127.0.0.1:6379[1]>hmgetfenwick1234...1)"0.75865226460558"2)"1.0234678955857959"3)"0.057608450324092272"4)"1.1002286486794375"...我正在尝试使用Redis的内置Lua解释器找到一些随机条目entryid的总

node.js - 是否可以在redis中调用其他lua脚本中定义的lua函数?

我尝试声明一个不带local关键字的函数,然后从另一个脚本调用该函数,但是当我运行该命令时出现错误。test=function()return'test'end#fromsomeotherscripttest()编辑:我不敢相信我仍然没有答案。我将包括我的设置的更多细节。我正在使用带有redis-scripto包的Node将脚本加载到redis中。这是一个例子。varScripto=require('redis-scripto');varscriptManager=newScripto(redis);scriptManager.loadFromDir('./lua_scripts');

node.js - 是否可以在redis中调用其他lua脚本中定义的lua函数?

我尝试声明一个不带local关键字的函数,然后从另一个脚本调用该函数,但是当我运行该命令时出现错误。test=function()return'test'end#fromsomeotherscripttest()编辑:我不敢相信我仍然没有答案。我将包括我的设置的更多细节。我正在使用带有redis-scripto包的Node将脚本加载到redis中。这是一个例子。varScripto=require('redis-scripto');varscriptManager=newScripto(redis);scriptManager.loadFromDir('./lua_scripts');

从 Redis HGETALL 调用返回高效字典的 Lua 脚本

我需要从Lua脚本中使用RedisHMGET并在以下代码中提取特定值。但是redis.call('HMGET',table_key,hkey1,hkey2,...)返回一个平面数组{hkey1,val1,hkey2,val2,...}要按键提取值,我写道:localfunctionflat_map_get(flat_map,hash_key)locali=1whileflat_map[i]doifflat_map[i]==hash_keythenreturnflat_map[i+1]endi=i+2endend当然,随着使用量的增长,多次调用此函数会导致性能下降。从HMGET返回的平面

从 Redis HGETALL 调用返回高效字典的 Lua 脚本

我需要从Lua脚本中使用RedisHMGET并在以下代码中提取特定值。但是redis.call('HMGET',table_key,hkey1,hkey2,...)返回一个平面数组{hkey1,val1,hkey2,val2,...}要按键提取值,我写道:localfunctionflat_map_get(flat_map,hash_key)locali=1whileflat_map[i]doifflat_map[i]==hash_keythenreturnflat_map[i+1]endi=i+2endend当然,随着使用量的增长,多次调用此函数会导致性能下降。从HMGET返回的平面

lua - 多管齐下——Redis

如何使用lua脚本实现multi-get。假设我将name_last设置为Beckham,并将name_first设置为David。lua脚本应该是什么才能同时获得name_last和name_first?我可以实现类似的东西:eval"returnredis.call('get',KEYS[1])"1foo获取单键的值。只是想知道如何增强该脚本部分以通过调用redis服务器获取与所有键(或多个键)相关的值。 最佳答案 首先,您想将要返回的字段发送到EVAL(0表示没有KEYS,因此可以从ARGV访问这些参数):eval"..."0

lua - 多管齐下——Redis

如何使用lua脚本实现multi-get。假设我将name_last设置为Beckham,并将name_first设置为David。lua脚本应该是什么才能同时获得name_last和name_first?我可以实现类似的东西:eval"returnredis.call('get',KEYS[1])"1foo获取单键的值。只是想知道如何增强该脚本部分以通过调用redis服务器获取与所有键(或多个键)相关的值。 最佳答案 首先,您想将要返回的字段发送到EVAL(0表示没有KEYS,因此可以从ARGV访问这些参数):eval"..."0