我是缓存的新手,不知道数据如何存储在缓存中。我曾尝试在线阅读一些示例,但每个人都提供了存储和获取数据的代码片段,而不是解释如何使用memcache缓存数据。我已经读过它将数据存储在键值对中,但我无法理解这些键值对存储在哪里?
也有人可以解释为什么进入缓存的数据被散列或加密?在序列化数据和散列数据之间我有点困惑。
答案 0 :(得分:19)
来自Memcache page on Wikipedia的几句引言:
Memcached的API提供了一个巨大的哈希 表分布在多个 机器。当桌子满了, 后续插入导致旧数据 最近最少使用(LRU)清除 顺序。
和
服务器将值保存在RAM中;如果 服务器耗尽RAM,丢弃 最古老的价值观。因此,客户 必须将Memcached视为暂时的 缓存;他们不能假设这些数据 存储在Memcached中仍然存在 当他们需要时。
Wikipedia页面的其余部分内容非常丰富,可能对您有所帮助。
答案 1 :(得分:2)
它们存储在服务器的内存中,如果您经常使用相同的键/值,并且您知道它们不会在一段时间内更改,您可以将它们存储在内存中以便更快地访问。
答案 2 :(得分:2)
我对memcached并不是很熟悉,所以不管怎么说: - )
Memcached是separate process or set of processes that store a key-value store in-memory so they can be easily accessed later。从某种意义上说,它们提供另一个全局范围,可以由程序的不同方面共享,使值可以计算一次,并在许多不同的单独的区域中使用你的程序。从另一个意义上讲,它们提供了一个 fast ,健全数据库,可用于存储瞬态数据。 数据不会永久存储,但一般情况下它会被存储超出特定请求的生命周期(Memcached可能永远不会存储您的数据,所以每次读取都会错过,但那是通常表示您没有为您的用例正确设置它。)
进入缓存的数据不必进行散列或加密(但可以发生在数据上,具体取决于缓存机制。)
Serializing数据实际上与这两个概念无关 - 相反,它是将数据从一种格式(通常一种适用于内存存储)更改为另一种格式(通常适合存储在持续的媒介。)这个过程的另一个术语是marshalling和解组。