redis认识

一、Redis应用场景:

  1. 缓存,redis最常用场景,提升服务器性能非常有效;
  2. 排行榜,redis的sortset数据结构能非常方便搞定
  3. 计算器/限速器,利用redis的原子性的自增操作,可以统计用户点赞数、访问数等(使用mysql、频繁访问,压力很大);限速器比较典型的是显示某个用户访问某个API的频率,常用在抢购上,防止用户疯狂点击带来的不必要的压力。
  4. 好友关系,利用集合的一些命令,比如求交集、并集、差集等,搞定一些共同好友、共同爱好之类的功能。
  5. 简单消息队列,除了redis自身的发布/订阅模式,可以用list来实现一个队列机制,比如:到货通知、邮件发送之类的需求,不需要高可靠,但会甙类非常大的DB压力,利用list完成异步解耦。
  6. Session共享,以PHP为例,默认Session是保存在服务器的文件中,如果是集群服务,同一个用户过来可能落在不同机器上,这就会导致用户频繁登陆;采用Redis保存Session后,无论用户落在那台机器上都能够获取到对应的Session信息。 

 二、Redis不适合的场景

  1. 保存用户的基本信息,虽然支持持久化,但他的持久化方案不能保证数据的绝对落地,并且还可能带来redis 服务器的压力。
  2. 访问数据太频繁的业务

 

(对比:缓存可以用Memcache,Session共享还能用MySql来实现,消息队列可以用RabbitMQ)

   

三、选择redis 的理由

   1、速度快,完全基于内存,使用C语言实现,网络层使用epoll解决高并发问题,单线程模型避免了不必要的上下文切换及竞争条件; 注意:单线程仅仅是说在网络请求这一模块上用一个请求处理客户端的请求,像持久化它就会重开一个线程/进程去进行处理;

2、丰富的数据类型,Redis有8种数据类型,当然常用的主要是 String、Hash、List、Set、 SortSet 这5种类型,他们都是基于键值的方式组织数据。每一种数据类型提供了非常丰富的操作命令,可以满足绝大部分需求,如果有特殊需求还能自己通过 lua 脚本自己创建新的命令(具备原子性);

3、除了提供的丰富的数据类型,Redis还提供了像慢查询分析、性能测试、Pipeline、事务、Lua自定义命令、Bitmaps、HyperLogLog、发布/订阅、Geo等个性化功能。

Redis的代码开源在GitHub,代码非常简单优雅,任何人都能够吃透它的源码;它的编译安装也是非常的简单,没有任何的系统依赖;有非常活跃的社区,各种客户端的语言支持也是非常完善。另外它还支持事务(没用过)、持久化、主从复制让高可用、分布式成为可能。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值