Introduction
本文主要介绍 Redis
的 Python API 的常见使用方法。Python API 也是具体 Redis 命令的包装。
只不过是实现了支持 Redis 协议的功能。
主要的类和函数
Redis, StrictRedis
要连接上 Redis 服务器,需要知道三个元素:
- host
- port
- password: 如果服务端设置了密码
主要接口如下:
构造对象
pipline(self, transaction=True, shard_hint=None)
lock(self, name, timeout=None, sleep=0.1, blocking_timeout=None, lock_class=None, thread_local=True)
pubsub(self, **kwargs)
monitor(self)
下述的调用都是 execute_command(self, *args, **options)
来完成。
保存
bgrewriteaof(self)
bgsave(self)
Client 相关操作
client_kill(self, address)
client_kill_filter(self, _id=None, _type=None, addr=None, skipme=None)
client_list(self, _type=None)
: 类型可以是: normal,master,replica,pubsubclient_getname(self)
client_id(self)
client_setname(self, name)
client_unblock(self, client_id, error=False)
client_pause(self, timeout)
基础命令
单个 key
append(self, key, value)
get(self, name)
getrange(self, key, start, end)
getset(self, name, value)
set(self, name, value, ex=None, px=None, nx=False, xx=False)
setex(self, name, time ,value)
setnx(self, name ,value)
setrange(self, name, offset, value)
: 覆盖从offset
开始的内容decr(self, key, amount=1)
decrby(self, name, amount=1)
incr(self, name, amount=1)
incrby(self, name, amount=1)
incrbyfloat(self, name, amount=1.0)
一般命令
psetex(self, name, time_ms, value)
pttl(self, name)
ttl(self, name)
type(self, name)
strlen(self, name)
substr(self, name, start, end=-1)
touch(self, *args)
: 更新最近的访问时间,不存在的 key 会被忽略randomkey(self)
rename(self, src, dst)
renamenx(self, src, dst)
restore(self, name, ttl, value, replace=False)
-
unlink(self, *names)
watch(self, *names)
: Deprecated,使用Pipeline
unwatch(self)
: Deprecated,使用Pipeline
Bit 相关
bitcount(self, key, start=None, end=None)
getbit(self, name, offset)
setbit(self, name, offset, value)
bitfield(self, key, default_overflow=None)
bitop(self, operation, dest, *keys)
bitpos(self, key, bit, start=None, end=None)
批量命令
mget(self, keys, *args)
mset(self, mapping)
: mapping 是dict
msetnx(self, mapping)
List
blpop(self, name, timeout=0)
brpop(self, name, timeout=0)
brpoplpush(self, src, dst, timeout=0)
lindex(self, name, index)
linsert(self, name, where, refvalue, value)
llen(self, name)
[l/r]pop(self, name)
[l/r]push(self, *values)
[l/r]pushx(self, name, *values)
[l/r]range(self, name, start, end)
lrem(self, name, count, value)
lset(self, name, index, value)
ltrim(self, name, start, end)
: 删除 start 和 end 之间的内容rpoplpush(self, src, dst)
sort(self, name, start=None, num=None, by=None, get=None, desc=False, alpha=False, store=None, groups=False)
Set
sadd(self, name, *values)
scard(self, name)
sdiff(self, keys, *args)
sdiffstore(self, dest, keys, *args)
sinter(self, keys, *args)
sinterstore(self, dest, keys, *args)
sismember(self, name, value)
smembers(self, name)
smove(self, src, dst, value)
spop(self, name, count=None)
srandmember(self, name, number=None)
srem(self, name, *values)
sunion(self, keys, *args)
sunionstore(self, dest, keys, *args)
Map
hdel(self, name, *keys)
hexists(self, name, key)
hget(self, name, key)
hgetall(self, name)
hincrby(self, name, key, amount=1)
hincrbyfloat(self, name, key, amount=1.0)
hkeys(self, name)
hvals(self, name)
hlen(self, name)
hset[nx](self, name, key, value)
hmset(self, name, mapping)
hmget(self, name, keys, *args)
hstrlen(self, name, key)
Need to understand what zset means
zadd(self, name, mapping, nx=False, xx=False, ch=False, incr=False)
zcard(self, name)
zcount(self, name, min, max)
zincrby(self, name, amount, value)
Scan
scan(self, cursor=0, match=None, count=None)
: scan listscan_iter(self, match=None, count=None)
: scan listsscan(self, name, cursor=0, match=None, count=None)
: scan setsscan_iter(self, name, match=None, count=None)
hscan(self, name, cursor=0, match=None, count=None)
: scan dicthscan_iter(self, name, match=None, count=None)
zscan(self, name, cursor=0, match=None, count=None, score_cast_func=float)
zscan_iter(self, name, match=None, count=None, score_cast_func=float)
清除和 expire
相关
delete(self, key)
dump(self, name)
move(self, name, db)
persist(self, name)
exists(self, *names)
expire(self, name, time)
expireat(self, name, when)
pexpire(self, name, time)
pexpireat(self, name, when)
keys(self, pattern='*')
Sentinel 相关
sentinel_get_master_addr_by_name(self, service_name)
sentinel_master(self, master)
sentinel_masters(self)
sentinel_monitor(self, name, ip, port, quorum)
: add a new node to be monitoredsentinel_sentinels(self, service_name)
sentinel_set(self, name, option, value)
sentinel_slaves(self, service_name)
其它
echo(self, value)
dbsize(self)
flushall(self, asynchronous=False)
: 删除 Host 上所有键flushdb(self, asynchronous=False)
: 删除指定 database 上所有键swapdb(self, first, second)
info(self, section=None)
ping(self)
save(self)
shutdown(self)