zoukankan      html  css  js  c++  java
  • 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()
  • 相关阅读:
    [两个数]最大公约(因)数和最小公倍数
    【curl】【php】curl报错,错误代码77,CURLE_SSL_CACERT_BADFILE (77)解决方法
    【杂项】【旅行】旅行必备
    【windows】【php】【nginx】windows 开机自启动nginx php 及nginx php配置
    【mysql】linux, mac mysql数据库root 密码忘记修改
    【mysql】 load local data infield 报错 ERROR 1148 (42000): The used command is not allowed with this MySQL version
    【mysql】配置 选项文件
    【发布相关】【心得体会】发布的注意事项-20180921
    【php】【运算符】位移运算符
    【php】运算符优先级界定
  • 原文地址:https://www.cnblogs.com/jsondai/p/11430241.html
Copyright © 2011-2022 走看看