memcached的客户端最著名的是这2个:memcached client for java和spymemcached。前者,使用最广泛。稳定性比较好。后者存取速度会高于前者,但是稳定性不好。我采用了前者。
但有一天,我需要将url作为key存入memcached,却怎么也存不进去。而直接用memcached命令set,是可以存进去的。看来是memcached client for java不支持吗?
网上找了找资料,查到一个叫做“xmemcached”的。号称性能比前2个还要厉害。我下载了试了试,版本号是xmemcached-1.2.4。它里面有一个选项sanitizeKeys,当选择用URL当key的时候,MemcachedClient会自动将URL encode再存储。于是我设置成
memcachedClient.setSanitizeKeys(true); 同时配合另一个选项:commandFactory ,设置成net.rubyeye.xmemcached.command.TextCommandFactory。成功了!可以设置url为key了。
但是存入到memcached的内容出现了乱码。郁闷了。
于是再试:
注释掉这句memcachedClient.setSanitizeKeys(true);
将commandFactory 设置成net.rubyeye.xmemcached.command.BinaryCommandFactory。即采用二进制协议。成功存入到memcached,但内容还是乱码。
无语。
无意中,又翻了翻memcached client for java。找了一下源代码,发现它也有一个选项sanitizeKeys。原来它的默认值是true。意思是比如key为“/abc”,那么要用get('%2Fabc'),才能得到value。
哈哈。原来如此!!
然后我设置setSanitizeKeys(false)。set一个key为"/abc",get('/abc')得到了value!而且没有乱码。
不过,也许是我摸得不太熟。xmemcached是个好东西。下次好好研究。只不过担心它不稳定(吃螃蟹要付出代价啊)。
分享到:
相关推荐
// 'key'保存'value',过期时间为1小时 // 获取数据 $value = $memcached->get('key'); // 删除数据 $memcached->delete('key'); ``` **Memcached使用示例** `学习文档Url.txt`可能包含了关于如何在实际项目中...
<key>memcached.stats[{$HOSTNAME},{$ITEM_KEY}]</key> <type>7 <params>{$HOSTNAME} <params>{$ITEM_KEY} <value_type>3 <history>90d <trends>365d <delay>30s <trapper_hosts>0 <ipmi_sensor>0 ...
但这也意味着,当内存满时,较旧或较少使用的数据会被自动删除,以腾出空间给新的数据,这种机制称为LRU(Least Recently Used)。 3. **Key-Value存储**:Memcached使用键值对的方式来存储数据,用户可以通过键来...
在缓存图片时,图片通常会被转换为字节串并存储在Memcached中,对应的键可能是图片的URL或唯一标识。当用户请求图片时,应用程序会首先检查Memcached中是否存在该图片,如果存在则直接返回,否则从数据库或文件系统...
1. **Session复制**:当客户端首次访问服务器并创建session时,MSM会将session对象序列化为二进制格式,然后将其发送到配置好的Memcached服务器上。 2. **Session持久化**:每次session数据发生变化时,MSM都会自动...
理论上,Memcached可以处理无限数量的连接,但实际上,由于操作系统线程能力的限制,通常建议的最大同时连接数为200。 安装libevent的过程包括下载源码包、解压、配置、编译和安装。例如,可以从指定的URL下载...
@CacheEvict(value = {"roader1"}, key = "#obj.url") public CachedObject del(CachedObject obj) { return obj; } } ``` #### 四、总结 Spring 3.1 对 Memcached 的集成提供了一种简便的方法来管理和使用...
- **唯一性保证**:短网址必须全局唯一,所以`short_key`字段需要设置为主键,确保每个短网址的唯一性。 3. **短网址生成** - **哈希生成**:首先对长网址进行哈希运算,得到哈希值。 - **编码处理**:将哈希值...
假设有一个场景:我们需要存储出租房列表页,每页的大小约为 208016 字节,使用 md5(url) 作为 Key(长度为 32 字节),并且设置过期时间为 30 分钟。在这种情况下,我们可以计算理论上能存储多少个页面: 1.5 * ...
要在Django中使用Memcached,你需要安装相应的Python库(如python-memcached或pylibmc),然后在`CACHES`配置中指定`BACKEND`为对应的Memcached后端,并设置`LOCATION`为Memcached服务器的IP地址和端口,或者Unix套...
当路由发生变化时,只需更改URL配置即可,而无需修改模板中的硬编码URL。 **示例代码**: ```html <a href="{% url 'views.about' %}">About Page ``` 上面的HTML代码展示了如何使用`{% url %}`标签来生成指向`views...
- `connect`事件监听器:当与Memcached服务器建立连接时,将`client.connected`设置为`true`。 - `close`事件监听器:当连接关闭时,将`client.connected`设置为`false`,表示客户端已断开连接。 6. **getData...
当应用程序需要数据时,它会首先检查Memcache,如果数据存在,就直接返回,避免了与数据库交互的延迟,这就是所谓的“缓存命中”。如果数据不在Memcache中,才会去数据库查找,这被称为“缓存未命中”。 在Tomcat...
在OSCache中,缓存是通过一个Key-Value对的形式存在的,Key通常是页面的URL或者一些标识页面内容的唯一键,Value则是页面的内容。当用户请求一个页面时,OSCache会先检查该页面是否已经在缓存中,如果存在则直接返回...
`memadmin` 是一款专为 `memcached` 设计的管理工具,它可以帮助我们监控、管理和调整 `memcached` 服务器的状态,确保系统的高效运行。本篇文章将详细介绍 `memadmin` 的安装过程,以及如何利用它进行 `memcache` ...
在Linux系统,特别是CentOS上部署Web应用时,有时我们需要使用缓存技术来提升网站性能。Memcache是一款广泛使用的分布式内存对象缓存系统,它可以存储数据,减少数据库负载,提高应用响应速度。而PHP的Memcache扩展...
:log($module,$level,$message,[$context = array()]) 日志记录Core::db([$key='default',[$option=array()]]) 获取db实例Core::memcached([$key='default',[$servers=array(),[$options=array()]]]) 获取memcached...
然后将 Laravel 项目打包为 `.zip` 文件,上传到 Elastic Beanstalk。确保 `.ebextensions` 目录包含必要的配置文件,以自定义环境设置,如设置环境变量。 **5. Lambda 和 API Gateway** Laravel 也可以与 AWS ...
为了减少对快递100服务器的负担,可以考虑使用缓存机制,比如Redis或Memcached,存储近期的查询结果,避免短时间内重复请求同一个快递单号。 7. **安全考虑**: 在实际应用中,要确保用户的快递单号不被滥用,...