• python操作redis


    安装redis

    启动redis服务

    安装python的支持包

    用python代码操作redis

    import redis
    r = redis.StrictRedis(host="localhost", port=6379, db=0)
    r.set("foo", "bar")
    print(r.get("foo"))
    

      

    redis连接池
    Redis 的连接池是多线程安全的、多进程安全的、自动重连的。
    连接池的作用是当前连接断掉了自动重连。
    你可以不用自己手动使用连接池。


    不知道连接池之前:
    redis使用的方法:

    r=redis.StrictRedis(host=xxxx, port=xxxx, db=xxxx)
    r.xxxx()
    

      

    有了ConnectionPool这个类之后,可以使用如下方法

    pool = redis.ConnectionPool(host=xxx, port=xxx, db=xxxx)
    r = redis.Redis(connection_pool=pool)
    

      这里Redis是StrictRedis的子类

    推荐书写格式:常量-》代码

    import redis
    
    # Redis Host
    REDIS_HOST = 'localhost'
    # Redis PORT
    REDIS_PORT = 6379
    # 第几个redis库
    REDIS_DB=0
    
    # r = redis.StrictRedis(host=REDIS_HOST, port=REDIS_PORT, db=REDIS_DB)
    # r.set("foo", "bar2")
    # print(r.get("foo"))
    
    pool = redis.ConnectionPool(host=REDIS_HOST, port=REDIS_PORT, db=REDIS_DB)
    r = redis.Redis(connection_pool=pool)
    r.set('name','andy8888')
    print(r.get('name'))
    

      

    一个redis操作案例:读取文件数据,写入redis中

    1.txt

    a,b,c,d,mmm
    1,2,3,4,55
    aaa,bbb,ccc
    

      

    run.py

    import redis
    
    # Redis Host
    REDIS_HOST = 'localhost'
    # Redis PORT
    REDIS_PORT = 6379
    # 第几个redis库
    REDIS_DB = 1
    
    POOL = redis.ConnectionPool(host=REDIS_HOST, port=REDIS_PORT, db=REDIS_DB)
    my_server = redis.Redis(connection_pool=POOL)
    
    
    def read_in_data(file_name):
        data = []
        with open(file_name, 'r') as f:
            for line in f:
                line = line.strip()
                data.append(line.split(','))
        return data
    
    
    def write_data_to_redis(data):
        my_server.set('counter', 0)
        for items in data:
            my_server.incr('counter')
            for item in items:
                my_server.rpush(items[0], item)
    
    
    def get_data_from_redis():
        keys = my_server.keys()
        for key in keys:
            data_type = my_server.type(key)
            val = None
            if data_type.decode() == 'list':
                val = my_server.lrange(key, 0, -1)
            elif data_type == b'string':
                val = my_server.get(key)
            print("%s:%s" % (key, val))
    
    
    if __name__ == '__main__':
        fileName = r'1.txt'
        data = read_in_data(fileName)
        write_data_to_redis(data)
        print('all data items number is %s' % my_server.get('counter'))
        print(my_server.keys())
        print(get_data_from_redis())
    

      输出结果

    all data items number is b'3'
    [b'aaa', b'1', b'a', b'counter']
    b'aaa':[b'aaa', b'bbb', b'ccc']
    b'1':[b'1', b'2', b'3', b'4', b'55']
    b'a':[b'a', b'b', b'c', b'd', b'mmm']
    b'counter':b'3'
    None
    

      

  • 相关阅读:
    java:线上问题排查常用手段
    去fastjson笔记
    如何让java中的注释代码执行?
    spring中aop不生效的几种解决办法
    mysql事务隔离级别/脏读/不可重复读/幻读详解
    业务系统-全球化多时区的解决思路
    mysql虚拟列(Generated Columns)及JSON字段类型的使用
    freeswitch笔记(7)-放音控制
    JVM问题典型案例定位学习
    freeswitch笔记(6)-会议功能简介
  • 原文地址:https://www.cnblogs.com/andy9468/p/8251902.html
Copyright © 2020-2023  润新知