Redis和Memcached如何选

本文涉及的产品
云数据库 Redis 版,社区版 2GB
推荐场景:
搭建游戏排行榜
简介: 尺有所长、寸有所短,在真实的场景中,选择最适合的就好。

在众多NoSQL产品中,Redis与Memcached是最耀眼的两个明星,哪个更优秀呢?在实际应用时,应该如何选择?本着追本溯源的原则,我们先来看看,NoSQl究竟是要解决什么问题。

它的由来

随着互联网的发展、网民数量和在线时长的增加,一些主流网站经常会遇到超高访问量的情况。这时,使用单个传统数据库,比如MySQL,在遇到性能问题时,就无法有效应对了。优化数据库结构和索引,成为当务之急,为缓解数据库的压力,缓存技术开始被程序员们大量使用。

当访问量进一步增大后,势必要将单台web机器升级为多台,与此同时,Memcached成为了配套的必须。再后来,只读数据库和负载均衡的引入,让架构变的更加完善。当超大规模和超高并发,逐渐成为常态,可以解决大规模数据集合、多重数据种类的NoSQL,开始了非常迅速的发展。

它的定义与主要用途

NoSQL( Not Only SQL ),意为“不仅仅是SQL”,泛指非关系型的数据库。它的应用场景中,通常会有以下五项要求:

  • 数据模型比较简单;
  • 需要灵活性更强的IT系统;
  • 对数据库性能要求较高;
  • 不需要高度的数据一致性;
  • 对于给定key,比较容易映射复杂值的环境。

对比Redis与Memcached

了解了NoSQL的由来,我们具体看看Redis与Memcached具体有哪些不同。

  • 首先比较NoSQL最关注的性能

    由于Redis无法使用多核,在存储大数据(大于100K)时,性能要比Memcached逊色一些。
  • 是否可以持久化

    Redis有两种持久化的方式:RDB(快照)方式和AOF(追加)。由于Memcached的所有的数据都在内存中,它不可以持久化。
  • 支持的数据类型

    Redis支持五种数据类型:string(字符串),hash(哈希),list(列表),set(集合)及zset(sorted set:有序集合)。而Memcached仅支持key-value类型。
  • 数据一致性

    Redis事务支持比较弱,只能保证事务中的每个操作连续执行。Memcached 在并发场景下,用cas保证一致性
  • 存储的最大值

    Redis的key和value最大都是512MB。而Memcached的key最大为250字节,value最大为1MB。
    

总结

存在的,就是合理的。尺有所长、寸有所短,在真实的场景中,选择最适合的就好。

相关实践学习
基于Redis实现在线游戏积分排行榜
本场景将介绍如何基于Redis数据库实现在线游戏中的游戏玩家积分排行榜功能。
云数据库 Redis 版使用教程
云数据库Redis版是兼容Redis协议标准的、提供持久化的内存数据库服务,基于高可靠双机热备架构及可无缝扩展的集群架构,满足高读写性能场景及容量需弹性变配的业务需求。 产品详情:https://www.aliyun.com/product/kvstore     ------------------------------------------------------------------------- 阿里云数据库体验:数据库上云实战 开发者云会免费提供一台带自建MySQL的源数据库 ECS 实例和一台目标数据库 RDS实例。跟着指引,您可以一步步实现将ECS自建数据库迁移到目标数据库RDS。 点击下方链接,领取免费ECS&RDS资源,30分钟完成数据库上云实战!https://developer.aliyun.com/adc/scenario/51eefbd1894e42f6bb9acacadd3f9121?spm=a2c6h.13788135.J_3257954370.9.4ba85f24utseFl
相关文章
|
3月前
|
缓存 NoSQL 应用服务中间件
2.2.2 redis,memcached,nginx网络组件
2.2.2 redis,memcached,nginx网络组件
|
3月前
|
NoSQL Java 应用服务中间件
4.网络设计与redis、memcached、nginx组件(二)
4.网络设计与redis、memcached、nginx组件(二)
28 0
|
3月前
|
存储 NoSQL 应用服务中间件
4.网络设计与redis、memcached、nginx组件(一)
4.网络设计与redis、memcached、nginx组件(一)
76 0
|
2月前
|
缓存 NoSQL Redis
如何在Python中使用Redis或Memcached进行缓存?
如何在Python中使用Redis或Memcached进行缓存?
28 2
|
3月前
|
缓存 NoSQL Java
flea-cache使用之整合Memcached和Redis接入
【1月更文挑战第3天】本篇博文介绍 flea框架下的 flea-cache 模块中 整合接入 Memcached 和 Redis
49 1
flea-cache使用之整合Memcached和Redis接入
|
3月前
|
NoSQL 关系型数据库 应用服务中间件
redis,memcached,nginx网络组件,网络编程——reactor的应用
目标 明白网络模块要处理那些事情 reactor 是怎么处理这些事情的 reactor 如何封装的 网络模块与业务逻辑的关系 如何优化 reactor 网络编程关注的问题
49 1
|
3月前
|
NoSQL 网络协议 应用服务中间件
redis,memcached,nginx网路组件
redis,memcached,nginx网路组件
39 0
|
9月前
|
缓存 NoSQL Redis
Redis 和 Memcached 的区别
Redis和Memcached是两种常用的内存缓存系统,尽管它们都被用于提高应用程序的性能和扩展性,但它们在一些方面有所不同。
48 0
|
10月前
|
存储 缓存 NoSQL
redis 和 memcached 的区别
redis 和 memcached 的区别
|
10月前
|
存储 NoSQL Redis
Redis 与 Memcached的区别
Redis 与 Memcached的区别

热门文章

最新文章