gpt4 book ai didi

ruby-on-rails - 我应该使用 Redis 哈希还是 Ruby 哈希?

转载 作者:IT王子 更新时间:2023-10-29 06:09:47 26 4
gpt4 key购买 nike

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

大部分访问都是读操作,很少有写操作。我正在尝试在使用 Ruby 哈希和 Redis 哈希之间做出决定。

Redis 哈希是线程安全的,可以将数据存储到磁盘。但是,坚持并不是那么必要。

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

我对使用单例 Ruby 散列的唯一担心是更新不是线程安全的,也不是原子的。那么,同时进行的非原子 key 更新会导致异常吗?

如果不是,维护没有锁的单例 Ruby 散列是否有意义?

我对使用 Redis 散列的担忧是内存中散列的大小可能大于 Ruby 散列和调用 redis-server 的开销。并发和持久性很好,但不是必需的。

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

最佳答案

(这是根据 Holger Just 的评论更正我的更正。)

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

查看https://github.com/ruby-concurrency/concurrent-ruby .

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

注意安装gem后,需要使用的require与gem名称不同;你需要并发:

require 'concurrent'
h = Concurrent::Hash.new

虽然我没有使用过它,所以我不能提供任何关于它的个人反馈。

关于ruby-on-rails - 我应该使用 Redis 哈希还是 Ruby 哈希?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37632170/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com