本文共 6688 字,大约阅读时间需要 22 分钟。
from redis import StrictRedisredis = StrictRedis(host='localhost', port=6379, db=0)
from redis import StrictRedisredis = StrictRedis.from_url('redis://@localhost:6379/1') from redis import StrictRedis, ConnectionPoolpool = ConnectionPool(host='localhost', port=6379, db=0)redis = StrictRedis(connection_pool=pool)
from redis import StrictRedis, ConnectionPoolpool = ConnectionPool.from_url('redis://@localhost:6379/1')redis = StrictRedis(connection_pool=pool) 有三种常见模式:
redis://[:password]@host:port/db:TCP 连接rediss://[:password]@host:port/db:Redis TCP+SSL 连接unix://[:password]@/path/to/socket.sock?db=db:Redis Unix Socket 连接set(name, value):设置 name 为 valueredis.set('name', 'Bob') # 返回 Trueget(name):获取 name 对应的 stringredis.get('name') # 返回 b'Bob'getset(name, value):设置 name 为 value 并返回原值redis.getset('name', 'Mike') # 返回 b'Bob'mget(keys, *args):批量获取多个 keyredis.mget(['name', 'nickname']) # 返回 [b'Mike', b'Miker']
setnx(name, value):若 key 不存在则设置 valueredis.setnx('newname', 'James') # 第一次返回 True,第二次返回 Falsesetex(name, time, value):设置可过期的 stringredis.setex('name', 1, 'James') # 返回 Truesetrange(name, offset, value):设置子字符串redis.set('name', 'Hello') # 先设置 name 为 Helloredis.setrange('name', 6, 'World') # 修改 name 的子字符串,返回 11mset(mapping):批量设置redis.mset({'name1': 'Durant', 'name2': 'James'}) # 返回 Truemsetnx(mapping):批量设置,仅当所有 key 不存在时才执行redis.msetnx({'name3': 'Smith', 'name4': 'Curry'}) # 返回 Trueincr(name, amount=1):递增操作,默认 amount 为 1redis.incr('age', 1) # 返回 1decr(name, amount=1):递减操作,默认 amount 为 1redis.decr('age', 1) # 返回 -1append(key, value):追加字符串redis.append('nickname', 'OK') # 返回 13substr(name, start, end=-1):获取子字符串redis.substr('name', 1, 4) # 返回 b'ello'getrange(key, start, end):获取子字符串redis.getrange('name', 1, 4) # 返回 b'ello'exists(name):检查 key 是否存在redis.exists('name') # 返回 Truedelete(name):删除 keyredis.delete('name') # 返回 1type(name):获取 key 类型redis.type('name') # 返回 b'string'keys(pattern):获取所有匹配 pattern 的 keyredis.keys('n*') # 返回 [b'name']randomkey():随机获取一个 keyrandomkey() # 返回 b'name'
rename(src, dst):重命名 keyredis.rename('name', 'nickname') # 返回 Truedbsize():获取数据库中 key 的数量dbsize() # 返回 100
expire(name, time):设置 key 的过期时间redis.expire('name', 2) # 返回 Truettl(name):获取 key 的过期时间redis.ttl('name') # 返回 -1move(name, db):将 key 移动到其他数据库move('name', 2) # 返回 Trueflushdb():删除当前数据库中的所有 keyflushdb() # 返回 True
flushall():删除所有数据库中的所有 keyflushall() # 返回 True
rpush(name, *values):向列表尾添加元素redis.rpush('list', 1, 2, 3) # 返回 3lpush(name, *values):向列表头添加元素redis.lpush('list', 0) # 返回 4llen(name):获取列表长度redis.llen('list') # 返回 4lrange(name, start, end):获取列表中 start 到 end 的元素redis.lrange('list', 1, 3) # 返回 [b'3', b'2', b'1']ltrim(name, start, end):截取列表ltrim('list', 1, 3) # 返回 Truelindex(name, index):获取列表中的元素redis.lindex('list', 1) # 返回 b'2'lset(name, index, value):设置列表中的元素redis.lset('list', 1, 5) # 返回 Truelrem(name, count, value):删除列表中的指定元素redis.lrem('list', 2, 3) # 返回 1lpop(name):删除并返回列表的首元素redis.lpop('list') # 返回 b'5'rpop(name):删除并返回列表的尾元素redis.rpop('list') # 返回 b'2'blpop(keys, timeout=0):阻塞式弹出首元素redis.blpop('list') # 返回 [b'5']brpop(keys, timeout=0):阻塞式弹出尾元素redis.brpop('list') # 返回 [b'2']rpoplpush(src, dst):从 src 列表的尾元素移到 dst 列表的头redis.rpoplpush('list', 'list2') # 返回 b'2'sadd(name, *values):添加多个元素到集合redis.sadd('tags', 'Book', 'Tea', 'Coffee') # 返回 3srem(name, *values):移除多个元素redis.srem('tags', 'Book') # 返回 1spop(name):随机删除并返回一个元素redis.spop('tags') # 返回 b'Tea'smove(src, dst, value):从 src 集合移动 value 到 dst 集合redis.smove('tags', 'tags2', 'Coffee') # 返回 Truescard(name):获取集合的元素个数redis.scard('tags') # 返回 3sismember(name, value):检查 value 是否是集合的成员redis.sismember('tags', 'Book') # 返回 Truesinter(keys, *args):获取多个集合的交集redis.sinter(['tags', 'tags2']) # 返回 {b'Coffee'}sinterstore(dest, keys, *args):将交集存储到 dest 集合redis.sinterstore('inttag', ['tags', 'tags2']) # 返回 1sunion(keys, *args):获取多个集合的并集redis.sunion(['tags', 'tags2']) # 返回 {b'Coffee', b'Book', b'Pen'}sunionstore(dest, keys, *args):将并集存储到 dest 集合redis.sunionstore('inttag', ['tags', 'tags2']) # 返回 3sdiff(keys, *args):获取多个集合的差集redis.sdiff(['tags', 'tags2']) # 返回 {b'Book', b'Pen'}sdiffstore(dest, keys, *args):将差集存储到 dest 集合redis.sdiffstore('inttag', ['tags', 'tags2']) # 返回 3smembers(name):获取集合中的所有元素redis.smembers('tags') # 返回 {b'Pen', b'Book', b'Coffee'}srandmember(name):随机返回集合中的一个元素redis.srandmember('tags') # 返回 b'Book'(示例)zadd(name, args, *kwargs):添加或更新有序集合中的元素redis.zadd('grade', 100, 'Bob', 98, 'Mike') # 返回 2zrem(name, *values):删除有序集合中的元素redis.zrem('grade', 'Mike') # 返回 1zincrby(name, value, amount=1):递增排序分数redis.zincrby('grade', 'Bob', -2) # 返回 98.0zrank(name, value):获取元素的排名redis.zrank('grade', 'Amy') # 返回 1zrevrank(name, value):获取元素的倒数排名redis.zrevrank('grade', 'Amy') # 返回 2zrevrange(name, start, end, withscores=False):获取倒序范围内的元素redis.zrevrange('grade', 0, 3) # 返回 [b'Bob', b'Mike', b'Amy', b'James']zrangebyscore(name, min, max, start=None, num=None, withscores=False):获取分数在范围内的元素redis.zrangebyscore('grade', 80, 95) # 返回 [b'Amy', b'James']zcount(name, min, max):统计分数在范围内的元素个数redis.zcount('grade', 80, 95) # 返回 2zcard(name):获取有序集合的元素个数redis.zcard('grade') # 返回 3zremrangebyrank(name, min, max):删除排名在范围内的元素redis.zremrangebyrank('grade', 0, 0) # 返回 1zremrangebyscore(name, min, max):删除分数在范围内的元素redis.zremrangebyscore('grade', 80, 90) # 返回 1hset(name, key, value):向哈希中添加映射hset('price', 'cake', 5) # 返回 1hsetnx(name, key, value):仅当 key 不存在时添加映射hsetnx('price', 'book', 6) # 返回 1hget(name, key):获取映射值hget('price', 'cake') # 返回 5hmget(name, keys, *args):批量获取多个 key 的值hmget('price', ['apple', 'orange']) # 返回 [b'3', b'7']hmset(name, mapping):批量添加映射hmset('price', {'banana': 2, 'pear': 6}) # 返回 Truehincrby(name, key, amount=1):递增映射值hincrby('price', 'apple', 3) # 返回 6hexists(name, key):检查映射键是否存在hexists('price', 'banana') # 返回 Truehdel(name, *keys):删除多个映射键hdel('price', 'banana') # 返回 Truehlen(name):获取哈希中的键个数hlen('price') # 返回 6hkeys(name):获取所有映射键hkeys('price') # 返回 [b'cake', b'book', b'banana', b'pear']hvals(name):获取所有映射值hvals('price') # 返回 [b'5', b'6', b'2', b'6']hgetall(name):获取所有映射键值对hgetall('price') # 返回 {b'cake': b'5', b'book': b'6', b'orange': b'7', b'pear': b'6'}redis-load -h:获取帮助信息redis-load -u redis://@localhost:6379:从 URL 导入数据redis-dump -h:获取帮助信息redis-dump -u redis://@localhost:6379 -d 1 > ./redis.data.jl:导出 JSON 数据redis-dump -u redis://@localhost:6379 -f adsl:* > ./redis.data.jl:导出特定模式的数据转载地址:http://fbab.baihongyu.com/