需要 PHP 中的分布式键值查找系统

Posted

技术标签:

【中文标题】需要 PHP 中的分布式键值查找系统【英文标题】:Need a distributed key-value lookup system in PHP 【发布时间】:2010-04-09 15:02:14 【问题描述】:

This question 在 java 中要求一个,

php 中最好的候选者是什么?

顺便说一句,以下是否成立:

分布式键值存储 == 分布式缓存

?

【问题讨论】:

【参考方案1】:

Redis 具有高级缓存操作功能:

Redis 是一种高级键值存储。它类似于 memcached,但数据集不是易失性的,值可以是字符串,就像在 memcached 中一样,还可以是列表、集合和有序集合。所有这些数据类型都可以通过原子操作进行操作,以推送/弹出元素、添加/删除元素、执行服务器端联合、交集、集合之间的差异等。 Redis 支持不同种类的排序能力。

Redis 是如何支持分布式服务器的:

Redis 通过一致性哈希支持客户端分片。目前不支持容错,也不支持在运行时添加或删除集群。

【讨论】:

我从来没有听说过Memcached是分布式的。 重要的是要注意 Memcached 不是持久的,正如原始问题所要求的那样。 顺便说一句,memcached 可以用作分布式存储,但需要客户端代码根据某种client_id % number_of_servers 逻辑选择不同的服务器。 @Ivan Nevostruev,真的吗?你能详细说明这个逻辑吗? 这里是关于基于memcached lastfm.ru/user/RJ/journal/2007/04/10/…的key值计算服务器ID的文章@【参考方案2】:

看看Cassandra,它被Facebook使用,应该很容易与PHP一起使用。

【讨论】:

【参考方案3】:

使用 MongoDb 或 Memcached

【讨论】:

以上是关于需要 PHP 中的分布式键值查找系统的主要内容,如果未能解决你的问题,请参考以下文章

Redis

分布式键值存储系统ETCD调研

系统设计分布式键值数据库

分布式、一致的键值存储系统在处理并发请求时如何返回最新键的基础知识?

云原生分布式键值存储服务-etcd初识

Java 的嵌入式和分布式键值存储或图形数据库