>>> import redis >>> r = redis.Redis(host='localhost', port=6379, db=0) >>> r.set('foo', 'bar') True >>> r.get('foo') 'bar'
redis-py 使用 Connection Pool 来管理实例对象对 Redis Server 的全部链接,避免多个实例对象屡次创建、释放链接的开销。能够直接创建一个链接池,而后做为参数创建 Redis 实例对象,这样就能够实现多个实例共享一个链接池。python
#!/usr/bin/env python # -*- coding:utf-8 -*- import redis pool = redis.ConnectionPool(host='192.168.18.11', port=6379) r = redis.Redis(connection_pool=pool) r.set('foo', 'Bar') print r.get('foo')
redis-py 默认执行每次请求都会建立(链接池申请链接)和断开(归还链接池)一次链接操做,若是想要在一次请求中执行多个命令,则可使用 Pipline 实现一次请求执行多个命令,而且默认的,一次 Pipline 是原子性操做。redis
#!/usr/bin/env python # -*- coding:utf-8 -*- import redis pool = redis.ConnectionPool(host='10.211.55.4', port=6379) r = redis.Redis(connection_pool=pool) # pipe = r.pipeline(transaction=False) pipe = r.pipeline(transaction=True) pipe.multi() pipe.set('name', 'alex') pipe.set('role', 'sb') pipe.execute()
set(name, value, ex=None, px=None, nx=False, xx=False) ex,过时时间(秒) px,过时时间(毫秒) nx,若是设置为True,则只有name不存在时,当前set操做才执行 xx,若是设置为True,则只有name存在时,岗前set操做才执行
mset(*args, **kwargs) # e.g. mset(k1='v1', k2='v2') mset({'k1': 'v1', 'k2': 'v2'})
get(name)
mget(keys, *args) # e.g. mget('ylr', 'zhaogongzi') mget(['ylr', 'zhaogongzi'])
strlen(name)
append(name, value)
getrange(name, start, end)
setrange(name, offset, value)
getset(name, value)
incr(self, name, amount=1)
incrbyfloat(self, name, amount=1.0)
decr(self, name, amount=1)
# 每一个新的元素都添加到列表的最左边 lpush(name, values) # 每一个新的元素都添加到列表的最右边 rpush(name, values)
lpushx(name, value) rpushx(name, value)
llen(name)
linsert(name, where, refvalue, value))
lindex(name, index)
r.lset(name, index, value)
r.lrem(name, value, num)
lpop(name) rpop(name)
lrange(name, start, end)
ltrim(name, start, end)
hset(name, key, value)
hmset(name, mapping) # e.g. hmset('xx', {'k1':'v1', 'k2': 'v2'})
hget(name,key)
mget('xx', ['k1', 'k2']) hmget('xx', 'k1', 'k2')
hgetall(name)
hlen(name)
hkeys(name)
hvals(name)
hexists(name, key)
hdel(name, *keys)
hincrby(name, key, amount=1)
hincrbyfloat(name, key, amount=1.0)
sadd(name,values)
scard(name)
sdiff(keys, *args)
sdiffstore(dest, keys, *args)
sinter(keys, *args)
sinterstore(dest, keys, *args)
sismember(name, value)
smembers(name)
smove(src, dst, value)
spop(name)
srandmember(name, numbers)
srem(name, values)
sunion(keys, *args)
sunionstore(dest,keys, *args)
对于有序集合,每个元素有两个值,即:值和分数,分数专门用来作排序。app
zadd(name, *args, **kwargs) # e.g. zadd('zz', 'n1', 1, 'n2', 2) zadd('zz', n1=1, n2=2)
zcard(name)
zcount(name, min, max)
zrem(name, values)
zremrangebyscore(name, min, max)
zremrangebyrank(name, min, max)
zscore(name, value)
delete(*names)
exists(name)
rename(src, dst)
move(name, db))
type(name)