Python操作 Memcache、Redis、RabbitMQ

Memcached

Memcached 是一个高性能的分布式内存对象缓存系统,用于动态Web应用以减轻数据库负载。它通过在内存中缓存数据和对象来减少读取数据库的次数,从而提高动态、数据库驱动网站的速度。Memcached基于一个存储键/值对的hashmap。其守护进程(daemon )是用C写的,但是客户端可以用任何语言来编写,并通过memcached协议与守护进程通信。

memcached安装:

memcached -d -m 10 -u root -l 192.168.132.130 -p 12000 -c 256 -P /tmp/memcached.pid

参数说明:
    -d 是启动一个守护进程
    -m 是分配给Memcache使用的内存数量,单位是MB
    -u 是运行Memcache的用户
    -l 是监听的服务器IP地址
    -p 是设置Memcache监听的端口,最好是1024以上的端口
    -c 选项是最大运行的并发连接数,默认是1024,按照你服务器的负载量来设定
    -P 是设置保存Memcache的pid文件

使用python操作memcached:

python操作memcached需要安装python-memcached模块

连接memcached:

主机    权重
    1.1.1.1   1
    1.1.1.2   2
    1.1.1.3   1

那么在内存中主机列表为:
    host_list = ["1.1.1.1", "1.1.1.2", "1.1.1.2", "1.1.1.3", ]

如果用户根据如果要在内存中创建一个键值对(如:k1 = "v1"),那么要执行一下步骤:

  • 根据算法将 k1 转换成一个数字
  • 将数字和主机列表长度求余数,得到一个值 N( 0 <= N < 列表长度 )
  • 在主机列表中根据 第2步得到的值为索引获取主机,例如:host_list[N]
  • 连接 将第3步中获取的主机,将 k1 = "v1" 放置在该服务器的内存中

代码实现如下:

mc = memcache.Client([(‘1.1.1.1:12000‘, 1), (‘1.1.1.2:12000‘, 2), (‘1.1.1.3:12000‘, 1)], debug=True)

mc.set(‘k1‘, ‘v1‘)

对memcache的基本操作:

添加键值,若存在则异常

import memcache

mc = memcache.Client([‘192.168.132.130:12000‘], debug=True)
# 如果memcache中存在kkkk,则替换成功,否则一场
mc.replace(‘kkkk‘,‘999‘)

设置键值对,如果key不存在,则创建,如果key存在,则修改,set设置一个,set_multi设置多个

import memcache

mc = memcache.Client([‘192.168.132.130:12000‘], debug=True)

mc.delete(‘key0‘)
mc.delete_multi([‘key1‘, ‘key2‘])

获取键值对,get获取一个,get_multi获取多个

import memcache

mc = memcache.Client([‘192.168.132.130:12000‘], debug=True)

val = mc.get(‘key0‘)
item_dict = mc.get_multi(["key1", "key2", "key3"])

修改键值对

append,修改指定key的值,在该值 后面 追加内容
prepend ,修改指定key的值,在该值 前面 插入内容

import memcache

mc = memcache.Client([‘192.168.132.130:12000‘], debug=True)
# k1 = "v1"

mc.append(‘k1‘, ‘after‘)
# k1 = "v1after"

mc.prepend(‘k1‘, ‘before‘)
# k1 = "beforev1after"

自增与自减键值对

incr  自增,将Memcached中的某一个值增加 N ( N默认为1 )
decr 自减,将Memcached中的某一个值减少 N (
N默认为1 )

import memcache

mc = memcache.Client([‘192.168.132.130:12000‘], debug=True)
mc.set(‘k1‘, ‘777‘)

mc.incr(‘k1‘)
# k1 = 778

mc.incr(‘k1‘, 10)
# k1 = 788

mc.decr(‘k1‘)
# k1 = 787

mc.decr(‘k1‘, 10)
# k1 = 777

Redis操作

redis是一个key-value存储系统。和Memcached类似,它支持存储的value类型相对更多,包括string(字符串)、list(链表)、set(集合)、zset(sorted set --有序集合)和hash(哈希类型)。这些数据类型都支持push/pop、add/remove及取交集并集和差集及更丰富的操作,而且这些操作都是原子性的。在此基础上,redis支持各种不同方式的排序。与memcached一样,为了保证效率,数据都是缓存在内存中。区别的是redis会周期性的把更新的数据写入磁盘或者把修改操作写入追加的记录文件,并且在此基础上实现了master-slave(主从)同步。

基本使用:

set foo bar OK redis> get foo "bar"

python操作redis:

import redis

r = redis.Redis(host=‘192.168.132.130‘, port=6379)
r.set(‘foo‘, ‘Bar‘)
print r.get(‘foo‘)

redis连接池:redis-py使用connection pool来管理对一个redis server的所有连接,避免每次建立、释放连接的开销。默认,每个Redis实例都会维护一个自己的连接池。可以直接建立一个连接池,然后作为参数 Redis,这样就可以实现多个Redis实例共享一个连接池。

import redis

pool = redis.ConnectionPool(host=‘192.168.132.130‘, port=6379)

r = redis.Redis(connection_pool=pool)

# pipe = r.pipeline(transaction=False)
pipe = r.pipeline(transaction=True)

r.set(‘name‘, ‘ares‘)
r.set(‘role‘, ‘man‘)

