zoukankan      html  css  js  c++  java
  • Redis相关操作

    Redis

    1 redis连接

    import redis
    # 01 基本连接方式
    # r=redis.Redis(host="127.0.0.1",port=6379)
    #
    #
    # r.set("age",99)
    #
    # print(r.get("age")) # b'99'
    
    
    # 02 基于连接池连接
    pool = redis.ConnectionPool(host='127.0.0.1', port=6379)
    r = redis.Redis(connection_pool=pool)

    2 .字符串操作

    import redis
    pool = redis.ConnectionPool(host='127.0.0.1', port=6379)
    r = redis.Redis(connection_pool=pool)
    
    
    
    # r.set("name","alex",5)
    
    # print(r.get("name"))
    
    # r.set("name","alex",nx=True)
    # r.set("name","alex")
    
    
    # 批量设置
    
    # r.mset({'k1': 'v1', 'k2': 'v2'})
    
    # 取值操作
    
    # print(r.get("k2")) # b'v2'
    
    # 批量取值
    
    # print(r.mget(["k1","k2"])) # [b'v1', b'v2']
    
    
    # print(r.getrange("name",0,2))
    
    # r.setrange("name",3,"!!!")
    
    # print(r.strlen("name"))
    
    
    # r.incr("age",2)
    
    # r.append("name","egon")
    字符串操作

    3. hash操作

    import redis
    pool = redis.ConnectionPool(host='127.0.0.1', port=6379)
    r = redis.Redis(connection_pool=pool)
    
    # 为字典增加单个键值对
    # r.hset("infos","name2","alex2") # {'infos':{'name':'alex'}}
    # print(r.hget("infos","name"))
    
    # 增加多个键值对
    # 推荐
    r.hset('infos',mapping={"age":1000,"gender":"male"})
    print(r.hgetall('infos'))
    
    """
    # 不推荐,即将被弃用
    # r.hmset("infos",{"age":1000,"gender":"male"})
    # r.hmset("infos",{"age2":1000})
    
    {
    # 'infos':{'name':'alex','age':1000,'gender':'male'}
    # }
    """
    
    #
    # print(r.hmget("infos",["name","age"])) # [b'alex', b'1000']
    # print(r.hgetall("infos")) # {b'name': b'alex', b'age': b'1000', b'gender': b'male'}
    
    # print(r.hlen("infos"))
    
    # print(r.hkeys("infos")) # [b'name', b'age', b'gender']
    # print(r.hvals("infos")) # [b'alex', b'1000', b'male']
    #
    # print(r.hexists("infos","names"))
    
    # 删除元素
    # r.hdel("infos","gender")
    # print(r.hgetall("infos")) # {b'name': b'alex', b'age': b'1000'}
    
    # 键所对的值自增(+2)
    # r.hincrby("infos","age",2) #{b'name': b'alex', b'age': b'1004', b'name2': b'alex2', b'age2': b'1002'}
    #
    # print(r.hgetall("infos"))
    
    # print(r.hscan_iter("infos"))
    # #
    # for i in r.hscan_iter("infos"):
    #     # print(i) #  #返回元组
    
    # 正则匹配
    # r.hmset("abc",{"a1":"b1","a2":"b2","a3":"b3","x1":"y1"}) # 弃用
    r.hset('abc',mapping={"a1":"b1","a2":"b2","a3":"b3","x1":"y2"})
    print(r.hgetall('abc'))
    
    for i in r.hscan_iter("abc",match="a*"):
        print(i)
    View Code

    4 .list

    import redis
    pool = redis.ConnectionPool(host='127.0.0.1', port=6379)
    r = redis.Redis(connection_pool=pool)
    
    # r.lpush("scores",56,78,99,65,34)
    
    #r.rpush("new_scores",23,56,77)
    
    # print(r.lrange("scores",0,-1)) # [b'34', b'65', b'99', b'78', b'56']
    # print(r.lrange("new_scores",0,-1)) # [b'23', b'56', b'77']
    
    # r.lpushx("scores",100)
    
    # print(r.llen("scores"))
    
    # r.linsert("scores","AFTER","34","44")
    
    # r.lset("scores",1,98)
    
    # r.lrem("scores",count=0,value=98)
    
    # print(r.lrange("scores",0,-1))
    
    # print(r.lpop("scores"))
    # print(r.lrange("scores",0,-1))
    
    # print(r.lindex("scores",3))
    
    
    # print(r.lrange("scores",0,-1))
    # print(r.lrange("scores",1,3))
    
    
    # r.ltrim("scores",1,3)
    # print(r.lrange("scores",0,-1))
    View Code

    5. set

    import redis
    pool = redis.ConnectionPool(host='127.0.0.1', port=6379)
    r = redis.Redis(connection_pool=pool)
    
    
    
    # r.sadd("score_set01",1,2,3,4,5,6,6)
    # r.sadd("score_set02",4,5,6,7,8)
    
    
    # print(r.smembers("score_set01"))
    # print(r.smembers("score_set02"))
    #
    # print(r.scard("score_set01"))
    # print(r.scard("score_set02"))
    #
    # print(r.sinter("score_set01","score_set02")) # 交集
    # print(r.sunion("score_set01","score_set02"))  # 并集
    # print(r.sdiff("score_set01","score_set02"))  # 差集
    #
    #
    #
    # print(r.sismember("score_set01",6))
    # print(r.sismember("score_set01",7))
    
    # print(r.spop("score_set01"))
    # print(r.smembers("score_set01"))
    
    # print(r.srandmember("score_set01",3))
    
    # r.srem("score_set01",5)
    # print(r.smembers("score_set01"))
    
    
    # print(r.sscan_iter("score_set01"))
    # for i in r.sscan_iter("score_set01"):
    #     print(i)
    View Code

    6. sortset操作

    import redis
    pool = redis.ConnectionPool(host='127.0.0.1', port=6379)
    r = redis.Redis(connection_pool=pool)
    
    
    # r.zadd("z",{"n1":1,"n2":2,"n3":5,"n4":3})
    
    # print(r.zscan("z"))
    #
    # print(r.zcard("z"))
    
    
    # print(r.zcount("z",1,3))
    # print(r.zcount("z",1,4))
    # print(r.zcount("z",1,5))
    
    # r.zincrby("z",2,"n3")
    # print(r.zscan("z"))
    
    # print(r.zrange("z",0,2))
    # print(r.zrange("z",0,3))
    
    # print(r.zscore("z","n4"))
    # print(r.zrank("z","n4"))
    
    
    
    # r.zrem("z","n2")
    
    # r.zremrangebyrank("z",0,1)
    # r.zremrangebyscore("z",1,7)
    # print(r.zscan("z"))
    
    
    
    
    # r.zadd("z1",{"n1":1,"n2":2,"n3":3,"x":100})
    # r.zadd("z2",{"n3":4,"n5":5,"n6":6,"x":100})
    
    # r.zunionstore("z3",("z1","z2"))
    # print(r.zscan("z3"))
    
    r.zinterstore("z4",("z1","z2"))
    print(r.zscan("z4"))
    View Code

    7 其他操作

    import redis
    pool = redis.ConnectionPool(host='127.0.0.1', port=6379)
    r = redis.Redis(connection_pool=pool)
    
    # print(r.keys(pattern="k*"))
    # print(r.delete("naem"))
    # print(r.keys())
    
    
    # print(r.exists("name"))
    # print(r.exists("naem"))
    
    
    # r.expire("name",10)
    # print(r.keys())
    #
    # print(r.randomkey())
    #
    # print(r.type("infos"))
    
    
    for i in r.scan_iter(match="k*"):
        print(i)
    View Code

    7 redis连接池

    # by gaoxin
    import redis
    
    
    pool = redis.ConnectionPool(host="127.0.0.1", port=6379, decode_responses=True, max_connections=10)
    
    
    conn = redis.Redis(connection_pool=pool)
    
    
    ret = conn.get("n1")
    print(ret)
    View Code

    8 管道操作(事务操作)

    # redis的事务操作
    import redis
    pool = redis.ConnectionPool(host='10.211.55.4', port=6379)
    conn = redis.Redis(connection_pool=pool)
    
    pipe = conn.pipeline(transaction=True)
    pipe.multi() # 开始事务
    pipe.set('name', 'bendere')
    pipe.set('role', 'sb')
    pipe.execute()  #提交
    # 注意:咨询是否当前分布式 redis 是否支持事务
    print(conn.keys())

    9 发布-订阅

    pub.py

    # by gaoxin
    import redis
    
    conn = redis.Redis(host="127.0.0.1", port=6379, decode_responses=True)
    
    
    conn.publish("gaoxin333", "18")

    sub.py

    # by gaoxin
    
    import redis
    
    conn = redis.Redis(host="127.0.0.1", port=6379, decode_responses=True)
    
    # 第一步 生成一个订阅者对象
    pubsub = conn.pubsub()
    
    # 第二步 订阅一个消息
    
    pubsub.subscribe("gaoxin333")
    
    # 创建一个接收
    
    while True:
        print("working~~~")
        msg = pubsub.parse_response()
        print(msg)

    其他

    # redis的事务操作(python连接)
    
    import redis
    pool = redis.ConnectionPool(host='10.211.55.4', port=6379)
    conn = redis.Redis(connection_pool=pool)
    
    pipe = conn.pipeline(transaction=True)
    pipe.multi() # 开始事务
    pipe.set('name', 'bendere')
    pipe.set('role', 'sb')
    pipe.execute()  #提交
    
    
    1 redis 事务操作 (数据库直接操作)
    set age 100
    multi # 开启事务
    set age 10
    set a 20
    exec  # 结束
    
    discard  取消所有事务,也就是事务回滚
    
    2 redis 设置有效时间
    ex设置有效时间
    
    conn.set(key, json.dumps(context), ex=60 * 30) # 30分钟
    
    3常用命令:
    
    1) 查看keys个数
    
    keys *      // 查看所有keys
    keys prefix_*     // 查看前缀为"prefix_"的所有keys
    
    2) 清空数据库
    flushdb   // 清除当前数据库的所有keys
    flushall    // 清除所有数据库的所有keys
    3del 'a'  删除单个
    作者:华王 博客:https://www.cnblogs.com/huahuawang/
  • 相关阅读:
    菜鸟的it之路-起航
    实验报告四
    实验报告三
    实验报告二
    实验报告一
    远程连接
    操作系统安装
    服务器硬件组成
    linux系统下排查cpu过高原因
    windows系统下排查Java项目cpu过高原因
  • 原文地址:https://www.cnblogs.com/huahuawang/p/14813809.html
Copyright © 2011-2022 走看看