• 企业400电话
  • 微网小程序
  • AI电话机器人
  • 电商代运营
  • 全 部 栏 目

    企业400电话 网络优化推广 AI电话机器人 呼叫中心 网站建设 商标✡知产 微网小程序 电商运营 彩铃•短信 增值拓展业务
    Python访问Redis的详细操作

    1.连接

    测试连接是否成功:

    import redis
    r = redis.Redis(host='192.168.136.102', port=6379, db=0,decode_responses=True)
    r.set('foo', 'bar')
    print(r.get('foo'))
    del r

    redis 取出的结果默认是字节,我们可以设定 decode_responses=True 改成字符串。

    redis 提供两个类 Redis 和 StrictRedis, StrictRedis 用于实现大部分官方的命令,Redis 是 StrictRedis 的子类,用于向后兼用旧版本。

    import redis   # 导入redis 模块
    r = redis.Redis(host='192.168.136.102', port=6379, decode_responses=True)
    r.set('name', 'runoob')  # 设置 name 对应的值
    print(r['name'])
    print(r.get('name'))  # 取出键 name 对应的值
    print(type(r.get('name')))  # 查看类型
    del r

    连接池

    redis-py 使用 connection pool 来管理对一个 redis server 的所有连接,避免每次建立、释放连接的开销。
    默认,每个Redis实例都会维护一个自己的连接池。可以直接建立一个连接池,然后作为参数 Redis,这样就可以实现多个 Redis 实例共享一个连接池。

    import redis    # 导入redis 模块
    pool = redis.ConnectionPool(host='192.168.136.102', port=6379, decode_responses=True)
    r = redis.Redis(connection_pool=pool)
    r.set('name', 'runoob')  # 设置 name 对应的值
    print(r.get('name'))  # 取出键 name 对应的值

    对比

    2.String字符串

    String使用场景:
    1、用redis当缓存层来加速读写性能降低后端的压力
    2、计数器
    3、时间内限制请求次数

    1.String set 设置单个键值
    set(name, value, ex=None, px=None, nx=False, xx=False)
    ex:过期时间(秒),时间到了后redis会自动删除
    px:过期时间(毫秒),时间到了后redis会自动删除。ex、px二选一即可
    nx:如果设置为True,则只有name不存在时,当前set操作才执行
    xx:如果设置为True,则只有name存在时,当前set操作才执行

    r.set('name', 'zhangsan',ex=3)  
    r.set('name', 'lisi',nx=True)  #如果设置为True,则只有name不存在时,当前set操作才执行
    r.set('name', 'wangwu',xx=True)  #如果设置为True,则只有name存在时,当前set操作才执行

    2.String get 获取单个值

    v = r.get('name')
    print(v)

    3.String mset 设置多个键值
    mset(*args, **kwargs)

    name_dict = {
        'name_1' : 'zhangsan',
        'name_2' : 'lisi'
    }
    r.mset(name_dict)

    4.String mget 获取多个值

    mget(keys, *args)
    r.mget('name_1', 'name_2')

    5.String setrange 根据索引修改某个键的value值
    setrange(name, offset, value)
    返回值为:修改后的字符串长度
    name:键,所给不存在时自动添加
    offset:偏移量,以0开始
    value:修改的字符或字符串,字符串时以offset向后顺延

    length = r.setrange('name_2', 1, 'zhihu')
    print(length)

    6.String getrange 根据索引获取某个键的部分value值
    若所给的键不存在时,返回空值 b''
    getrange(key, start, end)

    v = r.getrange('name_1', 0, 2)

    7.String strlen 获取value的长度
    strlen(name)
    所给的键不存在时,返回值为0

    length = r.strlen('name_2')

    8.String append value后面追加
    append(key, value)
    若所给的键不存在,则设置新值,返回值为修改后的字符串的长度

    length = r.append('name_1', '666')

    3.列表

    1.lpush(key , value) 将一个或多个值 value 插入到列表 key 的表头

     r.lpush('list', 'a', 'b', 'c', 'd')

    2.rpush(key , value) 将一个或多个值 value 插入到列表 key 的表尾

    r.rpush('rlist', 'a', 'b', 'c', 'd')

    3.llen key 返回列表 key 的长度

     r.llen('list')

    4.lrem key count value 根据参数 count 的值,移除列表中与参数 value 相等的元素

    r.lrem('list',2, 'b')

    4.集合

    1.sadd(name,values) 向对应的集合中添加元素

    r.sadd("set1", 33, 44, 55, 66) 

    2.scard(name)
    获取name对应的集合中元素个数

    r.scard('set1')

    3.srandmember key [count] 返回集合中的 1 或 count 个随机元素

    r.srandmember("set1") 

    4.spop key 移除并返回集合中的一个随机元素获取name对应的集合中元素个数

    r.spop('set1')

    5.smove source destination member 将 member 元素从 source 集合移动到 destination 集合

      r.smove('set1', 'set2', 66)

    5.哈希

    1.hmset key field value [field value …]同时将多个 field-value (域-值)对设置到哈希表 key 中

    r.hmset('zhangsan',{'name':'zhangsan','age':20,'tel':123456})

    2.Hash hmget 获取哈希中多个键值对

    hmget(name, keys, *args)

    返回值:值的列表 list 形如: [‘1', ‘123'] class ‘list'>

    r.hmget('zhangsan', ['sex', 'tel'])

    3.Hash hget 获取指定key的值
    hget(name, key)

    r.hget('zhangsan', 'tel')

    4.Hash hgetall 获取哈希中所有的键值对
    hgetall(name)
    返回值:dict类型

    r.hgetall('zhangsan')

    6.有序集合

    1.Zset zadd 有序集合中添加元素
    zadd(name, *args, **kwargs)
    添加元素时需指定元素的分数
    返回值:返回添加的个数

    r.zadd('myzset', {'a': 3, 'b': 4,'c':5})
    r.zadd('myzset', 'a', 3, 'b', 4,'c',5})  #不同版本

    2.Zset zcard 返回有序集合中元素个数
    zcard(name)

    v = r.zcard('myzset')

    3.Zset zscore 返回有序集合中指定某个值的分数
    zscore(name, value)
    返回值:float 类型的分数;形如: -5.0 class ‘float'>

    v = r.zscore('myzset', ‘a')

    4.Zset zincrby 增加有序集合中某个值的分数
    zincrby(name, value, amount=1)
    value:若存在,则增加其amount分数;若不存在,则增加新值以及对应的分数
    amount:增加的值,可以为负数
    返回值:增加后的分数 float类型 ;

    v = r.zincrby('myzset',1,'a')

    5.Zset zrevrange 返回有序集合分数排序的一段数据
    zrevrange(name, start, end, withscores=False, score_cast_func=float)
    name:redis的name
    start:有序集合索引起始位置(非分数)
    end:有序集合索引结束位置(非分数)
    withscores:是否获取元素的分数,默认只获取元素的值
    score_cast_func:对分数进行数据转换的函数
    返回值:list类型

    r.zadd('myzset1', {'a': 4, 'b': 2,'c':3,'d':6,'e':1,'f':9})
    def double(num):
        return float(num)*float(num)
    print(r.zrevrange('myzset1',0,3,withscores=True))
    print(r.zrevrange('myzset1',0,3,withscores=True,score_cast_func=double))

    以上就是Python访问Redis的详细内容,更多关于Python访问Redis的资料请关注脚本之家其它相关文章!

    您可能感兴趣的文章:
    • Python操作redis实例小结【String、Hash、List、Set等】
    • python 通过SSHTunnelForwarder隧道连接redis的方法
    • Python获取Redis所有Key以及内容的方法
    • python redis 删除key脚本的实例
    • python使用pipeline批量读写redis的方法
    • Python连接Redis的基本配置方法
    • python中redis查看剩余过期时间及用正则通配符批量删除key的方法
    上一篇:一文搞懂python异常处理、模块与包
    下一篇:Python max函数中key的用法及原理解析
  • 相关文章
  • 

    © 2016-2020 巨人网络通讯 版权所有

    《增值电信业务经营许可证》 苏ICP备15040257号-8

    Python访问Redis的详细操作 Python,访问,Redis,的,详细,