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的监控

浙公网安备 33010602011771号