找回密码
 用户注册

QQ登录

只需一步,快速开始

查看: 4350|回复: 0

redis再观察 章|wwwsq

[复制链接]
发表于 2011-12-9 19:27:40 | 显示全部楼层 |阅读模式
redis的几个问题:

1,redis的“脏快照”

redis的持久化方式是后台线程慢慢写,则在写的过程中,如果外界进行了set,则redis写下的数据并不是一个干净的快照,而是一份数据可能不匹配的“脏快照”。
举例来说:在SNS里面,AB各有10分,然后A扣了5分给B,,则A应该5分B应该15分,但是在redis的脏快照里面,可能是A5分B10分,总数不对。


2,redis的启动速度
很明显,redis重启的时候需要读取那些快照,这肯定影响启动速度。

3,网络或者机器损坏的时候,redis的快照并不能发挥作用
我们的高可用性设计很大程度上是为了防止网络或者机器硬件异常,这是常见的,因为机房里面经常会有路由调整什么的。

4,redis提供的更多编辑功能可能会带来麻烦
为了保证没有“脏数据”,缓存的正确使用方式应该是:只用delete和set方法,以保证在其他模块写失败(比如db的transaction rollback)的时候,可以在缓存进行重复的操作,而不会出现错误数据。换句话说,为了保证数据正确性,即使是memcached的prepend/append、inc/dec都应该避免使用,则list、mapset这些高级数据结构的将遇到更严格的限制。
不注意这点的话,缓存里面的脏数据将在未来的某些时候让你痛不欲生。

5,redis号称比memcached速度更快,但是我看到很多反面数据
memcached速度更快的测试结果,比如:http://systoilet.wordpress.com/2010/08/09/redis-vs-memcached/
不要完全相信redis的测试数据,比如:http://antirez.com/post/redis-memcached-benchmark.html
因为memcached每秒可以处理20w以上的请求:http://code.google.com/p/memcached/wiki/NewPerformance
我相信memcached的数据,因为我知道长连接的时候单线程每秒钟处理6w个http请求是可能的,那么每秒处理20w个kv请求完全是一个合理的数字。则redis的测试数字多半是不严谨的。

作者:wwwsq 发表于2011-12-9 17:37:34 原文链接
您需要登录后才可以回帖 登录 | 用户注册

本版积分规则

Archiver|手机版|小黑屋|ACE Developer ( 京ICP备06055248号 )

GMT+8, 2024-4-17 06:31 , Processed in 0.013404 second(s), 7 queries , Redis On.

Powered by Discuz! X3.5

© 2001-2023 Discuz! Team.

快速回复 返回顶部 返回列表