Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/ruby/23.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何在Ruby中创建持久哈希?_Ruby - Fatal编程技术网

如何在Ruby中创建持久哈希?

如何在Ruby中创建持久哈希?,ruby,Ruby,我想要一个持久的散列;作为散列的对象,但可以在程序运行之间保持 理想情况下,它只会将访问的值加载到内存中。因为持久性键/值存储是每个人的一种需求,因为碰巧有很多解决方案 这可能是保存Ruby对象的最简单方法 也可以,但不能直接处理符号 当然,MySQL和其他SQL数据库(如sqlite3)也解决了这个问题。通常,访问被封装在 Ruby内核有一个使用sdbm的. require 'sdbm' SDBM.open("/mypath/myfile.dbm") do |myMap| [...]

我想要一个持久的散列;作为散列的对象,但可以在程序运行之间保持


理想情况下,它只会将访问的值加载到内存中。

因为持久性键/值存储是每个人的一种需求,因为碰巧有很多解决方案

这可能是保存Ruby对象的最简单方法

也可以,但不能直接处理符号

当然,MySQL和其他SQL数据库(如sqlite3)也解决了这个问题。通常,访问被封装在

Ruby内核有一个使用sdbm的.

require 'sdbm'

SDBM.open("/mypath/myfile.dbm") do |myMap|
    [...]

    myMap[key] = avalue

    [...]

    myvar = myMap[anotherKey]

    [...]
end
创建文件:MyFr.DB.dir和MyField.DBM.PAG

< P>我会考虑使用,它有一个哈希数据类型。这不仅会在程序运行时保持哈希,还会在多台机器上保持哈希。它的速度非常快,在内存中,您可以在<5分钟内安装并运行它

在IRB中(假设您已安装并正在运行redis server并已安装redis rb:

require "redis"
redis = Redis.new
重要的行动是:

redis.hset(key, field, value)


问题不只是封送对象,而是要有比封送完整散列更快访问的东西。我知道它存在于Perl中,所以我希望它存在于Ruby中。啊,你的意思是,dbm?如dbmopen等?将是一个很好且简单的解决方案。与其存储为散列,不如创建一个简单的模式,将对象映射到能够。它很快,特别是当你试图存储或搜索成百上千条记录时。@Guillaume你对Perl(
Storable
)有什么想法?它可能会帮助人们理解你在Ruby中想要什么。
redis.hget(key,field)