redis使用教程pdf(redis使用教程pdf分享)

1. 什么是Redis?

redis使用教程pdf(redis使用教程pdf分享)Redis是一款缓存中间件非关系型数据库,Redis全称为:Remote Dictionary Server(远程数据服务),该软件是使用C语言编写,Redis是一个key-value存储系统,它支持丰富的数据类型,如:string、list、set、zset、hash。

2. Redis有什么特点?

Redis是以纯内存操作,所以读写数据的效率极高,远远超过数据库。以设置和获取一个256字节字符串为例,它的读取速度可高达110000次/s,写速度高达81000次/s。

Redis跟memcache不同的是,储存在Redis中的数据是持久化的,断电或重启后,数据也不会丢失。因为Redis的存储分为内存存储、磁盘存储和log文件三部分,重启后,Redis可以从磁盘重新将数据加载到内存中,这些可以通过配置文件对其进行配置,正是因为这样,Redis才能实现持久化。

Redis支持主从模式,可以配置集群,这样更有利于支撑起大型的项目,这也是Redis的一大特性。

3. Redis应用场景,它能做什么?

现在很多编程语言都支持Redis,因为Redis读写数据快,所以在服务器中常用来存储一些需要频繁用的数据,这样可以大大节省系统直接读取磁盘来获得数据的I/O开销,更重要的是可以极大提升速度。

比如大型网站来举个例子,比如a网站首页一天有200万人访问,其中有一个模块为推荐新闻。要是直接从数据库查询,那么一天就要多消耗200万次数据库请求。前面已经说过,Redis支持丰富的数据类型,所以这完全可以用Redis来完成,将这种热点数据存到Redis(内存)中,要用的时候,直接从内存取,极大的提高了速度和节约了服务器的开销。

1. 使用Redis有什么好处?

(1) 读写速度快,因为数据存在内存中,近似于HashMap,HashMap的优势就是查找和操作的时间复杂度都是O(2) 支持丰富数据类型,支持string,list,set,zset,hash(3) 支持事务的操作,操作都是原子性,所谓的原子性就是对数据的更改要么全部执行,要么全部不执行(4) 有着丰富的缓存特性:可用于缓存消息,按key设置过期时间,过期后将会自动删除

2. redis对比memcached具有哪些优势?

(1) memcached所有的值均是简单的字符串,redis作为其替代者,支持更为丰富的数据类型(2) redis的读写速度比memcached快很多(3) redis可以持久化其数据

3. redis常见性能问题和解决方案有:

(1) Master最好不要做任何持久化工作,如RDB内存快照和AOF日志文件(2) 如果数据比较重要,某个Slave开启AOF备份数据,策略设置为每秒同步一次(3) 为了主从复制的速度和连接的稳定性,Master和Slave最好在同一个局域网内(4) 尽量避免在压力很大的主库上增加从库(5) 主从复制不要用图状结构,用单向链表结构更为稳定,即:Master <~Slave1 <~Slave2 <~Slave3

这样的结构方便解决单点故障问题,实现了Slave对Master的替换。假如Master挂了,可以立刻启用Slave1做Master,其他均可不变。

4. 如果mysql里有3000w数据,redis中只存30w的数据,如何保证redis中的数据都是热点数据?redis的内存数据集大小上升到一定大小的时候,就会实施自己设置的数据淘汰策略。

redis提供了6种数据存储淘汰策略:

voltile-lru:从已设置过期时间的数据集中挑选,最近最少使用的数据淘汰volatile-ttl:从已设置过期时间的数据集中挑选,将要过期的数据淘汰volatile-random:从已设置过期时间的数据集中任意选择数据淘汰allkeys-lru:从数据集中挑选最近最少使用的数据淘汰allkeys-random:从数据集中任意选择数据淘汰no-enviction:禁止驱逐数据

5. memcache与redis的区别有哪些?

