Redis和Memcached是流行的开源内存数据存储。尽管它们既易于使用又具有高性能,但在选择时还是需要考虑一些重要的差异。Memcached是为简单而设计的,而Redis提供了一套丰富的功能,使其能够有效地用于各种用例。了解您的需求以及每个引擎提供的功能,以决定哪种解决方案更能满足您的需求。
English version
Memcached | Redis | |
---|---|---|
Sub-millisecond latency | Yes | Yes |
Developer ease of use | Yes | Yes |
Data partitioning | Yes | Yes |
Support for a broad set of programming languages | Yes | Yes |
Advanced data structures | - | Yes |
Multithreaded architecture | Yes | - |
Snapshots | - | Yes |
Replication | - | Yes |
Transactions | - | Yes |
Pub/Sub | - | Yes |
Lua scripting | - | Yes |
Geospatial support | - | Yes |
中文版本
Memcached | Redis | |
---|---|---|
亚毫秒级延迟 | Yes | Yes |
易用性 | Yes | Yes |
数据分区 | Yes | Yes |
支持多种编程语言 | Yes | Yes |
高级数据结构 | - | Yes |
多线程体系结构 | Yes | - |
支持快照 | - | Yes |
支持主从复制 | - | Yes |
事务处理 | - | Yes |
发布/订阅模式 | - | Yes |
Lua 脚本 | - | Yes |
支持地理信息数据结构 | - | Yes |
Sub-millisecond latency 亚毫秒延迟
Redis 和Memcached 都支持亚毫秒级延迟的响应速度。通过将数据存储在内存中,它们可以比基于磁盘的数据库更快地读取数据。
Developer ease of use 易用性
Redis和Memcached都很容易使用,只需要少量的代码就能集成到应用程序中。
Data partitioning 数据分离
Redis和Memcached都允许您在多个节点之间分发数据。这使您能够在需求增长时进行扩展以更好地处理更多数据
Support for a broad set of programming languages 支持多种语言
Redis和Memcached都有许多可供开发人员使用的开源客户端。支持的语言包括Java、Python、PHP、C、C++、C#、JavaScript、Node.js、Ruby、Go和许多其他语言。
Advanced data structures 高级数据结构
除了字符串之外,Redis还支持列表、集合、排序集合、散列、位数组和超级日志。应用程序可以使用这些更高级的数据结构来支持各种用例。例如,您可以使用Redis Sorted Sets轻松实现一个游戏排行榜,该排行榜按玩家等级进行排名。
Multithreaded architecture 多线程架构
Memcached是多线程的,它可以使用多个处理核心。这意味着您可以通过扩大计算容量来处理更多的操作。
Snapshots 快照
使用Redis的快照功能将数据保存在磁盘上,作为存档,或恢复数据时使用
Replication 主从复制
Redis可以创建主从架构,通过设立主服务器和多个从服务器,根据数据库读访问量去扩充集群数量,是一个高可用的集群。
Transactions 事务处理
Redis支持将一组命令作为独立的原子操作来执行的事务。
Pub/Sub 发布/订阅
Redis支持具有模式匹配的Pub/Sub消息传递,可用于高性能聊天室、实时评论流、社交媒体订阅源和服务器互通。
Lua scripting Lua 脚本
Redis允许您执行事务性Lua脚本,该脚本可以帮助您提高性能并简化应用程序。
Geospatial support 地理空间支持
Redis有专门构建的命令,用于大规模处理实时地理空间数据。
该类型,就是元素的2维坐标,在地图上就是经纬度。redis基于该类型,提供了经纬度设置,查询,范围查询,距离查询,经纬度Hash等常见操作。