memcached
memcached的介绍
memcached
之前是danga
一个项目, 最早是为liveJournal
服务memcached
是高性能的分布式的内存对象缓存系统. 主要负责在内存中维护项目的hash
表,主要是一些小而不重要的东西, 以减少数据库的压力.主要存储验证码(图形验证码, 短信验证码), 登入session, 媒体文件的url等所有不是很重要的数据
memcached的安装与启动
安装
sudo apt install memcache
启动
如果只是想使用默认配置连接, 可以使用service memcached start
启动
而想调整配置的话就要使用memcached
命令, 以下是命令的几个基本参数
* -d 守护进程, 让memcached
在后台运行
* -m 指定最高使用的内存, 以M
为单位, 默认是64M
; 如果超出指定大小, 就会清除以前的数据
* -p 指定占用的端口, 默认是11211
* -l 允许连接的ip, 默认只能本机ip连接, 需要其他ip 则必须-l 0.0.0.0
使用telnet
操作memcached
登入语法 telnet IP地址 端口号
连接本机的11211
memcached
存储数据是通过键值对的形式,
常用的命令
set
, 设置键值对的形式, 如果键值对存在, 则会被替换
set key 0[是否压缩] 60[过期时间] 7[值最大长度]
get
, 根据key
来从memcached
获取
get username[key]
add
, 添加键值对, 如果memcached
存在key
, 则报错, 其他与set
命令一致delete
删除键值对
delete username[key]
flushall
删除memcached
所有数据-
stat
查看memcached
当前信息,get
的概率信息(key 可能存在不少的垃圾信息或者过期都有可能无法获得)-
get_hists
:get
成功数量 -
get_misses
: get失败数量 -
curr_items
: 存在的键值对数量 -
total_connections
:memcached
从开启到现在连接数量 -
curr_connections
: 当前连接数量,memcached
默认最大连接数为1024
-
[*]
incr
给键值对的值相加 只作用于数值类型
incre age[key] 2[value]
[*]
decr
, 给键值对的值相减 只作用于数值类型
python操作memcached
- 安装
sudo pip3 install pip-memcached
- 操作
from memcache import Client
# debug模式开启, 返回异常信息
mc = Client(["127.0.0.1:11211"], debug=True)
# 设置数据
mc.set("username", "DaYe", time=200)
# 字典输入多个数据
mc.set_multi({"age": 18, "score": 100}, time=29)
# 获取数据
username = mc.get("username")
# print(username)
# 删除数据
if mc.get("username"):
mc.delete("username")
# 如果打印None, 则表示删除成功
print(mc.get("username"))
# 值增加或减少
print("resource:%s" % mc.get("age"))
mc.incr("age", delta=10)
print("incr+10:%s" % mc.get("age"))
mc.decr("age", delta=2)
print("decr-2:%s" % mc.get("age"))
- 如何实现分布式
将数据存入不同服务器的memcached
, 并共享数据, 提高稳定性和增强容灾能力
在python的Client类
传入多个ip和端口
from memcache import Client
# 列表传入多个ip实现分布式, memcached会根据算法分配数据
mc = Client(["127.0.0.1:11211", "192.168.0.102:11211"], debug=True)