• redis初级介绍


    内容概要

    • redis介绍
    • python操作redis
    • redis连接池

    redis介绍

    1.介绍c s架构的软件

    • redis:非关系型数据库【存数据的地方】nosql数据库,内存存储,速度非常快,可以持久化【数据从内存同步到硬盘】,数据类型丰富【5大数据类型:字符串,列表,哈希(字典),集合,有序集合】,key-value形式存储【根本没有表的结构,相当于咱们的字典】
    • nosql:指非关系型数据库:1 不限于SQL 2 没有sql

    2.redis 为什么这么快

    • 高性能的网络模型:IO多路复用的epoll模型,承载着非常高的并发量;
    • 纯内存操作,避免了很多io
    • 单线程架构,避免了线程间切换的消耗;
      6.x之前:单线程,单进程;
      6.x之后:多线程架构,数据操作还是使用单线程,别的线程做数据持久化,其它操作。

    3.redis应用场景

    • 当缓存数据库使用,接口缓存,提高接口响应速度
      -请求进到视图—》去数据查询[多表查询,去硬盘取数据:速度慢]----》转成json格式字符串—》返回给前端
      -请求进到视图—》去redis[内存]----》取json格式字符串—》返回给前端
    • 做计数器:单线程,不存在并发安全问题
      -统计网站访问量
      -个人站点浏览量
      -文章阅读量
    • 去重操作:集合
    • 排行榜:有序集合
      -阅读排行榜
      -游戏金币排行榜
    • 布隆过滤器
    • 抽奖
    • 消息队列

    4.redis安装

    • redis介绍:使用c语言写的—【编译型语言,在操作系统运行,要编译成可执行文件,由于采用了IO多路复用的epoll模型,所以它不支持windows,只有linux操作系统支持epoll】

    • 官网:https://redis.io/
      下载完是源代码:c语言源码 :https://redis.io/download/#redis-stack-downloads

    • 中文网:http://redis.cn/download.html

    • win版本下载地址
      最新5.x版本 https://github.com/tporadowski/redis/releases/
      最新3.x版本 https://github.com/microsoftarchive/redis/releases

    • win装完会有redis服务

    • 启动服务,手动停止

    • 客户端链接:redis-cli -h 127.0.0.1 -p 6379

    • 简单命令:
      set name lqz
      get name
      ping

    • 停掉服务:
      -去win服务点关闭
      -客户端关闭:shutdown

    • mysql 服务端
      #mysql客户端
      -navicate
      -命令窗口cmd
      -python操作

    • redis 服务器端
      #redis 客户端
      -redis-cli
      -图形化工具:redis-destop-management
      -python操作

    python操作redis

    from redis import Redis
    
    conn = Redis(host='localhost',port=6379)
    conn.set('name','jason')
    print(conn.get('name'))
    conn.close()
    
    b'jason'
    
    Process finished with exit code 0
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10

    redis连接池

    import redis
    
    pool = redis.ConnectionPool(max_connections=200, host='127.0.0.1', port=6379)
    
    • 1
    • 2
    • 3
    from redis import Redis
    from threading import Thread
    
    # 直接链接
    # def get_name_from_redis():
    #     conn = Redis(host="localhost", port=6379)
    #     print(conn.get('name'))
    #     conn.close()
    #
    #
    # for i in range(100):
    #     t=Thread(target=get_name_from_redis)
    #     t.start()
    #
    #
    # import time
    # time.sleep(10)
    
    
    ### 使用连接池链接
    import redis
    from POOL import pool
    def get_name_from_redis():
       # 创建一个连接池,保证它是单例,全局只有一个pool对象:使用模块导入方式实现单例
    
       conn = redis.Redis(connection_pool=pool) #m每执行一次会从池中取一个链接,如果没有,等待
       res=conn.get('name')
       print(res)
       conn.close()
    
    
    for i in range(100):
       t=Thread(target=get_name_from_redis)
       t.start()
    
    
    import time
    time.sleep(10)
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17
    • 18
    • 19
    • 20
    • 21
    • 22
    • 23
    • 24
    • 25
    • 26
    • 27
    • 28
    • 29
    • 30
    • 31
    • 32
    • 33
    • 34
    • 35
    • 36
    • 37
    • 38
  • 相关阅读:
    大厂真题:【位运算】米哈游2023秋招-相加异或
    890. 查找和替换模式
    地平线GitLab使用指导
    算法笔记-第九章-平衡二叉树
    英语教师杂志英语教师杂志社英语教师编辑部2022年第16期目录
    大数据HBASE的详细使用
    base相关密码特征
    如何解决网站被攻击的问题
    [附源码]计算机毕业设计社区生活废品回收APPSpringboot程序
    事件冒泡、事件捕获、事件委托
  • 原文地址:https://blog.csdn.net/DiligentGG/article/details/127853019