Redis简单介绍:
redis是一种支持Key-Value等多种数据结构的存储系统。可用于会话缓存,消息队列(比如支付3,活动排行榜或计数)、事件发布或订阅,高速队列、商品列表评论列表等场景。该数据库使用ANSI C语言编写,支持网络,提供字符串,哈希,列表,队列,集合结构直接存取,基于内存,可持久化。
与memcached的区别
Redis是一个高级key-value数据库,跟memcached的区别在于:
- Redis数据可以持久化;(两者都是内存数据库)
- 支持的数据类型丰富;(包括字符串、hash、列表(List)、集合(Set)以及zset(sorted set –有序集合));故而支持更丰富的数据操作
- Memcached使用简单的key-value存储,内存效率不如Redis采用的Hash结构做key-value存储(采用组合式的压缩,内存利用率较高)。
- Redis数据可以通过AOF恢复,支持数据的备份,即master-slave主从模式的数据备份。memcached挂掉之后数据不可恢复;
- 由于Redis只使用单核,而Memcached可以使用多核,所以平均每一个核上Redis在存储小数据时比Memcached性能更高。而在100k以上的数据时,Memcached性能要高于Redis,虽然Redis最近也在存储大数据的性能上进行优化,但是比起Memcached,还是稍有逊色。
Redis和Mencached的区别可以见该博客:https://blog.youkuaiyun.com/u011489043/article/details/78922390
Redis的好处
- 支持事务;
- 持久化存储,并且因为数据存在内存中,类似于HashMap,HashMap的优势就是查找和操作的时间复杂度都是O(1);
- 支持丰富的存储数据类型;
- 丰富的特性:可用于缓存,消息,按key设置过期时间,过期后将会自动删除
Redis与Memcached的选择
终极策略: 使用Redis的String类型做的事,都可以用Memcached替换,以此换取更好的性能提升; 除此以外,优先考虑Redis;
Redis实现数据持久化的两种实现方式:
快照:RDB:指定的时间间隔内保存数据快照
仅附加文件:AOF:先把命令追加到操作日志的尾部,保存所有的历史操作(append only file)
二者的区别
RDB持久化是指在指定的时间间隔内将内存中的数据集快照写入磁盘,实际操作过程是fork一个子进程,先将数据集写入临时文件,写入成功后,再替换之前的文件,用二进制压缩存储。
rdb是Redis DataBase缩写 功能核心函数rdbSave(生成RDB文件)和rdbLoad(从文件加载内存)
AOF持久化以日志的形式记录服务器所处理的每一个写、删除操作,查询操作不会记录,以文本的方式记录,可以打开文件看到详细的操作记录。
常用配置
RDB持久化配置
Redis会将数据集的快照dump到dump.rdb文件中。此外,我们也可以通过配置文件来修改Redis服务器dump快照的频率,在打开6379.conf文件之后,我们搜索save,可以看到下面的配置信息:
AOF持久化配置
在Redis的配置文件中存在三种同步方式,它们分别是:
appendfsync always #每次有数据修改发生时都会写入AOF文件。
appendfsync everysec #每秒钟同步一次,该策略为AOF的缺省策略。
appendfsync no #从不同步。高效但是数据不会被持久化。
https://www.cnblogs.com/AndyAo/p/8135980.html
其他Redis面试问题:https://blog.youkuaiyun.com/qq_34337272/article/details/80012284
https://blog.youkuaiyun.com/qq_35923749/article/details/85240071