>>> 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)