(1)、存储方式的不同memecache把数据全部存在内存块中,断电后会挂掉,数据不能超过内存大小。redis有一部份存在硬盘上,这样能保证数据的持久性,又能保证数据不丢失。(2)、数据类型的支持不同memcache对数据类型支持相对简单。redis有复杂的数据类型,以及丰富的数据类型结构。(3)、使用底层的原理不同它们之间底层实现方式,以及与客户端之间通信的应用协议不一样。redis直接自己构建了VM机制 ,因为一般的系统调用系统函数的话,会浪费较多的时间去移动和请求。(4)、value值不同大小redis最大可以达到1GB,而memcache只有1MB

6. Redis中常见的性能问题有哪些?怎么解决的?

1).Master写内存快照,save命令调度rdbSave函数,会阻塞主线程的工作,当快照比较大时对性能影响是非常大的,会间断性暂停服务,所以Master最好不要写内存快照。2).Master AOF持久化,如果不重写AOF文件,这个持久化方式对性能的影响是最小的,但是AOF文件会不断增大,AOF文件过大会影响Master重启的恢复速度。Master最好不要做任何持久化工作,包括内存快照和AOF日志文件,特别是不要启用内存快照做持久化,如果数据比较关键,某个Slave开启AOF备份数据,策略为每秒同步一次。3).Master调用BGREWRITEAOF重写AOF文件,AOF在重写的时候会占大量的CPU和内存资源,导致服务load过高,出现短暂服务暂停现象。4). Redis主从复制的性能瓶颈问题,为了主从复制的速度和连接的稳定性,Slave和Master最好在同一个局域网中。

7, Redis适合的场景有哪些?

Redis最适合所有数据in-momory的场景,虽然Redis也提供持久化功能,但实际更多的是一个disk-backed的功能,跟传统意义上的持久化有比较大的差别,可能大家就会有疑问,似乎Redis更像一个加强版的Memcached,那么何时使用Memcached,什么时候使用Redis吗?

如果简单地比较Redis与Memcached的区别,大多数都会得到以下观点:

1 、Redis不仅仅支持简单的k/v类型的数据,同时还提供list,set,zset,hash等数据结构的存储。2 、Redis支持数据的备份,即master-slave模式的数据备份。3 、Redis支持数据的持久化,可以将内存中的数据保持在磁盘中,重启的时候可以再次加载进行使用。

1)、会话的缓存

最常用的一种使用Redis的情景是会话缓存(session cache)。用Redis缓存会话比其他存储(如Memcached)的优势在于:Redis提供持久化。当维护一个不是严格要求一致性的缓存时,如果用户的购物车信息全部丢失,会给用户体验程度极差,这样,他们还会用吗?

随着 Redis 这些年的改进,很容易找到怎么恰当的使用Redis来缓存会话的文档。甚至广为人知的商业平台Magento也提供Redis的插件。

2)、全页的缓存

除基本的会话token之外,Redis还提供很简便的FPC平台。回到一致性问题,即使重启了Redis实例,因为有磁盘的持久化,用户也不会看到页面加载速度的下降,这是一个极大改进,近似PHP本地FPC。

3)、队列的使用

Reids在内存存储引擎领域的一大优点是提供 list 和 set 操作,这使得Redis能作为一个很好的消息队列平台来使用。Redis作为队列使用的操作,就近似于本地程序语言(如Python)对 list 的 push/pop 操作。

4)、排行榜/计数器的使用

Redis在内存中对数字进行递增或递减的操作实现的非常好。集合(Set)和有序集合(Sorted Set)也使得我们在执行这些操作的时候变的非常简单,Redis只是正好提供了这两种数据结构。所以,我们要从排序集合中获取到排名最靠前的10个用户–我们称之为“user_scores”,我们只需要像下面一样执行即可:

当然,这是假定你是根据你用户的分数做递增的排序。如果你想返回用户及用户的分数,你需要这样执行:

ZRANGE user_scores 0 10 WITHSCORES

5)、发布/订阅的使用

最后是Redis的发布/订阅功能。发布/订阅的使用场景确实非常多。我看见很多人们在社交网络连接中使用,还可作为基于发布/订阅的脚本触发器,甚至用Redis的发布/订阅功能来建立聊天系统!

发表评论

登录后才能评论