Java与php共享Memcached存储数据中的问题与解决方法
Posted by Demon at 05:57 上午 on 18, Aug 2010
php写入的数据java读不出来,java写入的数据php读取乱码;
如果你根据php提供的memcache扩展协议来自行编写java memcached client将不会有问题,我们这里提到的是使用
java的 MemCachedClient 包;
php_extension: php_memcache.dll / memcache.so
java_jar: MemCachedClient [com.danga.MemCached.*]
解决方案:
经过查看MemCachedClient源码,发现是 set 时 flags不同,java是根据存储值类型来订flags的。
public static final int MARKER_BYTE = 1;
public static final int MARKER_BOOLEAN = 8192;
public static final int MARKER_INTEGER = 4;
public static final int MARKER_LONG = 16384;
public static final int MARKER_CHARACTER = 16;
public static final int MARKER_STRING = 32;
public static final int MARKER_STRINGBUFFER = 64;
public static final int MARKER_FLOAT = 128;
public static final int MARKER_SHORT = 256;
public static final int MARKER_DOUBLE = 512;
public static final int MARKER_DATE = 1024;
public static final int MARKER_STRINGBUILDER = 2048;
public static final int MARKER_BYTEARR = 4096;
为了方便,两者间的数据转换使用JSON格式;
php与java在存储的时候值类型均要求为String类型,
并且php在$mem->set(key,value,32,expire);加粗部门要注意,这个是必须的。
然后php写入的数据,java那边就能够顺利读取了,当php写入array,object时,java读取后json.decode就OK了。
分享到:
相关推荐
3. **Session共享**:在分布式环境中,可以使用Memcached来存储用户Session,实现Session跨服务器共享。 4. **API缓存**:对于API的调用结果,可以暂时存储在Memcached中,减少计算和网络延迟。 **使用和管理** ...
64位版本可以更有效地管理和利用现代服务器的大量RAM,允许Memcached存储更多缓存数据,提高整体性能。同时,由于64位架构的计算能力更强,处理复杂操作时效率更高。 **文件“nginx.txt”可能包含的内容** "nginx....
2. **分布式**:Memcached支持多台服务器之间的数据共享,可以构建分布式缓存系统,解决单一服务器内存限制问题。 3. **键值对存储**:数据以键值对的形式存储,键是唯一的标识符,值是存储的数据。 4. **短暂性**...
3. **多主机支持**:Memcached支持多主机之间的数据共享,允许多个用户同时访问同一个缓存系统,从而解决了共享内存仅限于单机的问题。 4. **LRU算法**:Memcached使用LRU(Least Recently Used)算法来管理缓存中的...
这个高性能的分布式内存对象缓存系统,旨在解决现代Web应用程序中数据库负载过重的问题。本文将深入探讨Memcached的核心功能、工作原理以及如何在实际开发中利用它来提升Web应用性能。 1. **什么是Memcached?** ...
- 分布式系统中的共享内存:在分布式环境中,Memcached可作为跨进程或跨服务器的数据共享机制。 5. 注意事项: - 安全性:Memcached不提供内置的安全措施,因此在生产环境中使用时,应配置防火墙规则或使用代理来...
- Memcached 通过在网络中的多台服务器之间分布数据,解决了这个问题,提供了更为广泛和高效的缓存解决方案。 #### 六、安装与配置 1. **安装 libevent:** - Memcached 使用 libevent 来处理事件和异步操作。 ...
Memcached是一款高性能、分布式内存对象缓存系统,它广泛应用于Web应用中,用来减轻数据库的负载,通过将数据存储在内存中,实现快速访问。这款软件最初由Danga Interactive开发,现已成为开源社区中的热门项目,...
Memcached基于键值对(key-value store)存储模式,它将数据存储在内存中,由于内存的读取速度远超硬盘,因此能够显著提高数据访问效率。当一个请求到达时,Memcached会根据键查找对应的值,如果找到,直接返回,...
- **使用Cache::Memcached连接memcached**:Perl中的Cache::Memcached模块提供了与memcached服务器交互的方法。 - **保存数据**:使用`set`命令将键值对保存到缓存中。 - **获取数据**:使用`get`命令从缓存中检索...
3. **Session共享**:在分布式系统中,Memcached可用来存储用户的会话信息,实现跨服务器的Session共享。 4. **减少CDN回源**:配合内容分发网络(CDN),Memcached可以缓存静态资源,减少回源到源站的次数。 **安装...
Memcached是一种高性能、分布式内存对象缓存系统,用于在分布式环境中快速存储和检索数据,以减轻数据库的负载。客户端包`memcached-1.4.12.tar.gz`是为开发者提供的工具,允许他们与memcached服务器进行交互,实现...
2. **session共享**:在分布式环境中,可以将用户session存储在Memcached中,实现跨服务器的session共享。 3. **API缓存**:对于重复的API请求,可以先从缓存中获取数据,降低API调用频率。 4. **数据库查询结果缓存...
- **Session共享**:在分布式环境中,可以使用Memcached共享用户session,避免session数据在服务器之间同步的问题。 **6. 与其他缓存系统的对比** Memcached专注于简单、高速的键值存储,而Redis则提供了更丰富的...
Memcached是一种轻量级的缓存解决方案,它基于简单的键值对存储,支持多语言接口,设计为通过网络在多个服务器之间共享小块内存。其主要特点包括: 1. **高性能**:memcached的设计目标是高效快速,它通过内存缓存...
Memcached 通过在内存中创建一个大型哈希表来存储各种类型的数据,如图片、视频、文件或数据库查询结果,以减少对数据库的直接访问,从而降低数据库负载,提高响应速度。 **工作原理与特点:** 1. **分布式存储**:...
1. **客户端库**:许多编程语言如Python、PHP、Java等都有官方或第三方提供的客户端库,方便与Memcached进行交互。 2. **操作命令**:基本的操作包括 `set`(设置键值对)、`get`(获取键值对)、`delete`(删除键值...
- **一致性哈希**:解决分布式环境中的数据分布问题,确保数据迁移时影响最小。 - **缓存击穿与雪崩**:应对大量请求导致缓存失效的场景,可通过预加载、限流、加锁等方式避免。 5. **最佳实践** - **数据设计**...