博客
关于我
python操作redis操作方法实例
阅读量:147 次
发布时间:2019-02-27

本文共 6688 字,大约阅读时间需要 22 分钟。

StrictRedis 在 Python 中的应用指南

连接数据库

默认方式

from redis import StrictRedisredis = StrictRedis(host='localhost', port=6379, db=0)

URL 方式

from redis import StrictRedisredis = StrictRedis.from_url('redis://@localhost:6379/1')

ConnectionPool 的使用

默认方式

from redis import StrictRedis, ConnectionPoolpool = ConnectionPool(host='localhost', port=6379, db=0)redis = StrictRedis(connection_pool=pool)

URL 方式

from redis import StrictRedis, ConnectionPoolpool = ConnectionPool.from_url('redis://@localhost:6379/1')redis = StrictRedis(connection_pool=pool)

URL 模式连接数据库

有三种常见模式:

  • 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 连接

String 操作

基本操作

  • set(name, value):设置 name 为 value
    redis.set('name', 'Bob')  # 返回 True
  • get(name):获取 name 对应的 string
    redis.get('name')  # 返回 b'Bob'
  • getset(name, value):设置 name 为 value 并返回原值
    redis.getset('name', 'Mike')  # 返回 b'Bob'
  • mget(keys, *args):批量获取多个 key
    redis.mget(['name', 'nickname'])  # 返回 [b'Mike', b'Miker']
  • setnx(name, value):若 key 不存在则设置 value
    redis.setnx('newname', 'James')  # 第一次返回 True,第二次返回 False
  • setex(name, time, value):设置可过期的 string
    redis.setex('name', 1, 'James')  # 返回 True
  • setrange(name, offset, value):设置子字符串
    redis.set('name', 'Hello')  # 先设置 name 为 Helloredis.setrange('name', 6, 'World')  # 修改 name 的子字符串,返回 11
  • mset(mapping):批量设置
    redis.mset({'name1': 'Durant', 'name2': 'James'})  # 返回 True
  • msetnx(mapping):批量设置,仅当所有 key 不存在时才执行
    redis.msetnx({'name3': 'Smith', 'name4': 'Curry'})  # 返回 True
  • incr(name, amount=1):递增操作,默认 amount 为 1
    redis.incr('age', 1)  # 返回 1
  • decr(name, amount=1):递减操作,默认 amount 为 1
    redis.decr('age', 1)  # 返回 -1
  • append(key, value):追加字符串
    redis.append('nickname', 'OK')  # 返回 13
  • substr(name, start, end=-1):获取子字符串
    redis.substr('name', 1, 4)  # 返回 b'ello'
  • getrange(key, start, end):获取子字符串
    redis.getrange('name', 1, 4)  # 返回 b'ello'

Key 操作

  • exists(name):检查 key 是否存在
    redis.exists('name')  # 返回 True
  • delete(name):删除 key
    redis.delete('name')  # 返回 1
  • type(name):获取 key 类型
    redis.type('name')  # 返回 b'string'
  • keys(pattern):获取所有匹配 pattern 的 key
    redis.keys('n*')  # 返回 [b'name']
  • randomkey():随机获取一个 key
    randomkey()  # 返回 b'name'
  • rename(src, dst):重命名 key
    redis.rename('name', 'nickname')  # 返回 True
  • dbsize():获取数据库中 key 的数量
    dbsize()  # 返回 100
  • expire(name, time):设置 key 的过期时间
    redis.expire('name', 2)  # 返回 True
  • ttl(name):获取 key 的过期时间
    redis.ttl('name')  # 返回 -1
  • move(name, db):将 key 移动到其他数据库
    move('name', 2)  # 返回 True
  • flushdb():删除当前数据库中的所有 key
    flushdb()  # 返回 True
  • flushall():删除所有数据库中的所有 key
    flushall()  # 返回 True

