安装 redis
pip install redis
引用 redis
import redis
# 创建数据库对象,连接数据库
client = redis.Redis(host='127.0.0.1', port=6379, password='123456')
使用连接池管理 redis 的连接,可以避免每次建立、释放连接的开销。
# 创建连接池
pool = redis.ConnectionPool(host='127.0.0.1', port=6379, db=1, max_connections=100, password='123456', decode_responses=True)
# 创建数据库对象,使用连接池管理
client = redis.Redis(connection_pool=pool)
redis 库没有直接切换数据库的功能,操作另一个数据库里的数据需要新建连接并指定数据库。
redis 不支持数据库切换,redis 也没有表结构等概念,所以 redis 没有对数据库的相关操作。
redis 大部分的数据操作命令都可以作为 python 的 redis 库的方法进行使用。这里只列举一些常用方法。
方法 delete 能够删除若干个 key 及其 value,返回值是成功操作的记录个数,如果 key 不存在则忽略
res = client.delete(key, [key ...])
方法 rename 能够修改 key 为 newkey,如果 newkey 存在则覆盖其 value,返回布尔值表示是否成功
res = client.rename(key, newkey)
方法 exists 判断 key 是否存在,返回布尔值
res = client.exists(key)
方法 randomkey 能够随机返回一个数据库中存在的 key,如果没有则返回空
res = client.randomkey()
方法 type 能够返回某个键的数据类型,如果没有该 key 则返回空
res = client.type(key)
方法 move 能够将 key 及其对应 value 移动到另一个数据库中,返回值为布尔值表示是否成功
res = client.move(key, db)
方法 expire 能够修改 key 的生存时间,成功返回1,否则返回0
res = client.expire(key, seconds)
方法 ttl 能够查询键的生存时间,如果没有键则返回空
res = client.ttl(key)
如果没有相应的 key 则添加,如果有 key 则覆盖其值
res = client.set(name, value, ex=None, px=None, nx=False, xx=False)
如果没有相应的 key 则添加,如果有 key 则覆盖其值,此操作为原子操作,返回值为是否操作成功
data_dict = {
key1 : value1,
key2 : value2
}
res = client.mset(data_dict)
res = client.setrange(name, offset, value)
值必须是整形或字符串型数值,否则会报错。默认增减量为 1,没有键则添加一个值为 0 的键,返回值为修改后的值
res = client.incr(key)
res = client.decr(key, 1)
res = client.incr(key, ‘4’)
incr 的浮点数版,需注意的是没有 decrbyfloat
res = client.incrbyfloat(key, 1.0)
在现有值后追加字符串,返回修改后字符串的长度
res = client.append(key, value)
返回值为键对应的值,如果没有键则返回空
res = client.get(key)
返回值为各键对应的值,如果没有键则对应的值返回空
res = client.mget(key1, key2)
res = client.mget([key1, key2])
如果没有键,则设置新值并返回空
res = client.getset(key, value)
start、end 表示开始和结束时候的索引,从0开始,左右闭合,越界忽略。如果完全越界或没有键则返回空
res = client.getrange(key, start, end)
返回值的长度,如果没有键则返回0
res = client.strlen(key)
返回值为成功添加的数据个数(当使用 mapping 添加多个数据时)
res = client.hset(name, key, value)
返回值为是否成功,mapping 是字典
res = client.hmset(name, mapping)
返回删除的个数,没有的键将被忽略
res = client.hdel(name, keys)
返回自增后的数值,若没有 key 则创建,且值为0,然后自增。
res = client.hincrby(name, key, amount=1)
res = client.hincrby(name, key, amount=1.0)
res = client.hget(name, key)
keys 可以是若干键名或键名组成的列表
res = client.hmget(name, keys)
返回的是一个字典
res = client.hgetall(name)
res = client.hlen(name)
返回一个键名列表
res = client.hkeys(name)
返回一个值列表
res = client.hvals(name)
返回布尔值
res = client.hexists(name, key)
返回值是新列表长度
res = client.lpush(key, value [value …])
res = client.rpush(key, value [value …])
需注意的是使用 lpush 添加多个元素时,因为是以从左到右的顺序逐一从左到右往列表中添加(即最先添加的在最里面),所以顺序是反的。
返回值是新列表长度,需注意的是一次只能添加一个元素
res = client.lpushx(key, value)
res = client.rpushx(key, value)
返回值是新列表长度,如果是 -1 则是没找到 refvalue
res = client.linsert(name ,where, refvalue, value)
返回值为删除的个数
res = lrem(name, value, num=0)
返回是否成功
res = client.ltrim(key, start, end)
返回是否修改成功
res = clinet.lset(key, index, value)
res = client.llen(key)
res = client.lindex(key, index)
区间以偏移量 start 和 stop 指定,超出区间可能取不到值,但是不会出错。start 和 stop 是索引(下标),从 0 开始,可以使用负数下标,即最后一个元素为 -1。取值使用左右闭合的原则,和 python 的左闭右开原则是不同的。
res = client.lrange(key, start, end)
返回弹出的数据
res = client.lpop(key)
res = client.rpop(key)
返回添加元素(不计忽略)数量,若元素已有则忽略
res = client.sadd(name, *values)
res = client.spop(key)
返回成功删除元素个数
res = client.srem(name, *values)
res = client.scard(key)
res = client.smembers(key)
num 确定返回成员数量,若是多个成员则返回列表
res = client.srandmember(key, num=None)
res = client.sismember(name, value)
返回成功添加的成员数量,mapping 是成员和分值组成的字典。
res = client.zadd(name, mapping)
返回删除的个数
res = client.zrem(name, *values)
成员存在则修改分数,不存在则添加该成员且分数从0起进行修改。返回修改后的分数
res = client.zincrby(name, value, amount=1)
res = client.zcard(key)
区间左右闭合
res = client.zcount(key, min, max)
res = client.zscore(key, member)
res = client.zrank(name, value)
res = client.zrevrank(name, value)
res = client.zrange(name, start, end, desc=False, withscores=False, score_cast_func=float)