zoukankan      html  css  js  c++  java
  • MemCache与redis

    以下内容为个人理解所得,如要转载,请标明出处:

    像项目中首页的大广告和商品类目这些不需要经常修改的数据,如果用户每次刷新页面的时候都要去数据库中查询,这样会浪费资源和增加数据库的压力

    所以我们想当把这些数据添加到一个缓存中,用户去访问的时候,先去缓存中查找,如果命中失败,再去数据库中查询,然后把查询到的数据添加到缓存中。

    目前比较主流的缓存技术有RedisMemcached,单纯从缓存命中的角度来说,Memcached要高一些,可Redis和Memcache的差距其实并不大,但Redis提供的功能更加强大一些,读写速度也很快。所以我们选用了Redis来缓存数据。
    redis把数据以key—value的形式缓存到内存中,并提供了多种数据存储类型(String、Hash、list、Set、SortedSet),还自身提供了持久化功能(2种:RDB、AOF),还可以把数据备份到磁盘中(redis的SAVE命令用于创建当前 redis数据库的备份),防止redis宕机时的数据丢失。(会周期性的把更新的数据写入磁盘或者把修改操作写入追加的记录文件,并且在此基础上实现了master-slave(主从)同步)。

    1,存储方式不同

    memecache 把数据全部存在内存之中,数据不能超过内存大小;

    redis有部份存在硬盘上,这样能保证数据的持久性,支持数据的持久化

    2,数据支持类型不同

    Redis支持的数据类型比memcache多的多

    Redis支持的数据类型: String、Hash、list,数组,集合

    Memcache仅仅支持简单数据类型 ,复杂数据类型需要应用自己处理

    他们都是以key-value的类型存储数据

    3.为什么redis Memcached要快?

     Memcached  完全基于内存,而Redis 具有持久化保存特性,即使是异步的,Redis 也不可能比Memcached 快。

    Memcached底层用的是Libevent,Redis并没有选择Libevent 。Libevent 为了迎合通用性,使得他的底层代码庞大而Redis的底层代码还不到libevent的1/3 ,

    但是也牺牲了redis通用性,现在在redis的官网上,他说明了redis只能在Liuse上使用。

    CAS 问题。CAS 是Memcached 中比较方便的一种防止竞争修改资源的方法。CAS 实现需要为每个cache key设置一个隐藏的cas token ,

    cas 相当value 版本号,每次settoken 需要递增,因此带来CPU和内存的双重开销,虽然这些开销很小,

  • 相关阅读:
    Leetcode NO.110 Balanced Binary Tree 平衡二叉树
    Leetcode NO.226 Invert Binary Tree 翻转二叉树
    Leetcode NO.215 Kth Largest Element In An Array 数组中的第K个最大元素
    根据特征的浏览器判断
    Cygwin在打开在当前目录
    【转帖】科学对待 健康养猫 打造快乐孕妇
    解决chrome浏览器安装扩展、应用程序一直处在“检查中”的问题
    对【SQL SERVER 分布式事务解决方案】的心得补充
    关于“点击这里继续访问您选择的百度XXX”
    VBA一例:如何保持文本框焦点
  • 原文地址:https://www.cnblogs.com/lowbi/p/10947271.html
Copyright © 2011-2022 走看看