`

redis和memcache的区别

 
阅读更多

对比一下:

1、redis单线程,memcache多线程。一般每秒请求次数不会太大,选择时这个问题可忽略。

2、redis可持久化(支持master-slave主从备份),memcache数据只能放在内存。面对机器停电或重启等,redis影响不大,数据丢失较少甚至不丢失;而memcache全丢失,所以一般存在单点问题(虽然可以通过一些手段做到高可用)。

3、数据一致性:redis是单线程,所以对于一个事务按顺序执行命令即可,memcache提供CAS机制(可以先获得该key版本号,再调用client.cas(key, newValue, casValue);即可)。一般来说,数据一致性比较少出问题,但是针对多个客户端Client可能同时修改某个值时(比如一个红包被领取剩余的钱数),为了保证修改时,原来的值已经变化,这里就需要保证数据一致性。

4、存储问题,最终转化为字节存储,但redis工具包一般存储的value要转成String,而memcache有工具包直接存储Object(需要实现序列化),但最终还是要序列化成字节byte格式。

5、存储格式,redis有很多数据类型,像String、Hash、List、Set、Sorted Set。其中Hash(即类似HashMap结构存储)摒弃了像memcache的先序列化以及获取后反序列化的操作,直接针对具体某个属性修改,真方便啊\(^o^)/;Sorted Set可用来实现排序排行榜等功能。

6、redis具有“订阅-发布系统”高级功能。

 7、redis可通过下面命令修复数据,重新起服会自动更新加载。若起服错误,用diff命令比较稳健。

redis-check-aof --fix appendonly.aof

 

 

拓展,分片时,可通过范围分,也可通过一致性hash分。常见实现为1、在客户端分片。2、通过代理分片,比如Twemproxy。3、查询路由:

一致性hash:

定义:一致哈希 是一种特殊的哈希算法。在使用一致哈希算法后,哈希表槽位数(大小)的改变平均只需要对 {\displaystyle K/n} K/n 个关键字重新映射,其中 {\displaystyle K} K是关键字的数量, {\displaystyle n} n是槽位数量。然而在传统的哈希表中,添加或删除一个槽位的几乎需要对所有关键字进行重新映射。

        在一些缓存的集群扩容时,常常提到一致性hash算法,一般指以较小的改动增加一个节点。如果把hash值定位为1-232,组成一个圈,将集群的节点平均划分圈,放到相应位置,请求来的时候根据请求ip或用户信息等的定值得到hash值找到最近的节点访问(可以理解为按照二叉树规则查找)。这样的话,增加新节点,只影响了原来两个旧节点之间的一半的数据。另外,为了避免hash值集中在某个节点上,需要自己实现hash值计算,比如memcache的KETAMA_HASH。

        但是如果是web服务器负载均衡的机器扩容时,因为无会话保存,直接使用求余算法即可。另外,负载均衡有:DNS域名解析负载均衡(延迟)、数据链路层负载均衡(LVS)、IP负载均衡(SNAT)、HTTP重定向负载均衡(少见)、反向代理负载均衡(nginx)。负载均衡算法有:轮询算法、哈希算法(即一致hash)、加权算法(即加权轮询)、最小连接算法、响应速度算法、随机算法(即随机值,也可配置权重概率随机)。其中主要按请求次数、连接数、自定义配置权重来处理请求。

 

反向代理负载均衡:常用nginx,看到一篇安装配置步骤,有空搭一下。

 

分享到:
评论

相关推荐

    Redis和Memcache的区别总结

    1、Redis和Memcache都是将数据存放在内存中,都是内存数据库。不过memcache还可用于缓存其他东西,例如图片、视频等等; 2、Redis不仅仅支持简单的k/v类型的数据,同时还提供list,set,hash等数据结构的存储; 3...

    Redis、Memcache、MongoDB区别

    1、里面包含Redis、MongoDB、Memcache相关的学习文档 2、对这三者有比较详细的应用场景告之,并描述出了三者之间区别 3、提供JAVA连接Redis常见问题的解决方案 4、对MongoDB的特性有专门文档作描述 5、对于新手而言...

    php7.3.~redis和memcache扩展包.rar

    标题中的“php7.3.~redis和memcache扩展包.rar”表明这是一份针对PHP 7.3版本的Redis和Memcache扩展的压缩文件,适用于Windows操作系统。这两个扩展是PHP开发过程中常用的缓存管理工具,对于提升Web应用程序的性能至...

    NoSQL Redis 和 Memcache 流量生成和基准测试工具 .zip

    它提供以下功能支持 Redis 和 Memcache 协议(文本和二进制)多线程多客户端执行多种配置选项,包括读取:写入比率随机和连续的键名称模式策略随机或范围密钥过期Redis 集群TLS 支持...还有更多更多详情请阅读Redis ...

    Redis和memcache缓存基本实现

    Redis和Memcached是两种常用的内存数据存储系统,常被用作高性能、低延迟的缓存解决方案。它们在处理大量数据的快速访问上表现卓越,但各自具有不同的特性和使用场景。 Redis,全称Remote Dictionary Server,它是...

    包含Redis,memcache,encache的NoSQL入门

    本教程将带你入门NoSQL的世界,特别是聚焦于Redis、Memcached和EnCache这三种流行的数据存储系统。 **Redis** 是一个开源的、基于键值对的数据存储系统,支持多种数据结构如字符串、哈希、列表、集合和有序集合。它...

    选redis还是memcache

    在互联网分层架构中,Memcached(简称Memcache)和Redis是最常用的键值(Key-Value, KV)缓存系统。两者各有特色,如何根据业务需求和技术背景做出合理的选择成为了一个重要的问题。本文将深入分析这两种缓存技术的...

    redis&memcache;所需扩展包

    在提供的压缩包“redis&memcache所需扩展包”中,可能包含了不同操作系统下的安装脚本、配置文件或额外的扩展组件。确保正确解压并根据系统环境使用这些资源,有助于顺利地在你的系统上部署和使用 Redis 和 ...

    MemCache和Redis缓存介绍

    **MemCache和Redis缓存介绍** 在IT行业中,缓存技术是提高系统性能和响应速度的关键因素之一。MemCache和Redis是两种广泛使用的分布式内存缓存系统,它们能够有效地存储和检索数据,减轻数据库的负担,提升应用的...

    memcache、redis、tair性能对比测试报告

    Ehcache作为组件级缓存,其性能受到web服务器和集群方式的影响,不具备与memcache、redis、tair的直接对比性。而MongoDB是文档型数据库,其设计目标与缓存系统不同,不适宜进行性能对比。 测试场景涵盖了单机环境和...

    使用 Redis、Memcache 等为 Sanic 提供服务器支持的会话 .zip

    目前可用的接口有Redis(支持驱动程序aioredis和asyncio_redis)Memcache (通过aiomcache)Mongodb (通过sanic_motor和pymongo)内存(适用于测试和开发环境)安装安装pip(不同驱动程序还有其他选项,请查看文档)pip...

    ehcache memcache redis 差异

    本文将深入探讨三种常见的缓存系统:Ehcache、Memcached和Redis,分析它们之间的差异,以便于选择最适合特定业务场景的解决方案。 Ehcache是一款广泛应用于Java环境中的开源分布式缓存系统。它最初设计为本地内存...

    memcached数据完整迁移到redis

    5. **高可用性**:Redis 的主从复制和哨兵系统提供了故障转移和高可用性解决方案。 **迁移过程** 迁移过程通常分为以下几个步骤: 1. **数据获取**:使用 C# 客户端库(如 EnyimMemcached)连接到 Memcached 服务,...

    memcache与redis的比较

    memcache与Redis的比较 ...memcache和Redis都是缓存解决方案,但它们有不同的设计理念和应用场景,Redis支持多种数据类型,持久化和事务等功能,而memcache则提供了简单的key-value存储和cas命令来保证并发访问一致性。

    memcache redis tair 性能测试报告

    4. 并发get操作时,memcache和redis的TPS在1KB数据时接近,但在10KB和100KB数据时,memcache保持较高TPS,而redis性能下降。 【总结】 根据测试结果,redis在单线程set和get操作中表现出色,但在高并发set操作且...

    centos下自动安装Memcache、Redis服务端以及PHP扩展

    该脚本基于阿里云服务器安装脚本,并只能运用于centos / aliyun os(因为内部使用了yum安装unzip和dos2unix),该脚本使用时,需要与阿里云安装脚本的install.sh放在同一目录下。有缘人切忌乱用

    session共享之memcache Redis

    标题中的“session共享之memcache Redis”指的是在Web开发中如何使用memcache和Redis来实现会话(session)数据的跨服务器共享。会话管理是Web应用中的关键部分,它允许用户在不同页面间保持状态,例如登录信息、...

    Redis和Memcache对比与如何选择

    Redis 和 Memcache 是两种常用的内存数据存储系统,它们在许多方面有着不同的特性和用途。在选择使用哪个系统时,需要根据具体的业务需求和技术环境来决定。 首先,性能方面,Redis 在处理小数据值时通常在单个核心...

Global site tag (gtag.js) - Google Analytics