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,使用Pipelineunwatch(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 是dictmsetnx(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)