同事下午遇到一问题,MySQL 和 Memcached 对于同一个key,不能对应起来。最终原因是:PHP将key写入MySQL数据库之前,没有经过trim()过滤首尾空格(关键是尾部空格),结果:

  1、MySQL的varchar、char类型字段,SELECT .... WHERE 查询时忽略字段的尾部空格。例如varchar类型字段uidcode中,存储的含有尾部空格的内容“rewinx ”,通过以下三种方式均可查询到:

  点击在新窗口中浏览此图片

  在MySQL手册第“11.4.1. CHAR和VARCHAR类型”节中写道(http://dev.mysql.com/doc/refman/5.1/zh/column-types.html#char):请注意所有MySQL校对规则属于PADSPACE类。这说明在MySQL中的所有CHAR和VARCHAR值比较时不需要考虑任何尾部空格。请注意所有MySQL版本均如此,并且它不受SQL服务器模式的影响。



  2、PHP 的 Memcache 扩展,则在set、get时,自动将key中的空格,转换成了半角下划线“_”。当然,直接通过 Memcached 协议来读取,key值“rewinx ”就要写成“rewinx_”了。

  示例:testmc.php
  点击在新窗口中浏览此图片






技术大类 » Cache与存储 | 评论(46) | 引用(0) | 阅读(38030)
ll
2010-7-6 20:57
问一下如果数据库是实时更新新闻之类的,用memcached合适不?那memcached也不是要经常更新,缓存还有意义吗?
Kth007 Homepage
2010-7-7 08:03
好像是,又学到了。
kaka Email Homepage
2010-7-7 12:05
php中这类问题还真不少,对所有的字符串数据,最好都是trim之后再用。
shiny Email Homepage
2010-7-7 15:35
学习之。
翠星石
2010-7-7 16:34
嗯,以后会注意这个问题,谢谢张宴老师
xiaoyu
2010-7-7 16:42
php中 '  111  ' == '111'
PHPer.yang
2010-7-8 09:30
如果有两个key呢,一个key是_,一个key是空格,怎么取?
littlehz Homepage
2010-7-8 10:40
我们的项目中,所有key-value存储的key都是md5散列的,这样在分服务器部署也比较平均。md5慢的话可以考虑下base64应该也还不错。
吕滔 Homepage
2010-7-9 09:18
这个挺有用

apmserv
2010-7-9 14:04
期待您的apmserv更新!!!!
双色球 Email Homepage
2010-7-9 23:20
围观围观
猫哥 Email Homepage
2010-7-13 09:11
php还不太了解。
张老师 Email Homepage
2010-7-14 18:36
长老师,你是弄啥的阿
求知者
2010-7-20 14:16
张宴老师,问您一个问题,我服务器使用的是apache,墓前网站最近几天httpd进程非常多,以至于打不开网站了都,请问这个是什么问题呢?
手机侦探 Homepage
2010-7-23 12:33
memache键名有非0-9a-zA-Z_的字符,最好是md5后再使用。
虚心请教
2010-7-30 17:09
我的网站前端放了一个squid服务器,所有的请求都是通过squid转发给后台的WEB服务器。但是现在出现了一个问题,
我的WEB服务器上无法显示客户端的源IP地址,所显示的都是squid服务器的IP。
请大侠帮忙解决。
我用的是squid2.5版本
aaa
2010-8-10 12:53
shuai
蓝色夏威夷 Email Homepage
2010-8-10 22:07
哦,这个问题的确值得注意的,谢谢分享。
吕滔 Homepage
2010-8-16 21:28
我想知道在您的这个 http://blog.s135.com/nginx_php_v6/ 这个环境的配置配置的生产环境,如果我要配置memcached需要怎么配置,还有如何安装 cacit
JERY
2010-9-30 00:29
PHP MYSQL提示版本要更新,怎么更新呢?
分页: 1/3 第一页 1 2 3 下页 最后页
发表评论
表情
emotemotemotemotemot
emotemotemotemotemot
emotemotemotemotemot
emotemotemotemotemot
emotemotemotemotemot
打开HTML
打开UBB
打开表情
隐藏
记住我
昵称   密码   游客无需密码
网址   电邮   [注册]