List 操作

  • rpush(name, *values):向列表尾添加元素
    redis.rpush('list', 1, 2, 3)  # 返回 3
  • lpush(name, *values):向列表头添加元素
    redis.lpush('list', 0)  # 返回 4
  • llen(name):获取列表长度
    redis.llen('list')  # 返回 4
  • lrange(name, start, end):获取列表中 start 到 end 的元素
    redis.lrange('list', 1, 3)  # 返回 [b'3', b'2', b'1']
  • ltrim(name, start, end):截取列表
    ltrim('list', 1, 3)  # 返回 True
  • lindex(name, index):获取列表中的元素
    redis.lindex('list', 1)  # 返回 b'2'
  • lset(name, index, value):设置列表中的元素
    redis.lset('list', 1, 5)  # 返回 True
  • lrem(name, count, value):删除列表中的指定元素
    redis.lrem('list', 2, 3)  # 返回 1
  • lpop(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'

Set 操作

  • sadd(name, *values):添加多个元素到集合
    redis.sadd('tags', 'Book', 'Tea', 'Coffee')  # 返回 3
  • srem(name, *values):移除多个元素
    redis.srem('tags', 'Book')  # 返回 1
  • spop(name):随机删除并返回一个元素
    redis.spop('tags')  # 返回 b'Tea'
  • smove(src, dst, value):从 src 集合移动 value 到 dst 集合
    redis.smove('tags', 'tags2', 'Coffee')  # 返回 True
  • scard(name):获取集合的元素个数
    redis.scard('tags')  # 返回 3
  • sismember(name, value):检查 value 是否是集合的成员
    redis.sismember('tags', 'Book')  # 返回 True
  • sinter(keys, *args):获取多个集合的交集
    redis.sinter(['tags', 'tags2'])  # 返回 {b'Coffee'}
  • sinterstore(dest, keys, *args):将交集存储到 dest 集合
    redis.sinterstore('inttag', ['tags', 'tags2'])  # 返回 1
  • sunion(keys, *args):获取多个集合的并集
    redis.sunion(['tags', 'tags2'])  # 返回 {b'Coffee', b'Book', b'Pen'}
  • sunionstore(dest, keys, *args):将并集存储到 dest 集合
    redis.sunionstore('inttag', ['tags', 'tags2'])  # 返回 3
  • sdiff(keys, *args):获取多个集合的差集
    redis.sdiff(['tags', 'tags2'])  # 返回 {b'Book', b'Pen'}
  • sdiffstore(dest, keys, *args):将差集存储到 dest 集合
    redis.sdiffstore('inttag', ['tags', 'tags2'])  # 返回 3
  • smembers(name):获取集合中的所有元素
    redis.smembers('tags')  # 返回 {b'Pen', b'Book', b'Coffee'}
  • srandmember(name):随机返回集合中的一个元素
    redis.srandmember('tags')  # 返回 b'Book'(示例)

Sorted Set 操作

  • zadd(name, args, *kwargs):添加或更新有序集合中的元素
    redis.zadd('grade', 100, 'Bob', 98, 'Mike')  # 返回 2
  • zrem(name, *values):删除有序集合中的元素
    redis.zrem('grade', 'Mike')  # 返回 1
  • zincrby(name, value, amount=1):递增排序分数
    redis.zincrby('grade', 'Bob', -2)  # 返回 98.0
  • zrank(name, value):获取元素的排名
    redis.zrank('grade', 'Amy')  # 返回 1
  • zrevrank(name, value):获取元素的倒数排名
    redis.zrevrank('grade', 'Amy')  # 返回 2
  • zrevrange(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)  # 返回 2
  • zcard(name):获取有序集合的元素个数
    redis.zcard('grade')  # 返回 3
  • zremrangebyrank(name, min, max):删除排名在范围内的元素
    redis.zremrangebyrank('grade', 0, 0)  # 返回 1
  • zremrangebyscore(name, min, max):删除分数在范围内的元素
    redis.zremrangebyscore('grade', 80, 90)  # 返回 1

Hash 操作

  • hset(name, key, value):向哈希中添加映射
    hset('price', 'cake', 5)  # 返回 1
  • hsetnx(name, key, value):仅当 key 不存在时添加映射
    hsetnx('price', 'book', 6)  # 返回 1
  • hget(name, key):获取映射值
    hget('price', 'cake')  # 返回 5
  • hmget(name, keys, *args):批量获取多个 key 的值
    hmget('price', ['apple', 'orange'])  # 返回 [b'3', b'7']
  • hmset(name, mapping):批量添加映射
    hmset('price', {'banana': 2, 'pear': 6})  # 返回 True
  • hincrby(name, key, amount=1):递增映射值
    hincrby('price', 'apple', 3)  # 返回 6
  • hexists(name, key):检查映射键是否存在
    hexists('price', 'banana')  # 返回 True
  • hdel(name, *keys):删除多个映射键
    hdel('price', 'banana')  # 返回 True
  • hlen(name):获取哈希中的键个数
    hlen('price')  # 返回 6
  • hkeys(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'}

RedisDump

导入数据

  • 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/

你可能感兴趣的文章
Objective-C实现广义表(附完整源码)
查看>>
Objective-C实现广度优先搜寻树遍历算法(附完整源码)
查看>>
Objective-C实现广度优先搜索算法(附完整源码)
查看>>
Objective-C实现应用程序添加防火墙白名单 (附完整源码)
查看>>
Objective-C实现度到弧度算法(附完整源码)
查看>>
Objective-C实现建造者模式(附完整源码)
查看>>
Objective-C实现开方数(附完整源码)
查看>>
Objective-C实现异或加密(附完整源码)
查看>>
Objective-C实现异或加密(附完整源码)
查看>>
Objective-C实现异或密码算法(附完整源码)
查看>>
Objective-C实现异步编程(附完整源码)
查看>>
Objective-C实现弧度到度算法 (附完整源码)
查看>>
Objective-C实现循环移位(附完整源码)
查看>>
Objective-C实现循环链表(附完整源码)
查看>>
Objective-C实现循环队列算法(附完整源码)
查看>>
Objective-C实现循环队列链表算法(附完整源码)
查看>>
Objective-C实现快速fibonacci斐波那契算法(附完整源码)
查看>>
Objective-C实现快速傅立叶变换FFT算法(附完整源码)
查看>>
Objective-C实现快速傅里叶变换FFT(附完整源码)
查看>>
Objective-C实现快速傅里叶变换FFT(附完整源码)
查看>>