- r - 以节省内存的方式增长 data.frame
- ruby-on-rails - ruby/ruby on rails 内存泄漏检测
- android - 无法解析导入android.support.v7.app
- UNIX 域套接字与共享内存(映射文件)
我需要从 Lua 脚本中使用 Redis HMGET
并在以下代码中提取特定值。但是 redis.call('HMGET', table_key, hkey1, hkey2, ...)
返回一个平面数组 {hkey1, val1, hkey2, val2, ...}
要按键提取值,我写道:
local function flat_map_get(flat_map, hash_key)
local i = 1
while flat_map[i] do
if flat_map[i] == hash_key then
return flat_map[i+1]
end
i = i+2
end
end
当然,随着使用量的增长,多次调用此函数会导致性能下降。
从 HMGET
返回的平面数组中读取值的有效方法是什么?或者,将返回值转换为适当的键值表?
最佳答案
经过一些分析和测试,我们发现以下函数具有良好的性能,并使用它来获取合适的表。
这样就无需为每个哈希键检索调用 getter 函数。
local function hgetall(hash_key)
local flat_map = redis.call('HGETALL', hash_key)
local result = {}
for i = 1, #flat_map, 2 do
result[flat_map[i]] = flat_map[i + 1]
end
return result
end
关于从 Redis HGETALL 调用返回高效字典的 Lua 脚本,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34313598/
这里是有问题的代码: let key = "player:"+player_id; console.log(key); console.log(typeof(key)); redisClient.hg
有100-200个字段的redis hash。如果我需要取 2 或 3 个值,哪种方法最好? 第一种方法是调用 hgetall,但我得到了很多无用的数据。 第二种方式是调用 hget key1、hge
我正在使用 Booksleeve 通过 C# 代码与 Redis 通信。该代码首先从哈希中检索所有字段和值: var vals = await Redis.Hashes.GetAll(0, redis
所以我有一个小而简单的 Redis 数据库。它包含 136689 个键,其值是包含 27 个字段的哈希映射。我通过服务器节点上的 Python 接口(interface)访问表,每次调用需要加载大约
我用的是redis,这是我的代码 const redis = require("redis"), client = redis.createClient() let count1, count2, c
谁能告诉我如何使用 redis-benchmark 对具有固定数据大小的 HMSET、HGETALL 进行基准测试 ( -d redis-benchmark 中的选项)。我正在使用 redis 3.2
在我看来,我需要一些帮助我有 NodeJS + Redis 并尝试在 nodejs 的帮助下从 Redis 获取数据 var redis = require('redis'),client = red
我遇到这样一种情况,当使用 .hgetall(key) 请求时,我们的 redis 缓存的 db2 中明显已知的哈希值消失了。我希望有一些见识!谢谢。 好的,所以...首先,一小段代码: def fr
import redis config=redis.Redis(host='localhost') dic={'name':'tom','age':20,'subjects':['eng','cn']
我需要从 Lua 脚本中使用 Redis HMGET 并在以下代码中提取特定值。但是 redis.call('HMGET', table_key, hkey1, hkey2, ...) 返回一个平面数
我有以下代码: genUserLeagueDiscussionTable = (userLeagueId, firstEntry, displayEntries) -> # Generate Le
下面是redis返回的dict。为什么是b?我该如何摆脱它? data = r_client.hgetall(key) {b'test1:r': b'2', b'test2:f': b'2'} pri
我有以下生成错误的代码: leagueclient.hgetall userLeagueKey, getLeagueInfo 我已经验证了 key 是正确的,并且 getLeagueInfo 正确执行
Node 版本:v7.4.0 node-redis 版本:v.2.6.2 redis_version:2.8.4 ubuntu 14.04 2GB 内存 VPS 实例 我收到的迹象表明 node_re
我正在做交互式教程 al http://try.redis.io .在阅读 spring 数据 redis 时,我没有遇到过该方法,但遇到了一个 get(没有“全部”) /** * Get valu
我试图通过 Lua 仅获取大于 1800 的散列值。我是 Lua 的新手,我不确定如何从 Redis 获取值,因为 redis.call() 方法只返回 1。 这是我的代码。这里我的哈希键是“1”“2
我在 Redis Hash 中插入了一些用 MessagePack 打包的二进制数据。 我检查了数据是由redis控制台“monitor”插入的。 这里的问题是我无法使用 HGETALL、HKEYS
我正在使用 redis + nowjs。我想知道如何处理 hgetall() 的结果?当我尝试在客户端显示“结果”时,我只得到 [object Object](它可能是来自服务器端 js 的字符串)。
今天是我使用 redis cilent 和 node js 的第一天。 我正在尝试复制我通过 node.js 中的 redis-cli 运行的命令: 127.0.0.1:6379> HGETALL w
我有一个 node.js (express) 应用程序,我正在使用 node_redis 从我的 redis 数据库中获取所有用户。 redis = require "redis" client =
我是一名优秀的程序员,十分优秀!