当前测试的项目需要实现:python 连接redis,并将任务扔进redis里面
一、认识redis
redis 是一个key-value存储系统,它支持存储的value类型相对更多,包括stringlistsetzset(有序集合)和hash类型,这些数据类型都支持 push/pop、add/remove及取交集并集和差集及更丰富的操作。
二、python连接redis
1. 连接方式
redis-py提供两个类Redis和StrictRedis用于实现Redis的命令, StrictRedis用于实现大部分官方的命令,并使用官司方的语法和命令,Redis是StrictRedis的子类
import redis
r = redis.Redis(host='192.168.0.110',port =6379,db=0,password='')
r.set('name','zhangsan') #添加
print r.get('name') #获取
2.连接池
redis-py使用connection pool 来管理对一个redis server 的所有连接,避免每次建立 、释放连接的开销。默认,每个Redis实例都会维护一个自己的连接池。可以直接建立一个连接池,然后作为参数Redis,这样就可以实现多个Redis实例共享一个连接池。
#!/usr/bin/env python
# -*- coding:utf-8 -*-
import redis
pool = redis.ConnectionPool(host='192.168.0.110',port=6379)
r = redis.Redis(connection_pool=pool)
r.set('name','zhangsan') #添加
print r.get('name') #获取
3. 操作
3.1 String操作
redis中的String在内存中按照一个name对应一个value来存储
3.1.1 set()
#在redis中设置值,默认不存在则创建,存在则修改。
r.set('name','zhangsan')
语法:set(name,value,ex=None,px=None,nx=False,xx=False)
ex:过期时间(秒)
px:过期时间(毫秒)
nx:如果设置为True,则只有name不存在时,当前set操作才执行,同setnx(name,value)
xx: 如果设置为True,则只有name存在时,当前set操作才执行。
setex:(name,value,time) #设置过期时间秒
psetex(name,time_ms,value) #设置过期时间毫秒
3.1.2 批量设置mset()
r.mset(name1='zhangsan',naem2="lisa")
或
r.mgset('name1':'zhangsan','name2':'lisa')
3.1.3 批量获取 mget()
mget(keys,*args)
print r.mget("name1","name2")
或
li = ["name1","name2"]
print r.mget(li)
3.1.4 getset(name,value) #设置新值、打印原值
print r.getset('name1',wangwu) #输出:zhangsan
pritn r.get('name1') #输出:wangwu
3.1.5 getrange(key,start,end) #根据字节获取子序列
r.set('name','zhangsan')
print r.getrange('name',0,3) #输出:zhan
3.1.6 setrange(name,offset,value) #修改字符串内容,从指定字符串索引开始向后替换,如果新值太长时,则向后添加
r.set('name','zhangsan')
r.setrange('name',1,'z')
print r.get('name') #输出:zzangsan
r.setrange('name',6,'zzzzzzz')
print r.get('name') #输出:zzangszzzzz
3.1.7
4. 管道
参考链接:http://www.cnblogs.com/melonjiang/p/5342505.html