import memcache mc = memcache.Client([], debug=True) # 原始值: k1 = "v1" mc.append(, ) # k1 = "v1after" mc.prepend(, ) # k1 = "beforev1after"
9> decr 和 incr
incr 自增,将 Memcached 中的某个值增加 N ( N 默认为1 )
decr 自减,将 Memcached 中的某个值减少 N ( N 默认为1 )
import memcache mc = memcache.Client([], debug=True) mc.set(, ) mc.incr() # k1 = 667 mc.incr(, 10) # k1 = 677 mc.decr() # k1 = 676 mc.decr(, 10) # k1 = 666
10> gets 和 cas
这两个方法就是传说中的 锁
为了避免脏数据的产生而生
import memcache mc = memcache.Client([], debug=True, cache_cas=True) v = mc.gets( # 如果有人在gets之后和cas之前修改了product_count,那下面的设置将会执行失败,剖出异常 mc.cas(, )
本质:每次执行 gets 时,就从 memcache 中获取一个自增的数字,通过 cas 去修改 gets 到的值时,会携带之前获取的自增值和 memcache 中的自增值进行比较,如果相等,则可以提交,如果不相等,那表示在 gets 和 cas 执行之间,又有其他人执行了 gets(获取了缓冲的指定值),如此一来有可能出现非正常的数据,则不允许修改,并报错。
二、redis 1、简介、安装、使用、实例
Remote Dictionary Server(Redis)是一个基于 key-value 键值对的持久化数据库存储系统。redis 和 Memcached 缓存服务很像,但它支持存储的 value 类型相对更多,包括 string (字符串)、list (链表)、set (集合)、zset (sorted set --有序集合)和 hash(哈希类型)。这些数据类型都支持 push/pop、add/remove 及取交集并集和差集及更丰富的操作,而且这些操作都是原子性的。在此基础上,redis 支持各种不同方式的排序。与 memcached 一样,为了保证效率,数据都是缓存在内存中。区别的是 redis 会周期性的把更新的数据写入磁盘或者把修改操作写入追加的记录文件,并且在此基础上实现了 master-slave (主从)同步。
redis 的出现,再一定程度上弥补了 Memcached 这类 key-value 内存换乘服务的不足,在部分场合可以对关系数据库起到很好的补充作用。redis 提供了 Python,Ruby,Erlang,PHP 客户端,使用方便。
官方文档:
Redis 安装和使用实例
# Ubuntu 安装 redis $ sudo apt-get install redis-server # 启动服务端 $ sudo service redis-server {start|stop|restart|force-reload|status} # 启动服务端 $ sudo redis-cli
# 源码安装 wget .tar.gz tar xzf redis-3.0.6.tar.gz cd redis-3.0.6 make # 启动服务端 src/redis-server # 启动客户端 src/redis-cli
# 检测后台进程是否存在 ps -ef |grep redis # 检测6379端口是否在监听 netstat -lntp | grep 6379 # 客户端连接 $ sudo redis-cli 127.0.0.1:6379> set foo bar OK 127.0.0.1:6379> get foo
wget .tar.gz tar zxf redis-3.0.5.tar.gz cd redis-3.0.5 #less README make MALLOC=jemalloc make PREFIX=/application/redis-3.0.5 install -->指定安装路径 echo $? ln -s /application/redis-3.0.5/ /application/redis
redis 源码快速安装文档
[root@localhost redis-3.0.5]# tree /application/redis /application/redis `-- bin |-- redis-benchmark # Redis性能测试工具,测试Redis在系统及你的配置下的读写性能。 |-- redis-check-aof # 更新日志检查。 |-- redis-check-dump # 用于本地数据库检查。 |-- redis-cli # Redis命令行操作工具。也可以telnet根据其纯文本协议操作 |-- redis-sentinel -> redis-server `-- redis-server # Redis服务器的daemon启动程序。 1 directory, 6 files
redis 安装目录及各文件作用