应公司要求,需要搭建一个分布式数据缓存,所以这几天找了许多关于分布式的资料。
在网上找了一圈,分布式缓存主要有redis,memcached,还有ehcache,微软的Velocity。现在用的较多的貌似就是redis和memcached本人结合各个网站的资料列出了下面这张表格:
功能 | redis | memcached | ehcache |
|
k-v hash,list,set以及功能丰富的String的支持 | |
| |
|
|
服务器端并没有分布式功能。各个memcached不会互相通信以共享信息,只能在客户端通过像一致性哈希这样的 分布式算法来实现Memcached的分布式存储 | | |
|
|
| |
|
|
|
持久化到本地硬盘,生成一个.data和.index文件。cache初始化时会自动查找这两个文件,将数据放入cache | |
|
|
| |
|
|
| |
|
周期性的把更新的数据写入磁盘或者把修改操作写入追加的记录文件,并且在此基础上实现了master-slave(主从)同步。swap操作,发生阻塞 | |
|
|
|
|
将数据拿到客户端来进行类似的修改再set回去。这大大增加了网络IO的次数和数据体积 | | |
|
每秒处理请求的次数都不会成为瓶颈。(比如瓶颈可能会在网卡) | |
每秒处理请求的次数都不会成为瓶颈。(比如瓶颈可能会在网卡) | | |
|
单线程的IO复用模型单线程模型实际会严重影响整体吞吐量,CPU计算过程中,整个IO调度都是被阻塞住的 | |
非阻塞IO复用的网络模型,但是引入了cache coherency和锁的问题 | | |
|
提供了事务的功能,可以保证一串 命令的原子性,中间不会被任何操作打断 | |
提供了cas命令,可以保证多个并发访问操作同一份数据的一致性 | | |
| | |
|