缓存是一种常驻与内存的内存数据库,内存的读取速度远远快于程序在磁盘读取数据的速度。我们在设计程序的时候常常会考虑使用缓存,将经常访问的数据放到内存上面这样可以提高访问数据的速度,同时可以降低磁盘或数据库的压力。
memcached就是一款可以方便实现缓存的工具软件,memcached的优势在于以下几点:
1.实现分布式缓存(支持热部署),通过hashcode根据缓存服务器ip智能分配将数据缓存到的服务器上。
2.实现最近最少访问的数据优先被移除缓存。
3.快速找到适配的存储空间,避免内存的浪费。
4.使用键值对存储数据,方便读取修改等缓存的管理。
5.socket通信,缓存服务器和应用服务器分离。
等等,memcached还含有很多自身的优势。
使用缓存中我们面临的缓存数据无法同步的问题:比如一台缓存服务器突然崩溃那么这台服务器上面的缓存数据就会全部丢失,而且需要在配置中及时去除这台崩溃的服务器IP,这个需要我们编写更多的代码进行相应的控制。

2.memcached内部机制

memcached为了提高数据的存储速度,在安装启动memcached服务的时候,他会自动将分配给memcached的内存分隔为大小不一致的很多块。每当任意一个大小的需要缓存的数据提交过来的时候memcached将会自动找到符合这个数据大小最适合的内存块,然后把数据放到这个块里面。这种方式不仅可以降低内存的浪费同时可以减少了内存分配的时间了。

如果memcached里面的内存已经被使用完了,还需要向里面添加数据的时候,memcached将会把存入缓存中最长时间没有用的数据清除掉。
每次向缓存中添加数据的时候都会带上该数据的有效时间,如果超过了这个有效时间那么缓存的数据自动失效了。
memcached安装到计算机上是一款服务默认端口11211,我们可以通过socket与他建立通信。建立起通信之后就可以通过执行memcached的指令向缓存里面添加取出或修改或删除缓存数据的工作了。

最新文章

  1. 【.NET MF】.NET Micro Framework USB移植
  2. 德国W家HIPP 奶粉有货播报:2014.6.25 HIPP 1+ 4盒装有货啦!
  3. luogg_java学习_03_流程控制及循环结构
  4. (转)2G到C-RAN网络架构的演进
  5. js控制只能输入数字和小数点
  6. GridView中的超级链接技巧
  7. Ubuntu添加PPA源
  8. 0基础菜鸟学前端之Vue.js
  9. Xcode中lldb的REPL调试方法
  10. 前端 javascript
  11. shell基础:输入输出重定向
  12. 7 个最佳的 Java 框架
  13. 黄聪:php7配置php.ini使其支持<? ?>
  14. 从源码安装Node
  15. phpcms首页如加上用户登录的信息?
  16. 20180129周一之学习PYTHON笔记【安装、查看工作目录、】
  17. kindEditor富文本编辑器
  18. MongoDB入门---聚合操作&管道操作符&索引的使用
  19. fix LayerKit framework不能提交App Store
  20. HDU 2795——Billboard——————【单点更新、求最小位置】

热门文章

  1. Linux中目录proc/net/dev详解
  2. idea破解方式 附jar包
  3. ES6躬行记(22)——Promise
  4. Android------------------ListVIew学习
  5. 配置国内的maven仓库
  6. POJ 1260
  7. js的事件学习笔记
  8. 解析ASP.NET Mvc开发之查询数据实例 分类: ASP.NET 2014-01-02 01:27 5788人阅读 评论(3) 收藏
  9. Python 基础语法——数字和表达式(包含数学上的一些函数)
  10. Java的注解相关的命令