Redis是什么?
redis是一种基于键值对(key-value)的NoSQL数据库。Redis会将所有数据都存放在内存中,所以它的读写性能非常惊人。不仅如此,Redis还可以将内存的数据利用快照和日志的形式保存到硬盘上,这样在发生类似断电或者机器故障的时候,内存中的数据不会“丢失”。Redis还提供了键过期、发布订阅、事务、流水线、Lua脚本等附加功能。
启动并进入Redis客户端:
#启动Redis cd /export/servers/redis-3.2.8 src/redis-server redis.conf #连接并进入Redis客户端 cd /export/servers/redis-3.2.8 src/redis-cli -h node01
Redis的对Key和对几种数据类型的操作请参阅以下网址:
https://www.runoob.com/redis/redis-intro.html
缓存击穿,是指用户请求的Key的数据不在Redis的缓存当中,最终只能去后端的数据库中查找请求的数据。当这种请求特别多是会对后端数据库造成很大的压力。产生的原因可能是我们设置的Key不合理,没有将所有的热点Key缓存到Redis当中来。我们可以使用Redis计数器,每次查询数据的Key都可以通过计数器来记录,判断哪些数据是热点Key数据,保存到Redis里面去。
缓存雪崩就是我们的缓存是在同一时间创建(如天猫双十一),然后设置的缓存时间是一置的, 这样到特定的时间就会出现缓存雪崩的情况, 此时若是有当访问量的操作就会造成数据库服务器的压力过大。
仅使用一台服务器,直接安装一个Redis就可以了。通过持久化功能,Redis保证了即使在服务器重启的情况下也不会损失(或少量损失)数据,因为持久化会把内存中数据保存到硬盘上,重启会从硬盘上加载数据。 但是由于数据是存储在一台服务器上的,如果这台服务器出现硬盘故障等问题,也会导致数据丢失。
Replication(主从复制)架构避免了单点故障导致数据丢失的问题,通过执行SLAVEOF命令或者设置slaveof选项,让一个服务器去复制(replicate)另一个服务器中的数据,我们称被复制的服务器为主服务器(master),而对主服务器进行复制的服务器则被称为从服务器(slave)。主从复制架构的主节点(master)支持读写操作,从节点(slave)只支持读取操作,主从复制架构不具备自动容错和恢复功能,主机从机的宕机都会导致前端部分读写请求失败,需要等待机器重启或者手动切换前端的IP才能恢复。
Sentinel(哨兵)是Redis 的高可用性解决方案:由一个或多个Sentinel 实例 组成的Sentinel 系统可以监视任意多个主服务器,以及这些主服务器属下的所有从服务器,并在被监视的主服务器进入下线状态时,自动将下线主服务器属下的某个从服务器升级为新的主服务器。
一台主节点,多台从节点,但是启动哨兵监控程序,可以监控主节点宕机问题,实现主节点故障自动转移。
以上三种模式都没有实现Redis的横向扩展的问题。
Redis集群专门用于解决redis横向扩展的问题。数据可以在多个Redis节点间自动分配的。Redis集群并不支持同时处理多个键的 Redis 命令,因为这需要在多个节点间移动数据,会降低redis集群的性能,在高负载的情况下可能会导致不可预料的错误。Redis集群在分区期间也能提供一定程度的可用性,即当某些节点发生故障或无法通信时,集群能够继续运行。
Redis 集群的优势:
原文:https://www.cnblogs.com/dzlj/p/12210353.html