zoukankan      html  css  js  c++  java
  • redis基础之python连接redis(五)

    前言

    前面介绍了在数据库命令行直接操作redis,现在学习使用python的redis包来操作redis,本人安装的是redis==2.10.6;

    系列文章

    python与redis的交互

    • 安装:

    环境:Ubuntu16.04;redis-4.0.6

    $ sudo pip redis
    
    • 测试
    $ ipython
    
    import redis    # 出现版本信息,安装成功
    

    redis实例化对象

    import redis
    r1 = redis.Redis()
    r2 = redis.StrictRedis()
    
    # redis有上面两个类可以建立连接对象,用法几乎一样,推荐使用StrictRedis.
    
    r = redis.StrictRedis(host='localhost',  # 默认ip为127.0.0.1
                          port=6379,   # 默认端口6379
                          db=0,        # 默认数据库0
                          password=None,) # 默认没有密码
    

    redis操作string类型

    print(con.set('num', '3'))  # string类型的插入键值对,参数key,value;返回true或False
    print(con.setex('name',3,'xiaobai')) # 设置一个有时间的键值对,返回true或false
    print(con.setnx('my','hh'))  # 设置单个不存在的键值对
    print(con.mset({'my':'cai'}))  # 设置多个键值对,返回true或false
    print(con.msetnx({'you':'tan','my':'wan'})) # 为不存在的键设置值,如果有一个已经存在,整个会失败,返回false
    
    print(con.get('num'))       # 获取键的值,返回二进制的数据
    print(con.getrange('name', 0, 2))  # 获取子串,参数key、下标范围
    print(con.strlen('name'))  # 获取值的长度
    print(con.exists('name')) # 是否存在这个键,针对所有的类型
    
    print(con.incr('num'))      # 值自加操作,返回计算后的结果值
    print(con.incr('num','23'))  # 值加一个整数操作,返回计算后的结果值,
    print(con.incrby('num', '5')) # 值加一个整数操作,返回计算后的结果值
    print(con.incrbyfloat('num', '3.5'))  # 值加一个浮点数操作,返回计算后的结果值
    print(con.incrbyfloat('num', '-3.5'))  # 值加一个浮点数操作,返回计算后的结果值
    print(con.decr('num'))  # 值自减操作,返回计算后的结果值
    print(con.decr('num', '5'))  # 值减一个整数操作,返回计算后的结果值
    print(con.append('boy', 'tom'))  # 字符串拼接,参数key value,返回当前字符串的长度
    print(con.setrange('name', '5', 'hh'))  # 字符串替换字符,参数为键、偏移量、值,返回当前字符串的长度
    
    
    print(con.delete('my','name'))  # 删除多个键值对,获取删除成功的数量
    

    redis操作list类型

    print(con.rpush('list', 'v1', 'v2'))  # 从列表的首部插入,参数键、值,值可多个,返回列表的长度
    print(con.lpush('list', 'vx'))        # 从列表的尾部插入,参数键、值,值可多个,返回列表的长度
    con.lset('list',0,20)                 # 在列表的下标0位置插入20
    
    print(con.lrange('list',0,-1))  # 获取范围内的元素,返回一个列表,原来的列表不变
    
    
    print(con.lpop('list'))   # 从列表首部弹出一个元素
    print(con.rpop('list'))  # 从列表尾部弹出一个元素
    print(con.blpop('list',3))  # 从列表首部弹出一个元素,在3秒内阻塞等待,默认为0秒;没有获取值返回none
    print(con.brpop('list', 3))  # 从列表右端弹出一个元素,在3秒内阻塞等待,默认为0秒
    
    print(con.rpoplpush('list', 'list1')) # 将list最右端的元素移到list1的最左端,返回移动的元素
    # 将list最右端的元素移到list1的最左端,返回移动的元素,等待时间3秒,默认0秒
    print(con.brpoplpush('list', 'list1', 3))
    print(con.ltri('list', 2, -1)) # 剪切列表,返回剪切后的列表,改变了原来的列表
    
    

    redis操作hash

    print(con.hset('fruit','apple','red')) # 设置单个散列键值对,参数name,key,value,返回true或false
    print(con.hmset('color', {'blue':'good','green':'bad'}))  # 对个散列键值对,返回true或false
    print(con.hsetnx('goods', 'color', 'white'))
    
    print(con.hdel('color','blue'))  # 删除散列的某些键值对,至少成功一个返回true,其他返回False
    
    print(con.hget('color', 'green')) # 获取散列的单个值
    print(con.hmget('color', 'green', 'blue'))  # 获取散列的多个值
    print(con.hkeys('color'))  # 获取散列的所有的键
    print(con.hvals('color'))  # 获取散列的所有的值
    print(con.hgetall('color'))  # 获取散列的所有的键值对,返回一个二进制编码的字典
    print(con.hexists('color','red')) # 判断一个散列是否存在某个键,返回true或False
    print(con.hstrlen('color', 'blue'))  # 获取值字符串的长度,返回一个数字
    
    print(con.hlen('color'))  # 获取该散列的键值对数量
    
    print(con.hincrby('color', 'blue', 3)) # 将散列的值加一个整数,默认加1
    print(con.hincrbyfloat('color', 'blue', 3.5))  # 加一个浮点数,默认为1.0
    

    redis操作集合

    print(con.sadd('name', 'a', 'b'))  # 添加元素,返回添加的个数
    
    print(con.srem('name','a'))  # 移除元素,返回移除元素的数量
    print(con.spop('name'))  # 随机的移除一个元素
    
    print(con.smove('name','name1','bb')) # 将bb从name移到name1,如果name1不存在,创建;返回true或false
    
    print(con.smembers('name'))  # 返回集合所有的元素,以字典的形式
    print(con.scard('name'))  # 返回集合元素的个数
    print(con.sismember('name','b')) # 查看元素是否在集合中,返回true或false
    

    其他redis函数

    con.flushdb() # 清除当前数据库
    con.flushall() # 清空当前redis
    
    con.expire('name',3)  # 单位为秒,为键设置过期时间
    con.time()  # 查看服务器时间,返回时间戳和当前已过去的微秒数
    con.ttl(key) # 查看键还有多少生存期,时间单位为秒
    con.keys()  # 查看所有的键,默认参数为'*'
    
    • 按命令行的方式写redis
    con.execute_command('SET','my', 'hhhh')
    # 第一个参数是命令操作,如get,hget,set等;
    

    管道

    管道可以缓存命令,减少客户端与redis-server交互的次数

    # 创建一个管道值
    pipe = con.pipeline()
    pipe.get('name')
    pipe.set('name','xiao')
    # 提交
    pipe.execute()
    

    参考

  • 相关阅读:
    A1023 Have Fun with Numbers (20分)(大整数四则运算)
    A1096 Consecutive Factors (20分)(质数分解)
    A1078 Hashing (25分)(哈希表、平方探测法)
    A1015 Reversible Primes (20分)(素数判断,进制转换)
    A1081 Rational Sum (20分)
    A1088 Rational Arithmetic (20分)
    A1049 Counting Ones (30分)
    A1008 Elevator (20分)
    A1059 Prime Factors (25分)
    A1155 Heap Paths (30分)
  • 原文地址:https://www.cnblogs.com/cwp-bg/p/8274269.html
Copyright © 2011-2022 走看看