如何从elixir中的地图创建`hash`或`md5`?

arp*_*pit 1 hash md5 elixir

我需要将 a 转换map为 a hash/md5

map1 = %{k1: "val1", k2: "val2"}
map2 = %{k2: "val2", k1: "val1"}
Run Code Online (Sandbox Code Playgroud)

以上两个地图都相同,因为地图中的顺序无关紧要。如何从地图创建散列,以便它们的散列也相同?

我需要这样做以用于缓存目的。

arp*_*pit 5

使用phash2/1orphash2/2函数,我们可以散列任何 elixir/erlang 术语:

:erlang.phash2(map1) == :erlang.phash2(map2) # true
Run Code Online (Sandbox Code Playgroud)