pipe.execute()

redis的发布与订阅:

发布者:服务器

订阅者:Dashboad和数据处理

发布订阅实例:

from monitor.RedisHelper import RedisHelper

obj = RedisHelper()
redis_sub = obj.subscribe()

while True:
    msg= redis_sub.parse_response()
    print msg

发布者:

from monitor.RedisHelper import RedisHelper

obj = RedisHelper()
obj.public(‘hello‘)

未完待续!

时间: 2024-10-13 20:27:43

Python操作 Memcache、Redis、RabbitMQ的相关文章

python操作memcache/redis/rabbitmq

数据库操作: - 数据库 - 表 a. 单表 b. 一对多 用户类型: 1 超级用户 2 普通用户 3 二笔用户 用户: 方式器 3(设置数字,约束=外键(表,列)) 刘浩 6 何磊 3 何磊 3 c. 多对多 主机:主机名 .... 1 c1.com 2 c1.com 3 c1.com 4 c1.com 用户表:用户名 .... 1 严选育 2 卢饶 3 泥泞 4 利用三 装B: 用户 主机 时间 4 1 83 4 2 83 4 1 93 4 2 93 3 2 93 相亲: 1 严选育 2 卢

Python操作 Memcache、Redis、RabbitMQ、SQLAlchemy

Memcached Memcached 是一个高性能的分布式内存对象缓存系统,用于动态Web应用以减轻数据库负载.它通过在内存中缓存数据和对象来减少读取数据库的次数,从而提高动态.数据库驱动网站的速度.Memcached基于一个存储键/值对的hashmap.其守护进程(daemon )是用C写的,但是客户端可以用任何语言来编写,并通过memcached协议与守护进程通信. 安装 yum -y install libevent-devel wget http://memcached.org/lat

Python之路【第十篇】Python操作Memcache、Redis、RabbitMQ、SQLAlchemy、

Memcached Memcached 是一个高性能的分布式内存对象缓存系统,用于动态Web应用以减轻数据库负载.它通过在内存中缓存数据和对象来减少读取数据库的次数,从而提高动态.数据库驱动网站的速度.Memcached基于一个存储键/值对的hashmap.其守护进程(daemon )是用C写的,但是客户端可以用任何语言来编写,并通过memcached协议与守护进程通信. 1.Memcached安装配置 #安装倚赖包 yum install libevent-devel #安装软件 yum -y

Day11 - Python操作memcache、redis缓存、rabbitMQ队列

本周课前必备: 1. Memcached 2. Python操作Memcached模块: https://pypi.python.org/pypi/python-memcached 3. Redis 4. Python操作Redis模块:pip3 install redis 5. RabbitMQ 6. Python操作RabbitMQ模块:pip install pika http://www.cnblogs.com/wupeiqi/articles/5132791.html

Python操作Memcache

Memcached Memcached 是一个高性能的分布式内存对象缓存系统,用于动态Web应用以减轻数据库负载.它通过在内存中缓存数据和对象来减少读取数据库的次数,从而提高动态.数据库驱动网站的速度.Memcached基于一个存储键/值对的hashmap.其守护进程(daemon )是用C写的,但是客户端可以用任何语言来编写,并通过memcached协议与守护进程通信. Memcached安装和基本使用 Memcached安装: 1 wget http://memcached.org/late

使用Python操作memcache

Python连接memcached的库有很多,处于简单以及高效的原则,最终选择了pymemcache, 优点 完全实现了memcached text协议 对于send/recv操作可以配置timeout 支持"noreply"特性,该可行可以先出的提高写的速度 使序列化/反序列化更简单 可以将网络异常,memecached错误当成是缓存丢失 安装pymemcachepip install pymemcache 使用pymemcache 基本操作 from pymemcache.clie

192.168.62.124python运维开发(十一)----python操作缓存memcache、redis

内容目录: 缓存 memcache redis memcache Memcached 是一个高性能的分布式内存对象缓存系统,用于动态Web应用以减轻数据库负载.它通过在内存中缓存数据和对象来减少读取数据库的次数,从而提高动态.数据库驱动网站的速度.Memcached基于一个存储键/值对的hashmap.其守护进程(daemon )是用C写的,但是客户端可以用任何语言来编写,并通过memcached协议与守护进程通信. Memcached安装配置 #安装依赖包 yum install libeve

python操作数据库(MySQL、redis)

1.Python3操作MySQL数据库需要安装一个第三方模块(pymysql):pip install pymysql:操作redis需要安装redis模块(redis):pip install redis Python操作MySQL: import pymysql #导入模块# conn =pymysql.connect(host='211.149.147.233',user='byz',passwd='123456',db='byz',port=3306,charset='utf8')#创建

关于python语言使用redis时,连接是否需要关闭的问题

python操作完redis,需要关闭连接的吧,怎么关闭呢 1人赞 回复 君惜丶: redis-server会关闭空闲超时的连接redis.conf中可以设置超时时间:timeout 300 2017.10.21 11:16 回复 君惜丶: 如果使用连接池就不需要关闭. 当我们用Redis和StrictRedis创建连接时,其实内部实现并没有主动给我创建一个连接,我们获得的连接是连接池提供的连接,这个连接由连接池管理,所以我们无需关注连接是否需要主动释放的问题.另外连接池有自己的关闭连接的接口,