• Redis在Python中的基础应用


    一、Redis简介

      redis是一个key-value的nosql产品,和Memcached类似,但它储存的value类型相对更加丰富,包括string(字符串)、list(链表)、set(集合)、zset(sorted set有序集合)和hash,与memcached一样,为保证效率,数据都是缓存在内存库中,区别的是redis会周期性的把内存中的数据写入到硬盘中(被称为数据持久化),同时由于redis支持的是value类型众多,也被称为结构化的nosql数据库

        NoSQL泛指非关系型的数据库

    非关系型数据库和关系型数据库的差别:
    • 性能NOSQL是基于键值对的,可以想象成表中的主键和值的对应关系,而且不需要经过SQL层的解析,所以性能非常高
    • 可扩展性同样也是因为基于键值对,数据之间没有耦合性,所以非常容易水平扩展
    • 关系型数据库的优势:复杂查询可以用SQL语句方便的在一个表以及多个表之间做非常复杂的数据查询;事务支持使得对于安全性能很高的数据访问要求得以实现
    • 对于这两类数据库,对方的优势就是自己的弱势,所以如何利用好这两种数据库的强项,使其相互补充,是一个很重要的需要好好设计的问题

    二、连接方式

      Redis有三种连接方式:普通连接、 连接池、管道连接。

      使用连接池的优点:connection pool连接池来管理对一个redis server的所有连接,避免每次建立、释放连接的开销。

      管道连接:当频繁的存储获取Redis数据库中的数据时,可以使用Redis的pipeline(管道)功能,将多个相互没有依赖关系的读写操作,如:下一步执行的Redis操作的开启需要获取上一步操作执行结束的数据。放到队列中,使用pipeline对象一次性执行,可以很大程度上减少与数据库建立TCP连接的性能损耗。(使用场景:用户浏览历史, 注册登录短信验证码,图片验证码)

    三、在Python中Redis的基本使用

      1、普通连接

      

    import redis
    
    # 普通连接Redis
    conn = redis.Redis(host='192.168.10.22', port=6379, password='dai123')
    conn.set('Myjob', 'Tester1', ex=60)       # set中前两个参数为key-value的键值对,  ex为过期时间,单位为秒
    job = conn.get('Myjob')
    print(job)

    运行结果:

    python中:

    Redis服务器中:

      2、连接池

      

    import redis
    
    # 连接池
    pool = redis.ConnectionPool(host='192.168.10.22', port=6379, password='dai123')
    conn = redis.Redis(connection_pool=pool)
    conn.set('area', 'shenzhen')
    area = conn.get('area')
    print(area)

      3、管道连接

      Redis 管道技术可以在服务端未响应时,客户端可以继续向服务端发送请求,并最终一次性读取所有服务端的响应

      使用pipline实现一次请求指定多个命令,并且默认情况下一次pipline 是原子性操作 (可以跳转了解原子操作)。必须执行execute()函数后才执行该操作

    import redis
    
    # 管道连接
    pool = redis.ConnectionPool(host='192.168.10.22', port=6379, password='dai123')
    conn = redis.Redis(connection_pool=pool)
    pipe = conn.pipeline(transaction=True)   # 原子操作
    pipe.get('Myjob')
    pipe.get('area')
    pipe.execute()
  • 相关阅读:
    Spring整合hibernate4:事务管理
    eclipse添加约束文件
    转]@SuppressWarnings 详解
    spring + springMVC +hibernate 配置2
    spring +spring+ hibernate配置1
    eclipse下 hibernate逆向数据库操作示例!!
    Spring+hibernate 配置实例
    dubbo接口快速测试技巧
    Spring Boot Starter列表
    Spring Boot Starters是什么?
  • 原文地址:https://www.cnblogs.com/jsondai/p/11430241.html
Copyright © 2020-2023  润新知