1、介绍
memcached是一个高性能的分布式的内存对象缓存系统,分担数据库压力。
memcached在内存里维护一个巨大的hash表,
哪些情况下适合使用memcached:存储验证码、登录session等不是至关重要的数据。
2、python 操作memcached
1、安装:python-memcached:pip install python-memcached
2、建立连接:
import memcache
conn = memcached.Client(['ip:port','ip:port'],debug=True)
3、设置数据:
conn.set('user','lisa',time=)
conn.set_multi(('user':'lisa','age':'18'),time=)
4、获取数据:
conn.get('user')
5、删除数据:
conn.delete('user')
6、自增长:
conn.incr('num')
7、自减少:
conn.decr('num')
3、django中使用memcached
方法一:采用源生的连接
方法二:配置文件连接
1、配置
def KEY_FUNCTION(key,key_prefix,version):
return key
CACHES = {
'default'{
'BACKEND':'django.core.cache.backends.memcached.MemcachedCache',
'LOCATION':['ip:port','ip:port'],
'KEY_FUNCTION':KEY_FUNCTION
}
}
2、使用
from django.cache.cache import cache
def index(request):
cache.set('user','lisa',60)
name = cache.get('user')
return
4、Redis和memcached的区别
1、数据类型不同
redis:最为常用的数据类型 String hash list set zset
memcached:仅仅支持简单的key-value结构的数据记录
2、内存管理机制不同
首先:redis中并不是所有的数据一直存储在内存中。当物理内存用完时,
Redis可以将一些很久没用到的value交换到磁盘。memcached不会。
其次:
Redis为了方便内存的管理,在分配一块内存之后,会将这块内存的大小存入内存块的头部。
Memcached主要思想是按照预先规定的大小,将分配的内存分割成特定长度的块以存储相应长度的key-value
数据记录,以完全解决内存碎片问题。
3、数据持久化
Redis虽然是基于内存的存储系统,但是提供RDB和AOF两种数据持久化方法。
Memcached不支持
4、集群管理不同
Memcached本身并不支持分布式,因此只能在客户端通过像一致性哈希这样的分布式算法来实现Memcached的分布式存储。
Redis更偏向于在服务器端构建分布式存储。最新版本的Redis已经支持了分布式存储功能。