• redis server学习001


    redis server学习001

    一、简介:

    redis是使用ANSIC语言编写、支持网络、可基于内存亦可持久化的日志型、Key-Value 非关系型数据库,并提供多种语言的API。

    经常会用作缓存,消息中间件的操作。

    二、特点:

    速度快,因为数据存在内存中

    支持丰富数据类型,支持字符串,哈希表,列表,集合,有序集合

    支持事务,操作都是原子性

    丰富的特性:可用于缓存,消息,按key设置过期时间,过期后将会自动删除

    三、python3连接redis server

    1、 一般连接redis情况

    from redis import Redis
    
    # 实例化redis对象
    r = Redis(host='localhost', port=6379, db=0, password='123456')
    r.set('name1', 'zhangsan1')  # b'zhangsan'
    name1 = r.get('name1')
    print(name1)
    

    这种情况连接数据库,对数据的存取都是字节类型,存取时还得转码一下,一般不推荐这种方法

    2、 连接池连接redis

    import redis
    
    pool = redis.ConnectionPool(host='127.0.0.1', port=6379, password='123456', decode_responses=True)  # decode_response,默认值是False,如果我们把这个值改为True,则避免了转码流程(上述出现的字节类型的情况),直接对原数据进行操作。
    r = redis.Redis(connection_pool=pool)
    r.set('name2', 'zhangsan2')
    print(r.get('name2'))  # b'zhangsan2'
    r.close()
    

    3、 pipeline模式

    用来批量的提交命令,还用来实现事务transation。

    能够将多条命令集中起来,一次发送到redis服务端,从而减少网络IO时延。

    import redis
    
    r = redis.Redis(host='127.0.0.1', port=6379, db=0, password="123456", decode_responses=True)
    
    # 创建一个管道对象,pipeline 的模式用来解决批量提交请求
    pipe = r.pipeline(transaction=False)
    
    try:
        # 链式操作
        pipe.set("name3", "zhangsan3").set("age",18).set("sex",1)
    except Exception as e:
        print(e)
        # 把管道清空
        pipe.reset()
    else:
        # 执行操作
        res = pipe.execute()
        print(res)  # [True, True, True]
    

    生产环境一般redis都是集群模式,集群模式下使用pipeline的时候,在创建pipeline的对象时,需要指定 pipe =r.pipeline(transaction=False)

    上下文管理pipe:

    import redis
    
    redis_db = redis.Redis(host='127.0.0.1',port=6379, db=0, password="123456", decode_responses=True)
    
    with redis_db.pipeline(transaction=False) as pipe:
        pipe.sadd('seta', 1).sadd('seta', 2).srem('seta', 2).lpush('lista', 1).lrange('lista', 0, -1)
        result = pipe.execute()
        
    print(result)  # [1, 1, 1, 1, ['1']]
    
    

    以上。

    大神:

    https://www.cnblogs.com/zepc007/p/10404840.html

    https://www.jianshu.com/p/8505ff9dce5e

    https://blog.csdn.net/pushiqiang/article/details/80444633

    https://www.cnblogs.com/kangoroo/p/7647052.html

  • 相关阅读:
    java集合
    [编写高质量代码:改善java程序的151个建议]建议57 推荐在复杂字符串操作中使用正则表达式
    [编写高质量代码:改善java程序的151个建议]建议53 注意方法中传递的参数要求
    判断某一时间范围的方法
    c#读写xml文件
    冒泡排序
    C#使用正则表达式检测数字 char 和韩文
    三角形面积公式
    unity 绘制三角形
    中缀转后缀表达式
  • 原文地址:https://www.cnblogs.com/sirxy/p/12580612.html
Copyright © 2020-2023  润新知