redis的基本特性介绍。
1、redis 是一个基于内存的 nosql 数据库,数据以字典方式存储,读取速度非常快,性能非常高,在一台普通的笔记本电脑上,redis 在一秒内读写超过10万个键值。
2、redis 以 键-值 方式存储,可以支持的类型有5种:String、Hash、List、Set、zset。
3、redis 是多线程的,只是服务客户端的线程就一个,所以被认为是单线程的,使用 IO 多路复用模型,使得能够以单线程快速处理高并发请求,正是由于是单线程的,所以没有并发问题,另外,也能够更好地支持事务,但是不支持回滚。
4、redis 常被作为缓存使用,最好将热点数据存储在 redis 中,减轻磁盘数据库的压力,另外,还支持过期删除策略和内存淘汰策略。
4、支持发布/订阅模式。
5、redis 也提供持久化支持,可以将内存的数据异步写到硬盘中,同时不影响继续提供服务,有 RDB 方式和 AOF 方式。
6、一个 redis 实例可以看成一个大数据库,这个大数据库又包含多个小数据库,默认是16个,可以设置,以编号0开始,只能是编号,不能够设置名称,redis大数据库只能有一个访问密码,要么能全部访问,要么一个小数据库也不能访问。
7、redis是非常轻量级的,一个空redis实例(redis大数据库)占用的内存只有1MB左右。
8、redis 支持主从复制模式,可以用多个 redis 节点做到读写分离,提升读写性能,还可以数据备份,防止因为断电或者宕机造成数据丢失。
9、redis 支持哨兵模式,在主从模式基础上,增加了哨兵节点,能够自动实现故障转移,提高可靠性。
10、redis 支持分布式集群模式,提高可靠性,可用性,通过增加集群节点,几乎是可以线性地增加 redis 分布式集群的吞吐能力和容量。
应用场景
1、作为缓存机制使用,既能够给用户提供快速的服务,还能为磁盘数据库提供防护堡垒。
2、限时应用场景,比如用户半个小时不做任何操作后就被系统自动登出,一个具有有效期限的验证码,一个具有有效期限的优惠券等等。
3、作为计数器,因为 redis 本身提供了原子递增或者原子递减的命令,所以不会存在数据不一致的问题。
4、高性能的消息/命令队列,因为 redis 有个List类型。
5、作为分布式锁,以 setnx 指令为核心的分布式锁实现。
6、实现排行榜,redis 有一个类型叫有序集合,底层是一个跳表结构,非常适用于排行榜应用,我们平时常看见排行榜只显示出前多少名的排行,不可能显示出所有的排行,因为没有人会用鼠标一直滑动地去看一个拥有成千上万名成员的排行榜,基本大家只会去看排名前多少的成员。
7、共同爱好、共同好友等等,可以用 redis 的集合(交、并、差等等)。