前言
Redis是一个开源的使用ANSIC语言编写、支持网络、可基于内存亦可持久化的日志型、Key-Value数据库,并提供多种语言的API。从年3月15日起,Redis的开发工作由VMware主持。从年5月开始,Redis的开发由Pivotal赞助。
redis是一个key-value存储系统。和Memcached类似,它支持存储的value类型相对更多,包括string(字符串)、list(链表)、set(集合)、zset(sortedset--有序集合)和hash(哈希类型)。这些数据类型都支持push/pop、add/remove及取交集并集和差集及更丰富的操作,而且这些操作都是原子性的。在此基础上,redis支持各种不同方式的排序。与memcached一样,为了保证效率,数据都是缓存在内存中。区别的是redis会周期性的把更新的数据写入磁盘或者把修改操作写入追加的记录文件,并且在此基础上实现了master-slave(主从)同步。
RedisRedis是一个高性能的key-value数据库。redis的出现,很大程度补偿了memcached这类key/value存储的不足,在部分场合可以对关系数据库起到很好的补充作用。它提供了Java,C/C++,C#,PHP,JavaScript,Perl,Object-C,Python,Ruby,Erlang等客户端,使用很方便。[1]
Redis支持主从同步。数据可以从主服务器向任意数量的从服务器上同步,从服务器可以是关联其他从服务器的主服务器。这使得Redis可执行单层树复制。存盘可以有意无意的对数据进行写操作。由于完全实现了发布/订阅机制,使得从数据库在任何地方同步树时,可订阅一个频道并接收主服务器完整的消息发布记录。同步对读取操作的可扩展性和数据冗余很有帮助。
接下来给大家介绍阿里P7总结出的两大技术文档+面试题和答案+视频:Redis核心原理与应用实践、Redis实战、面试题及答案技术文档,1.75GRedis学习视频,希望大家能够喜欢!
Redis核心原理与应用实践
本文档主要讲解笔者从实战中摸索总结的Redis最常用最核心知识点,但限于篇幅和精力,并没有涵盖Redis全部的内容知识点,比如Redis内置的lua脚本引擎就完全没有提到。之所以不讲,是因为在平时的工作中确实从来没有使用过,它就好比关系数据库的存储过程,虽然功能很强大,但是确实很少使用,而且也不易维护,所以就不推荐读者使用了。
对于很多小企业来说,本小册的很多内容都是用不上的,因为系统的并发量没有到一定的量级,这些高级功能根本没必要使用。不过机会总是留给那些有准备的孩子们,如果突然有一天流量涨上来了,Redis的这些稀有的高级功能势必能立即派上用场。
读者们肯定也注意到,小册所有的标题都有使用特定的成语来描述。这些成语不是随便写的,而是精确考量了成语的含义和技术点的相关性精心挑选出来的,相信读者在理解了每个小节的内容之后,肯定可以明白内容和成语含义的相关性。之所以要使用成语也是为了制造悬念,吸引读者探究为什么这个技术点会和这个成语相关。老钱的语文水平不高,在选择成语时,反复使用了搜索引擎。如果读者找到了更贴切的成语,一定要及时在评论区留言告知。如果被采纳,会考虑福利反馈。固好了,深入理解Redis的学习之旅正式开始。
Redis实战
本文档深入浅出地介绍了Redis的5种数据类型,并通过多个实用示例展示了Redis的用法。除此之外,书中还讲述了Redis的优化方法以及扩展方法,对于学习和使用Redis来说不可多得的参考文档。
本文档共由三个部分组成。第一部分对Redis进行了介绍,说明了Redis的基本使用方法、它拥有的5种数据结构以及操作这5种数据结构的命令,并讲解了如何使用Redis去构建文章聚合网站、cookie、购物车、网页缓存、数据库行缓存等--系列程序。第二部分对Redis命令进行了更详细的介绍,并展示了如何使用Redis去构建更为复杂的辅助工具和应用程序,并在最后展示了如何使用Redis去构建一个简单的社交网站。第三部分对Redis用户经常会遇到的一些问题进行了介绍,讲解了降低Redis内存占用的方法、扩展Redis性能的方法以及使用Lua语言进行脚本编程的方法。
本文档既涵盖了命令用法等人门主题,也包含了复制、集群、性能扩展等深人主题,所以无论是Redis新手还是有一定经验的Redis使用者,应该都能从本书中获益。本文档面向具有基本数据库概念的读者,读者无需预先了解任何NoSQL知识,也不必具备任何Redis使用经验。
Redis面试题及答案
1、什么是Redis?简述它的优缺点?
2、Redis与memcached相比有哪些优势?
3、Redis支持哪几种数据类型?
4、Redis主要消耗什么物理资源?
5、Redis有哪几种数据淘汰策略?
6、Redis官方为什么不提供Windows版本?
7、一个字符串类型的值能存储最大容量是多少?
8、为什么Redis需要把所有数据放到内存中?
9、Redis集群方案应该怎么做?都有哪些方案?
10、Redis集群方案什么情况下会导致整个集群不可用?
11、MySQL里有w数据,redis中只存20w的数据,如何保证redis中的数据都是热点数据?
12、Redis有哪些适合的场景?
13、Redis支持的Java客户端都有哪些?官方推荐用哪个?
14、Redis和Redisson有什么关系?
15、Jedis与Redisson对比有什么优缺点?
16、说说Redis哈希槽的概念?
17、Redis集群的主从复制模型是怎样的?
18、Redis集群会有写操作丢失吗?为什么?
19、Redis集群之间是如何复制的?
20、Redis集群最大节点个数是多少?
21、Redis集群如何选择数据库?
22、Redis中的管道有什么用?
23、怎么理解Redis事务?
24、Redis事务相关的命令有哪几个?
25、Rediskey的过期时间和永久有效分别怎么设置?
26、Redis如何做内存优化?
27、Redis回收进程如何工作的?
28.加锁机制
29.锁互斥机制
30.watchdog自动延期机制
31.可重入加锁机制
32.释放锁机制
33.上述Redis分布式锁的缺点
34.使用过Redis分布式锁么,它是怎么实现的?
35.使用过Redis做异步队列么,你是怎么用的?有什么缺点?
36.什么是缓存穿透?如何避免?什么是缓存雪崩?何如避免?
37.redis和memcached什么区别?为什么高并发下有时单线程的redis比多线程的memcached效率要高?
38.redis主从复制如何实现的?redis的集群模式如何实现?redis的key是如何寻址的?
39.使用redis如何设计分布式锁?说一下实现思路?使用zk可以吗?如何实现?这两种有什么区别?
40.知道redis的持久化吗?底层如何实现的?有什么优点缺点?
41.redis过期策略都有哪些?LRU算法知道吗?写一下java代码实现?
42.缓存穿透、缓存击穿、缓存雪崩解决方案?
43.在选择缓存时,什么时候选择redis,什么时候选择memcached
44.缓存与数据库不一致怎么办
45.主从数据库不一致如何解决46.Redis常见的性能问题和解决方案
47.Redis的数据淘汰策略有哪些
48.Redis当中有哪些数据结构
49.假如Redis里面有1亿个key,其中有10w个key是以某个固定的已知的前缀开头的,如果将它们全部找出来?
50.使用Redis做过异步队列吗,是如何实现的
51.Redis如何实现延时队列
Redis核心原理与应用实践、Redis实战、面试题及答案技术文档
需要的小伙伴,转发