zoukankan      html  css  js  c++  java
  • redis缓存机制和底层实现

    说 Redis 的缓存机制实现之前,我想先回顾一下 mysql

    mysql 存储在哪儿呢?

    以 windows 为例,mysql 的表和数据,存储在data 目录下frm ibd 后缀的文件中

    mysql存储在机器/服务器的 硬盘中

    所以 mysql 读写数据都需要从磁盘读取 。磁盘的容量,带宽的大小就影响了网站的访问速度,读取的方式,也就是 sql 语句,次数和效率也会影响读取效率。

    当访问量和并发很大的时候,mysql 就撑不住了,据统计,mysql的连接池并发数max为 500-1000

    这时,我们可以通过 慢查询优化 ,cdn ,页面静态化nginx 负载均衡策略 ,甚至 分布式数据库 来进行 sql优化 ,当然也可以使用 高速缓存,比如 redis


    Redis - 高并发,内存高速cache ,处理读写io的高并发容忍。

    redis 通常被使用来将那些经常被访问的内容缓存在内存中。

    很多人谈到redis ,哦,k-v 存储数据库啊, 速度快啊!为什么快啊? 人家存内存啊,能不快吗?关键人家还支持复杂的数据结构,list 什么的,很多高并发场景都可以使用。 比如:电商秒杀场景的解决策略与具体原理

    remote dictionary server (远程数据服务) 内存高速缓存数据库 数据模型为 k-v 也就是redis 的一种最经常使用的数据类型 string

    k-v 的算法时间复杂度 可是 0(1) 而mysql 的查询是基于表关联技术 ,这就是nosql的优势所在。

    附上redis 和memcahe 的比较

    1. Redis不仅仅支持简单的k/v类型的数据,同时还提供list,set,zset,hash等数据结构的存储。
    2. Redis支持master-slave(主-从)模式应用,高可用的cache系统,支持集群服务器之间数据同步。

    3. Redis支持数据持久化,可以将内存中的数据保持在磁盘中,重启的时候可以再次加载进行使用。

    4. Redis单个value的最大限制是1GB,(k-v),memcached只能保存1MB的数据。(k:250kb v:1mb)

    redis 比sql 到底快多少呢? 
    1 从存储媒介来看,内存比磁盘的读取速度 hash查找是100w/s 的数量级

    2 多路复用io (todo)


    redis 和mysql 绝对不是竞争的关系,在工作中合理运用两者才能达到更好的效果。

  • 相关阅读:
    SPA架构的优点和缺点以及一些思考
    我们为什么要尝试前后端分离
    HTTP协议详解
    前后端分离 与 不分离
    描述一下 cookies,sessionStorage 和 localStorage 的区别
    Express中间件的意思 next()的方法
    Java笔记1Java相关概念和如何实现跨平台
    去掉EditPlus自动备份bak文件
    Java配置环境变量
    Java初学者入门应该掌握的30个概念
  • 原文地址:https://www.cnblogs.com/charlas/p/7607572.html
Copyright © 2011-2022 走看看