美文网首页
Python-Redis-0x00

Python-Redis-0x00

作者: An0th3r | 来源:发表于2019-02-14 16:45 被阅读0次

    1. Redis安装和基本使用

    wget http://download.redis.io/releases/redis-3.0.6.tar.gz
    tar zxf redis-3.0.6.tar.gz
    cd redis-3.0.6
    make
    

    启动服务端
    src/redis-server
    启动客户端
    src/redis-cli

    redis> set foo bar
    OK
    redis> get foo
    "bar"
    

    2. Python操作Redis

    sudo pip install redis
    

    API使用

    • 连接方式
    • 连接池
    • 操作
      -String操作
      -Hash操作
      -List操作
      -Set操作
      -Sort Set操作
    • 管道
    • 发布订阅
    1. 操作模式
      redis-py提供两个类Redis和StrictRedis用于实现Redis的命令,StrictRedis用于实现大部分官方的命令,并使用官方的语法和命令,Redis是StrictRedis的子类,用于向后兼容旧版本的redis-py。
    #!/usr/bin/env python
    # -*- coding:utf-8 -*-
     
    import redis
     
    r = redis.Redis(host='10.211.55.4', port=6379)
    r.set('foo', 'Bar')
    print(r.get('foo'))
    
    1. 连接池
      redis-py使用connection pool来管理对一个redis server的所有连接,避免每次建立、释放连接的开销。默认,每个Redis实例都会维护一个自己的连接池。可以直接建立一个连接池,然后作为参数Redis,这样就可以实现多个Redis实例共享一个连接池。
    #!/usr/bin/env python
    import redis
     pool = redis.ConnectionPool(host='127.0.0.1', port=6379)
    
    r = redis.Redis(connection_pool = pool)
    r.set('foo', 'bar')
    print(r.get('foo'))
    
    
    1. 操作
      String操作,redis中的string在内存中按照key-value来存储。

    set(name, value, ex=None, px=None, nx=False, xx=False)

    参数:
        ex,过期时间(秒)
        px,过期时间(毫秒)
        nx,如果设置为True,则只有name不存在时,当前set操作才执行
        xx,如果设置为True,则只有name存在时,岗前set操作才执行
    

    setnx(name, value)

    设置值,只有key不存在时执行set操作
    

    setex(name, value, time)

    设置值
    参数:
       time,过期时间(数字秒 或 timedelta对象)
    

    psetex(name, time_ms, value)

    设置值
    参数:
       time_ms,过期时间(数字毫秒 或 timedelta对象)
    

    mset(*arg, **kwargs)

    批量设置值
    如:
       mset(k1='v1', k2='v2')
       或
       mget({'k1': 'v1', 'k2': 'v2'})
    

    get(name)

    获取值
    

    mget(keys, *args)

    批量获取
    如:
       mget('ylr', 'wupeiqi')
       或
       r.mget(['ylr', 'wupeiqi'])
    

    getset(name, start ,end)

    设置新值并获取原来的值
    

    getrange(key, start, end)

    获取子序列(根据字节获取,非字符)
    参数:
       name,Redis 的 name
       start,起始位置(字节)
       end,结束位置(字节)
    如: "周杰伦" ,0-3表示 "周"
    

    setrange(name, offset, value)

    修改字符串内容,从指定字符串索引开始向后替换(新值太长时,则向后添加)
    参数:
       offset,字符串的索引,字节(一个汉字三个字节)
       value,要设置的值
    

    setbit(name, offset, value)

    对name对应值的二进制表示的位进行操作 
    参数:
       name,redis的name
       offset,位的索引(将值变换成二进制后再进行索引)
       value,值只能是 1 或 0
    

    getbit(name, offset)

    获取name对应的值的二进制表示中的某位的值 (0或1)
    

    bitcount(name, start=None, end=None)

    获取name对应的值的二进制表示中 1 的个数
    参数:
       key,Redis的name
       start,位起始位置
       end,位结束位置
    

    bitop(operation, dest ,*keys)

    获取多个值,并将值做位运算,将最后的结果保存至新的key对应的值
    参数:
       operation,AND、OR、NOT、XOR
       dest,新的Redis的key
       *keys,要查找的Redis的key
    

    strlen(name)

    返回name对应值的字节长度(一个汉字3个字节)
    

    incr(self, name, amount=1)

    自增 name对应的值,当name不存在时,则创建name=amount,否则,则自增。
    参数:
       name,Redis的name
       amount,自增数(必须是整数) 
    注:同incrby
    

    incrbyfloat(self, name, amount=1.0)

    自增 name对应的值,当name不存在时,则创建name=amount,否则,则自增。
    参数:
       name,Redis的name
       amount,自增数(浮点型)
    

    decr(self, name, amount=1)

    自减 name对应的值,当name不存在时,则创建name=amount,否则,则自减。
    参数:
       name,Redis的name
       amount,自减数(整数)
    

    append(key, value)

    在redis name对应的值后面追加内容
    参数:
       key, redis的name
       value, 要追加的字符串
    

    相关文章

      网友评论

          本文标题:Python-Redis-0x00

          本文链接:https://www.haomeiwen.com/subject/ozueeqtx.html