zoukankan      html  css  js  c++  java
  • Python操作Redis(六)

    一.python安装redis:pip install redis



    二.python连接redis的方式:


    1.StrictRedis实现大部分的官方命令

    2.Redis是StrictRedis的子类,用于向后兼容旧版本的redis

    官方推荐使用StrictRedis


    三.连接实例:


    1.简单的连接:

    import redis
    #连接Linux下的redis的方式一:
    # conn=redis.Redis(host='192.168.177.137',port=6379,db=0,decode_responses=True)
    #参数decode_responses=True表示获得的结果自动进行解码,否则不填增加次参数,手动解码:res.decode('utf-8')
    #windows中设置了密码的,需要加上这个参数
    # conn=redis.Redis(host='192.168.177.137',password='密码',port=6379,db=0,decode_responses=True)
    #连接Linux下的redis的方式二:
    conn=redis.StrictRedis(host='192.168.177.137',decode_responses=True)
    print(conn)

    2.连接池Pool

    概述:管理一个redis-server的所有连接,避免每次建立,释放连接的开销,默认每个redis实例都会维护一个自己的连接池,可以直接建立一个连接池,作为参数传递给redis,这样可以实现

    多个redis共享一个连接池

    #导包
    import redis
    #创建连接池

    pool=redis.ConnectionPool(host='192.168.177.137',port=6379,db=0,decode_responses=True)
    #将连接池作为参数传递给redis

    conn3=redis.Redis(connection_pool=pool)
    print(conn3)

     

    3.客户端连接redis设置

    在主机上ping了虚拟机的ip,可以ping通,然后用telnet连接对应端口telnet 服务器 6379,发现连接不上

    (1)在服务器中查看redis的端口是否开放,如果没有,则需要进行开放:

    firewall-cmd --query-port=6379/tcp,返回no,执行firewall-cmd --add-port=6379/tcp,返回success

     (2)修改redis.conf文件,将protected-mode由yes改为no

    (3)修改redis.conf文件,将bind 127.0.0.1修改为虚拟机地址bind 服务器ip

    (4)重新启动redis,在服务器中连接redis,则使用redis-cli -h host的IP -p 6379

    (5)在本地cmb中重新telnet,则可以连接成功:

    4.Python操作String(字符串)类型

      连接:

     import redis

    conn=redis.Redis(host='192.168.177.137',port=6379,db=0,decode_responses=True)

    (1)使用set设置单个key的值

    conn.set("name","lisi")

    (2)使用get获取单个key的值


    print(conn.get("name"))

    (3)使用mset设置多个key的值


    conn.mset({"sex":"female","hobby":"reding"})

    (4)使用mget获取多个key的值


    print(conn.mget(["name","sex","hobby"]))

     

     

    (5)使用getset设置新值,打印原值


    print(conn.getset("name","zhangsan"))

     

     

    (6)使用strlen获取值的长度


    print(conn.strlen("sex"))

    (7)使用append追加值

    conn.append("age",20202020)

    print(conn.get("age"))

     

    (8)使用type获取值的类型


    print(conn.type("name"))

     

    5.python操作hash(哈希)类型

    (1)使用hset设置值


    conn.hset("myinfo","name","lixiaoxiao")

    (2)使用hget获取值


    print(conn.hget("myinfo","name"))



    (3)使用hmset设置多个值

     conn.hmset("myinfo",{"age":19,"hobby":"reading","sex":"female"})

    (4)使用hmget获取多个值

     

    print(conn.hmget("myinfo","name","hobby"))
    print(conn.hmget("myinfo",["name","hobby"]))

    (5)使用hgetall获取所有值

     print(conn.hgetall("myinfo"))


    (6)使用hlen获取键值对的个数

     print(conn.hlen("myinfo"))

     

    (7)使用hkes获取所有的key

     print(conn.hkeys("myinfo"))

     

     

    (8)使用hvlas获取所有key对应的值

     print(conn.hvals("myinfo"))

     

     

    (9)使用hexist判断key是否存在

    print(conn.hexists("myinfo","name"))

     

     

    (10)使用hde删除指定的key

     conn.hdel("myinfo","sex")

    print(conn.hgetall("myinfo"))

     

    6.python操作list(列表)类型

    (1)使用lpush从头部插入元素

    conn.lpush("mylist",10,20,22)
    print(conn.lrange("mylist",0,-1))

     

     

    (2)使用rpush从尾部插入元素

     conn.rpush("mylist",30,40,42)

    print(conn.lrange("mylist",0,-1))

     (3)使用llen获取列表元素的个数

     

    print(conn.llen("mylist"))

     

     

     (4)使用linsert在列表的某个值的前后插入一个值

     

     conn.linsert("mylist","before",22,36)

    #注意:第一个参数为name,第二个参数为before/after,第三个参数是在某个元素值的前或者后,第四个参数是需要插入的值
    print(conn.lrange("mylist",0,-1))

     

     

    (5)使用lrem删除list的指定值

    conn.lrem("mylist",1,22)
    #第二个参数为个数
    print(conn.lrange("mylist",0,-1))

     

     

    (6)使用lpop移除列表最左侧的元素,并返回

    print(conn.lpop("mylist"))

     

     

     

     

    (7)使用lindex查询指定索引的的元素,并返回

     print(conn.lindex("mylist",1))

     

     

    (8)使用lrange进行切片查询

    print(conn.lrange("mylist",0,-1))

     

     


    7.python操作set(无序集合)类型

    (1)使用sadd进行添加元素到集合中

    conn.sadd("myset","a","b","c")
    conn.sadd("yourset","b","c","d")

     

    (2)使用smembers进行查询集合中的元素

     print(conn.smembers("myset"))

    print(conn.smembers("yourset"))

     

     

    (3)使用scard进行计算集合中的元素个数

     print(conn.scard("myset"))

    print(conn.scard("yourset"))

     

     

    (4)使用sdiff进行计算两个集合之间的差集

     print(conn.sdiff("myset","yourset"))

     

     

    (5)使用sinter进行计算两个集合之间的交集

     print(conn.sinter("myset","yourset"))


     

     

    (6)使用sismember检查当前元素是否存在集合之中

    print(conn.sismember("myset","d"))

    print(conn.sismember("yourset","d"))

     

     

    (7)使用spop从集合右侧删除一个元素

     conn.spop("yourset")

    print(conn.smembers('yourset'))

     

     

     

     


    8.python操作zset(有序集合)类型

    (1)使用zadd进行添加元素到有序集合中

     conn.zadd("zset1",{"a":1,"b":2,"c":3,"d":4})

     

    (2)使用zrange返回有序集合范围内的元素

     print(conn.zrange("zset1",0,-1))


     

     

    (3)使用zcard进行计算有序集合中的元素个数

     print(conn.zcard("zset1"))


     

     

    (4)使用zcount返回有序集合中min--max权重之间的个数

     print(conn.zcount("zset1",2,4))


     

     

    (5)使用zscore返回对应权重的元素

    print(conn.zscore("zset1","d"))

     

     

     

    (6)使用zrem删除有序集合的指定元素

     conn.zrem("zset1","c")

    print(conn.zrange("zset1",0,-1))

     

     

     

  • 相关阅读:
    直击JDD | 京东技术全景图首次展示 四大重磅智能技术驱动产业未来!
    干货|上云了,如何保障云数据库的高可用?
    直击JDD | 共建智能新城 京东云让城市生活变得简单美好
    2019京东全球科技探索者大会议程抢先曝光!
    京东云入选2019年度TOP100全球软件案例 新一代服务治理框架加速行业落地
    剁手季我做过最牛的事情
    干货|混沌工程落地的六个阶段
    Jenkins 插件中心国内镜像源发布
    list
    queue
  • 原文地址:https://www.cnblogs.com/smilecindy/p/14540985.html
Copyright © 2011-2022 走看看