Redis和Memcached的异同
Memcached
- 可以利用多核优势,单实例吞吐量极高,可以达到几十万QPS;
- 只支持简单的key/value数据结构,不像Redis可以支持丰富的数据类型。
- 无法进行持久化,数据不能备份,只能用于缓存使用,且重启后数据全部丢失。
- 无法进行数据同步,不能将MC中的数据迁移到其他MC实例中。
- Memcached内存分配采用Slab Allocation机制管理内存,value大小分布差异较大时会造成内存利用率降低, 并引发低利用率时依然出现踢出等问题。需要用户注重value设计。
Redis
- 支持多种数据结构,如string、 list、hash、set、zset等;
- 支持持久化操作,可以进行aof及rdb数据持久化到磁盘,从而进行数据备份或数据恢复等操作,较好的防止数据丢失的手段;
- 支持通过Replication进行数据复制,通过master-slave机制,可以实时进行数据的同步复制来实现HA;
- 单线程请求,所有命令串行执行,并发情况下不需要考虑数据一致性问题,但性能受限于CPU性能,故单实例CPU最高才可能达到5-6wQPS每秒;
- 支持pub/sub消息订阅机制,可以用来进行消息订阅与通知;
- Redis在string类型上会消耗较多内存,可以使用hash表压缩存储以降低内存耗用。
2.Redis作为分布式缓存可能会存在哪些问题,怎么解决?
- 缓存穿透预防及优化:缓存穿透是指查询一个根本不存在的数据,缓存层和存储层都不会命中;缓存穿透将导致不存在的数据每次请求都要到存储层去查询,失去了缓存保护后端存储的意义;解决方法:缓存空对象和布隆过滤器拦截;
- 缓存雪崩问题优化:由于缓存层承载着大量请求,有效的保护了存储层,但是如果缓存层由于某些原因整体不能提供服务,于是所有的请求都会达到存储层,存储层的调用量会暴增,造成存储层也会挂掉的情况;预防和解决缓存雪崩问题,可以从以下三个方面进行着手:保证缓存层服务高可用性、依赖隔离组件为后端限流并降级、提前演练。
- 缓存热点key重建优化:开发人员使用缓存和过期时间的策略既可以加速数据读写,又保证数据的定期更新,这种模式基本能够满足绝大部分需求。但如果热点Key和重建缓存耗时两个问题同时出现,可能就会对应用造成致命的危害;解决方法:互斥锁(只允许一个线程重建缓存)、永远不过期(唯一不足的就是重构缓存期间会出现数据不一致的情况)。
Redis和Memcached的异同的更多相关文章
- 浅谈redis和memcached的区别
缓存技术方面说到redis大家必然会联想到memcached,了解它们的人应该都知道以下几点吧 redis与 memcached相比,redis支持key-value数据类型,同事支持list.set ...
- Redis 对比 Memcached 并在 CentOS 下进行安装配置
了解一下 Redis Redis 是一个开源.支持网络.基于内存.键值对的 Key-Value 数据库,使用 ANSI C 编写,并提供多种语言的 API ,它几乎没有上手难度,只需要几分钟我们就能完 ...
- Redis和Memcached整体
Redis和Memcached整体对比 Redis的作者Salvatore Sanfilippo曾经对这两种基于内存的数据存储系统进行过比较,总体来看还是比较客观的,现总结如下: 1)性能对比:由于R ...
- redis、memcached、mongoDB 对比与安装
一.redis.memcached.mongoDB 对比 Memcached 和 Redis都是内存型数据库,数据保存在内存中,通过tcp直接存取,速度快,并发高.Mongodb是文档型的非关系型数据 ...
- redis和memcached缓存
memcached memcache开源的,高性能,高并发分布式内存缓存系统,天生支持集群 memcached下载地址: http://memcached.org/downloads python实现 ...
- Redis与Memcached的区别
传统MySQL+ Memcached架构遇到的问题 实际MySQL是适合进行海量数据存储的,通过Memcached将热点数据加载到cache,加速访问,很多公司都曾经使用过这样的架构,但随着业务数据量 ...
- Redis和Memcached的区别详解
转载于:http://www.itxuexiwang.com/a/shujukujishu/redis/2016/0216/119.html?1455855360 Redis的作者Salvatore ...
- Redis和Memcached对比
Redis和Memcached对比 这两年 Redis火得可以,Redis也常常被当作 Memcached的挑战者被提到桌面上来.关于Redis与Memcached的比较更是比比皆是.然而,Redis ...
- redis与memcached比较
引用自:http://blog.csdn.net/e_wsq/article/details/23551799 最近需要用no-sql数据库来保存大量的数据,插入和查询都比较频繁,相对而言查询更加频繁 ...
随机推荐
- Linux访问控制列表(Access Control List,简称ACL)
Linux访问控制列表(Access Control List,简称ACL) 作者:尹正杰 版权声明:原创作品,谢绝转载!否则将追究法律责任. 一.ACL概述 ACL:Access Control L ...
- ansible中的常用循环模块with_items
ansible中的循环模块有很多,不过with_items最为常用,且较为简单,循环模块最多的功能就是将重复性的任务简单化,如下例子所示: - hosts: all remote_user: root ...
- [LeetCode] 0200. Number of Islands 岛屿的个数
题目 Given a 2d grid map of '1's (land) and '0's (water), count the number of islands. An island is su ...
- Java调用Kotlin事项及Kotlin反射初步
继续来研究Java调用Kotlin的一些东东. @Throws注解: 我们知道在Kotlin中是不存在checked exception的,而在Java中是存在的,那..如果从Java来调用Kotli ...
- bat echo 每行不同的颜色
bat echo 每行不同的颜色 先看代码: @echo off SETLOCAL EnableDelayedExpansion for /F "tokens=1,2 delims=#&qu ...
- php读取外部txt文件内容并打印在页面|fopen()函数
<html> <head> <meta http-equiv="Content-Type" content="text/html; char ...
- strcspn函数的用法
#include <string.h> main() { char *str = "Linux was first developed for 386/486-based pcs ...
- (尚019)Vue基于脚手架编写项目
vue_demo目录结构截图: (1)图一 (2).图二 (3).图三 (四).图四 (5).图五 (6).图六 (7).图七 不能随便改入口文件的名字,因为已经配置好了 (8).图八 (9).图九 ...
- mysql 根据发音查找内容
当前表 mysql> select * from table1; +----------+------------+-----+ | name_new | transactor | pid | ...
- nRF51822 硬件复位引脚
nRF51822 有一个硬件复位引脚和Debug 口SWDIO是共用的,名字叫做nReset. 实现硬件复位是怎样子的: 1.这个引脚引出来, 2.给这个引脚低电平, 3.从低电平拉到高电平,即复位. ...