缓存学习笔记(一)—— memcached的简介
最近在实习培训的时候,讲到了缓存这一块,发现自己对缓存的体系了解的还不够透彻,后面打算利用这段时间整理一下常见的缓存机制以及相应的软件。
说到缓存,就不得不说memcached,天生就是来解决缓存问题的。
一、Memcached是什么
memcached是一款高性能的分布式基于内存缓存的服务器。通常的作用就是,通过缓存后端数据库的数据,来降低后端数据库的压力。提高web应用的响应速度和扩展性。
二、memcached的特征
作为高性能的缓存服务器,具有以下特点
- 协议简单
- 基于libevent的事件处理
- 基于内存缓存
- 分布式之间不互相通信
1、协议简单
memcached服务器和客户端之间协议简单,并不依赖与json或者xml等其他的复杂协议。而是基于简单的文本行协议。通过telnet就能在远程的memcached服务器上存取数据。
2. 基于libevent的事件处理
libevent是一个库,它将linux中事件处理功能的函数封装成统一的接口
这块不太了解,后期熟悉了进行补充
3. 基于内存的缓存
为了提高性能,memcached使用内存作为数据的存储方式,故当缓存服务器断电之后,数据也会消失,其不像redis一样,并不支持数据的持久化。当内存容量达到指定值后,会采用LRU算法剔除掉之前缓存的数据。
4. 互不通信的分布式
memcached尽管是分布式服务器,当各个服务器之间并不互相通信,其分布式是通过客户端来实现的。
三、Memcached 对数据的操作
memcached支持对键值对的存储,同时也可以设置过期时间。不设置过期时间的话,将会按照LRU的剔除策略在内存到达容量之后进行数据的剔除。
1、保存数据
set(“键”,“值”,“过期时间”)
replace(“键”,“值”,“过期时间”)
add(“键”,“值”,“过期时间”)
这三个方法有点区别,在这里就不做区分了。
2. 获取数据
get(“键”) 一次取出一个键值
get(“键一”,“键二”,“键三”)一次取出多个值
3. 删除数据
delete(“键”, “阻塞时间”)
这里的第二个参数指的是在删除的时候阻塞指定时间,防止使用同样的键来保存新数据。
4. 增一减一操作
可以将mencached的特定值值作为计数器使用。增一减一为原子操作,但未设置初值时,memcached不会赋初始值。