1
MongoDB与Redis区别
①. 性能方面:redis要大于mongodb
②. 操作的便利性:
a. Mongodb支持丰富的数据表达,索引,最类似关系型数据库,支持的查询语言非常丰富
b. Redis数据结构方面丰富一点
③. 内存空间大小和数据量大小:
a. Mongodb适合大量数据的存储
④. 数据一致性
a. Redis事务支持比较弱
b. Mongodb不支持事务
⑤. 应用场景:
a. Redis用在数据量较小的操作和运算上
b. Mongodb:主要解决海量数据的访问效率问题
2
在项目中缓存用在哪里
在项目中经常会被查询,但不经常会被修改和删除的数据,比如:数据字典
3
Redis如何持久化
持久化就是将内存中的数据写入到硬盘中
①. RDB:是将数据写入到一个临时文件(dump.rdb),持久化结束之后,用这个临时文件替换上次持久化的文件,达到数据恢复。RDB是间隔一段时间进行持久化,如果持久化之间redis发生故障,会发生数据丢失,所以这种方式更适合数据要求不严谨的时候,默认开启的
AOF:是将执行过的指令记录下来,数据恢复时按照从前到后的顺序再将指令执行一遍,实现数据恢复。AOF的优点是可以保持更高的数据完整性,但是AOF文件比RDB文件大,且恢复速度慢,默认是关闭的
4
Redis的内存淘汰策略有那些
Redis的内存淘汰指的是用户存储的一些键可以被redis主动从实例中删除,从而产生读miss的情况,内存淘汰是为了更好的使用内存,用一定的缓存miss来换取内存的使用率。Redis提供的内存淘汰策略有:
①. noeviction:默认策略,不删除任意数据,但是内存不够时,会直接返回错误
②. Allkeys-lru:从数据集中(包括设置过期时间和未设置过期时间的数据集),优先移除最近未使用的key
③. Volatile-lru:在设置了过期时间的数据集中,优先移除最近未使用的key
④. Allkeys-random:从数据集中(包括设置过期时间和未设置过期时间的数据集),随机移除某个key
⑤. Volatile-random:在设置了过期时间的数据集中,随机移除某个key
Volatile-ttl:在设置了过期时间的数据集中,具有更早过期时间的key优先移除
5
redis有哪些数据类型
①. String(字符串):redis最基本的数据类型,一个key对应一个value,一个键最大能存储512MB
②. Hash(哈希):是一个键值对集合,特别适合用于存储对象
③. List(列表):存放多个字符串值,可以重复,按照插入顺序进行排序,也可以添加一个元素到列表的头部和尾部
④. Sets(集合):存放多个值,不可以重复,没有顺序
⑤. ZSet(有序集合):存放多个值,不可以重复,有顺序。不同的是每个元素都会关联一个double类型的分数,redis正是通过分数来为集合中的成员进行从小到大的排序
6
Redis一般用在那些场景
①. 缓存热数据使用,热数据就是在项目中经常会被查询,但不经常会被修改和删除的数据
②. 计数器,诸如统计点击数等应用
③. 队列
④. 位操作(大数据处理),比如统计QQ用户在线
⑤. 分布式锁和单线程机制
⑥. 最新列表
⑦. 排行榜,使用zadd添加有序集合
7
集群
至少需要3台缓存服务器(企业一般用6台服务器搭建集群(从主模式))