首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >我应该使用Redis哈希还是Ruby哈希?

我应该使用Redis哈希还是Ruby哈希?
EN

Stack Overflow用户
提问于 2016-06-04 15:49:55
回答 1查看 465关注 0票数 1

我有一个Rails应用程序,在这个应用程序中,我必须维护一个同时被多个线程访问的散列。

大多数访问将被读取,并且很少有写入。我试图在使用Ruby哈希和Redis哈希之间做出决定。

Redis散列是线程安全的,可以将数据存储到磁盘。但是,持之以恒并不是唯一必要的。

此外,对哈希的写入并不频繁,要写入的数据基本上是写入它的时间本身。因此,即使它不是线程安全的,由于竞争条件而导致的精度损失也是可以接受的,因为并发写入之间的时间在最大情况下只会变化几秒。

我在使用单例Ruby哈希时唯一关心的是更新不是线程安全的,也不是原子的。那么,同时进行非原子键更新会导致异常吗?

如果没有,那么维护没有锁的单例Ruby哈希是否有意义?

我对使用Redis哈希的关注是内存中哈希的大小可能大于Ruby哈希以及调用redis服务器的开销。并发性和持久性是好的,但不是必要的。

请告诉我你的想法。谢谢。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2016-06-04 16:09:51

(这是一次基于Holger评论的更正,纠正了我。)

有一个专门为您设计的库,名为concurrent-ruby

https://github.com/ruby-concurrency/concurrent-ruby看看吧。

它有一个哈希类(http://ruby-concurrency.github.io/concurrent-ruby/Concurrent/Hash.html)和一个Map类(http://ruby-concurrency.github.io/concurrent-ruby/Concurrent/Map.html),他们说它更快,但不完全符合Ruby的语义(例如,不能保证按键插入顺序排序)。

请注意,安装创业板后,使用它所需的require与宝石名称不同;您可以使用require concurrent

代码语言:javascript
复制
require 'concurrent'
h = Concurrent::Hash.new

我没有使用它,所以我不能提供任何个人反馈。

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/37632170

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档