redis快速过场

Redis

1. 应用场景

  • 缓存,毫无疑问这是Redis当今最为人熟知的使用场景。再提升服务器性能方面非常有效;
  • 排行榜,在使用传统的关系型数据库(mysql oracle 等)来做这个事儿,非常的麻烦,而利用Redis的SortSet(有序集合)数据结构能够简单的搞定;
  • 计算器/限速器,利用Redis中原子性的自增操作,我们可以统计类似用户点赞数、用户访问数等,这类操作如果用MySQL,频繁的读写会带来相当大的压力;限速器比较典型的使用场景是限制某个用户访问某个API的频率,常用的有抢购时,防止用户疯狂点击带来不必要的压力;
  • 好友关系,利用集合的一些命令,比如求交集、并集、差集等。可以方便搞定一些共同好友、共同爱好之类的功能;
  • 简单消息队列,除了Redis自身的发布/订阅模式,我们也可以利用List来实现一个队列机制,比如:到货通知、邮件发送之类的需求,不需要高可靠,但是会带来非常大的DB压力,完全可以用List来完成异步解耦;
  • Session共享,以PHP为例,默认Session是保存在服务器的文件中,如果是集群服务,同一个用户过来可能落在不同机器上,这就会导致用户频繁登陆;采用Redis保存Session后,无论用户落在那台机器上都能够获取到对应的Session信息。
  • 一些频繁被访问的数据,经常被访问的数据如果放在关系型数据库,每次查询的开销都会很大,而放在redis中,因为redis 是放在内存中的可以很高效的访问

2. 数据类型

  • 字符串(String):最基本的类型。一个key对应一个value,二进制安全,可以存任何数据。value最大可以是512M
  • 列表(List):按照插入顺序排序,可以添加一个元素到头部,或者尾部。实际上是一个链表结构的List
  • 集合(Set):无序集合,通过hashtable实现
  • 哈希(Hash):类似Java的Map,键值对集合,field和value映射
  • 有序集合(Zset):每个元素会有一个double分数,根据分数从小到大排序,分数可重复

操作命令指南

3. 持久化

  • RDB:快照类型方式,缺点就是可能会丢失最后一次持久化后的数据。

时间,save 900 1
M分钟内执行N次,
1分钟内执行N次
三种策略

  • AOF: 日志方式,缺点就是性能差,恢复的时候,需要一条条执行日志

4. 事务

  • watch key1 key2 ... : 监视一或多个key,如果在事务执行之前,被监视的key被其他命令改动,则事务被打断 ( 类似乐观锁 )
  • multi : 标记一个事务块的开始( queued )
  • exec : 执行所有事务块的命令 ( 一旦执行exec后,之前加的监控锁都会被取消掉 ) 
  • discard : 取消事务,放弃事务块中的所有命令
  • unwatch : 取消watch对所有key的监控
posted @ 2020-08-05 14:54  escapeorface  阅读(120)  评论(0)    收藏  举报