1.memcache在获取数据的时候用id数组获取要比循环获取效率高
二到五倍。
具体方法是:
array Memcache::get ( array $keys [, array &$flags ] )
2.使用nosql尽量做外部压缩,这样的话对存储,磁盘io性能,网络io都有好处。
3.在nosql中存储的数据格式要有公用性。
例如用php serialize 存储后其他语言很可能就没法使用这些数
据了。
4.很多nosql产品很不完善,但官方并没有说明。
例如tokyo cabinet 数据增加后,速度就会骤减。
5.nosql 做持久化还是做cache的场景问题。
有些nosql适合做cache,有些适合做持久化。
redis如果做持久化存储会有单点,数据超过内存后性能后下降,扩容问题。
redis如果做cache存储会有性能高,数据结构丰富,可以持久化,避免雪崩等。
所以在考虑一个nosql是否能持久化存储的时候要考虑:
不能数据单点,扩容要方便,维护要好做。
考虑一个nosql是否适用cache场景就要考虑尽量不能出现cache失效造成的雪崩,不能出现系统性能抖动。
整体要考虑的是:
数据的安全性。
事务的保障性。
数据的重要性。
是否有dba运维。
未来业务的需求变化。
备份
是否可以切换到其他产品。
6.容量问题。
ttserver在 32bit下,到2g数据会出现不能启动现象。
mongodb在 32bit不知道会不会出现这样的问题。
7.版本升级问题
版本升级后可能出现兼容问题,可能造成适用场景不匹配问题。
8.mysql转nosql问题。
在没有掌握nosql前,最好用小项目尝试一下。
9.需要监控的地方:
io,cpu,延迟,qps,抖动,数据量