01 Redis使用场景 对比Memcached MySQL

1. Redis 有哪些常见的功能?
  1. 数据缓存功能
  2. 分布式锁的功能
  3. 支持数据持久化
  4. 支持事务
  5. 支持消息队列
2. Redis 适合的场景
  1. 缓存:减轻 MySQL 的查询压力,提升系统性能;
  2. 排行榜:利用 Redis 的 SortSet(有序集合)实现;
  3. 计算器/限速器:利用 Redis 中原子性的自增操作,我们可以统计类似用户点赞数、用户访问数等。这类操作如果用 MySQL,频繁的读写会带来相当大的压力;限速器比较典型的使用场景是限制某个用户访问某个 API 的频率,常用的有抢购时,防止用户疯狂点击带来不必要的压力;
  4. 好友关系:利用集合的一些命令,比如求交集、并集、差集等。可以方便解决一些共同好友、共同爱好之类的功能;
  5. 消息队列:除了 Redis 自身的发布/订阅模式,我们也可以利用 List 来实现一个队列机制,比如:到货通知、邮件发送之类的需求,不需要高可靠,但是会带来非常大的 DB 压力,完全可以用 List 来完成异步解耦;
  6. Session 共享:Session 是保存在服务器的文件中,如果是集群服务,同一个用户过来可能落在不同机器上,这就会导致用户频繁登陆;采用 Redis 保存 Session 后,无论用户落在那台机器上都能够获取到对应的 Session 信息。
3. Redis 不适合的场景

数据量太大、数据访问频率非常低的业务都不适合使用 Redis,数据太大会增加成本,访问频率太低,保存在内存中纯属浪费资源。

4. Redis这类NoSQL非关系型数据库与传统关系型数据库mysql的区别
  • NoSQL的数据主要存储在内存中,而mysql的数据主要存储在磁盘
  • NoSQL数据结构比较简单,功能有限,不如mysql的SQL语句强大
  • NoSQL高性能、高扩展、高可用,但难以保证数据一致性;MySQL成本低、结构稳定、便于查询,可以保证数据的一致性
5. Redis 和 Memcached 的区别
  1. Redis 是基于键值对的 NoSql 数据库,支持五种基本的数据类型:String、list、hash、set、zset,以及 HyperLogLog 和 Bitmap 两种高级数据类型,可以适用更多的场景,而 Memcached 仅支持字符串类型,较为单一。
  2. Redis 支持两种持久化机制:RDB 快照和 AOF 日志,而 Memcached 不支持持久化,完全基于内存存储,断电即丢失。
  3. Redis 是单线程的,使用的是非阻塞IO多路复用模型,而 Memcached 是多线程的,使用的是非阻塞 IO 复用模型。
  4. Redis 支持 cluster集群模式,而 Memcached 没有原生的集群模式。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值