Redis 安装部署介绍

Redis 安装部署

•单点
•主从复制Replication
•高可用 Sentinel
•集群Cluster

Redis Standalone

1:官方站点: https://redis.io下载最新版或者最新stable版
2:解压源码并进入目录
3: 直接make
4:安装到指定的目录, make PREFIX=/usr/local/redis install
5:启动 redis-server
Redis 安装部署介绍_第1张图片

Redis 主从复制

 主从复制Replication

  1. 一个redis服务可以有多个该服务的复制品,这个Redis服务称为Master,其他复制品称为Slaves
  2. 只要网络连接正常,Master会一直将自己的数据更新同步给Slaves,保持主从同步
  3. 只有Master可以执行写命令,Slaves只能执行读命令
     主从复制问题
  4. Master下线,无法执行写请求
  5. 以上过程都是手工完成,无法自动Failover操作

Redis Sentinel

 高可用Sentinel

  1. 监控( Monitoring):Sentinel 会不断地检查主服务器和从服务器是否运作正常。
  2. 提醒( Notification):当被监控的某个 Redis 服务器出现问题时,Sentinel 可以通过 API 向管理员
    或者其他应用程序发送通知。
    3.自动故障迁移( Automatic failover):当主服务器不能正常工作时,Sentinel 会开始一次自动故障迁移
    操作,它会将失效主服务器的其中一个从服务器升级为新的主服务器,并让失效主服务器的其他从服务器
    改为复制新的主服务器;当客户端试图连接失效的主服务器时,集群也会向客户端返回新主服务器的地址,
    使得集群可以使用新主服务器代替失效服务器。
    Redis 安装部署介绍_第2张图片

Redis Sentinel

 sentinel.conf 配置如下所示:

sentinel monitor mymaster 127.0.0.1 6379 1
sentinel down-after-milliseconds mymaster 60000
sentinel failover-timeout mymaster 180000
sentinel parallel-syncs mymaster 1

 启动 Sentinel
启动方式一:redis-sentinel /path/to/sentinel.conf
启动方式二: redis-server /path/to/sentinel.conf –sentine
Redis 安装部署介绍_第3张图片

方式二: redis-server /path/to/sentinel.conf –sentinel

Redis Cluster 集群
 Redis集群
Redis提供的分布式数据库方案,集群通过分片来进行数据共享,并提供复制和故障转移功能。一个
Redis集群通常由多个节点(node)组成,在刚开始的时候,每个节点都是相互独立的,它们都处于一个
只包含自己的集群当中,要组建一个真正可工作的集群,必须将这些独立的节点连接起来,构成一个包含
多个节点的集群。

  1. 3.0 version 支持
  2. Redis集群无中心节点
  3. 由多个Redis服务器组成的分布式网络服务集群
  4. 每个Redis服务器被称为节点Node,节点之间会相互通信( gossip)协议,两两相连
    Redis 安装部署介绍_第4张图片

Redis Cluster 集群原理

 Redis集群分片

  1. redis集群中整个数据库被分为 16384个槽位Slot,所有key都会是这些slot中的一个,key的槽位计算公式
    为slot_number=crc16(key)%16384,其中crc16为16位的循环冗余效验和函数
  2. 集群中的每个主节点都可以处理0个至16383个槽,当16384个槽位都有某个节点在负责处理时,集群
    进入上线状态,并开始处理客户端发送的命令请求
     举例
  3. 三个主节点7000,7001,7002平均分配16384个slot槽位
  4. 节点7000指派的槽位为0至5460
  5. 节点7001指派的槽位为5461至10922
  6. 节点7002指派的槽位为10923至16383

Redis Cluster 集群

 redis.conf集群配置文件示例

port 7000
cluster-enabled yes
cluster-config-file nodes.conf
cluster-node-timeout 5000
appendonly yes

 集群演示
下载redis 解压到cluster-test
cd cluster-test
mkdir 7000 7001 7002 7003 7004 7005
在7000 至 7005 中,各创建一个 redis.conf 文件,内容可以使用上面的示例配置文件,将配置中的端口号
从 7000 改为与文件夹名字相同端口。cluster-test 文件夹,然后用以下命令启动每个redis:
…/redis-server .7000/redis.conf
 创建集群命令
./redis-trib.rb create --replicas 1 127.0.0.1:7000 127.0.0.1:7001 127.0.0.1:7002 127.0.0.1:7003
127.0.0.1:7004 127.0.0.1:7005

Java 客户端

Redssion
特点:操作最简单,功能最丰富,Redis智能客户端,支持分布式集合,分布式锁,三方框架整合等。底层采
用的是Netty 框架。支持Redis 2.8以上版本,支持Java1.6+以上版本。使用比其他redis客户端效率高。
https://github.com/redisson/redisson/
Jedis
特点: Jedis是Redis的Java实现的客户端,其API提供了比较全面的Redis命令的支持。与Spring集成。作为其
官方推荐的Java版客户端jedis也非常强大和稳定,支持事务、管道及有jedis自身实现的分布式。
https://github.com/xetorthio/jedis

Redis客户端

Redis Desktop Manager
特点:C++ 编写,响应迅速,性能好。但不支持数据
库备份与恢复
https://github.com/uglide/RedisDesktopManager

Redis Studio
特点:又一个C++编写的redis管理工具,仅支持
windows平台,支持xp操作系统
https://github.com/cinience/RedisStudi

Redis 流量监控

 CacheCloud (https://github.com/sohutv/cachecloud)
提供一个Redis云管理平台:实现多种类型(Redis Standalone、
Redis Sentinel、Redis Cluster)自动部署、解决Redis实例碎片化现
象、提供完善统计、监控、运维功能、减少开发人员的运维成本和
误操作,提高机器的利用率,提供灵活的伸缩性,提供方便的接入
客户端
 功能

  1. 监控统计: 提供了机器、应用、实例下各个维度数据的监控和统计界面。
  2. 一键开启: Redis Standalone、Redis Sentinel、Redis Cluster三种类型的应用,无需
    手动配置初始化。
  3. Failover: : 支持哨兵,集群的高可用模式。
  4. 伸缩: 提供完善的垂直和水平在线伸缩功能。
  5. 完善运维: 提供自动运维和简化运维操作功能,避免纯手工运维出错。
  6. 方便的客户端:方便快捷的客户端接入。
  7. 元数据管理: 提供机器、应用、实例、用户信息管理。
  8. 流程化: 提供申请,运维,伸缩,修改等完善的处理流程

Redis 应用场景

会话缓存 (Session Cache) ) 最常用的情景是会话缓存。用Redis缓存会话比其他存储(如Memcached)
的优势在于:Redis提供持久化。当维护一个不是严格要求一致性的缓存时,如果用户的购物车信息全部
丢失,大部分人都会不高兴的。
存 对象缓存 做Java项目的时候,通常会了加快查询效率,减少和数据库的连接次数,我们都会在代码中加
入缓存功能。Redis的高效缓存给我们解决了难题
锁 分布式锁 在互联网产品应用中,有些场景需要加锁处理,比如:秒杀,全局递增ID,分布式批处理。
Redis提供一些命令SETNX,GETSET,可以方便实现分布式锁机制。
队列 Reids 在内存存储引擎领域的一大优点是提供 list 和 set 操作,这使得Redis能作为一个很好的消息
队列平台来使用。
排行榜/器 计数器 Redis在内存中对数字进行递增或递减的操作实现的非常好。集合(Set)和有序集合
(Sorted Set)也使得我们在执行这些操作的时候变的非常简单,Redis只是正好提供了这两种数据结构。
所以,我们要从排序集合中获取到排名最靠前的10个用户–我们称之为“user_scores”

Redis 行业应用

Twitter 使用 Redis 来储存用户时间线(user timeline)。
StackOverflow 使用 Redis 来进行缓存和消息分发。
Github 使用 Redis 作为持久化的键值对数据库,并使用 Resque 来实现消息队列。
新浪微博 使 用Redis 来实现计数器、 反向索引、 排行榜、消 息 队列, 并 储存用户关 系 。
知乎 使用 Redis 来进行计数、缓存、消息分发和任务调度
Pinterest 使用 Redis 来构建关注模型(follow model)和兴趣图谱(interest graph)。
Flickr 使用 Redis 来构建队列。

Redis常用命令

(1)字符串

SET name "Tom"
GET name
SET counter 1000
INCR counter
DECR counter
APPEND name "Jack"

(2)散列类型

HMSET car name "volvo" color "black" price
20
HMGET car name
HEXISTS car name
HDEL car price

(3)列表类型

LPUSH lists redis
LPUSH lists mogodb
RPUSH lists mysql
LPOP lists
RPOP lists
LRANGE lists 0 10

(4)集合类型

SADD letters a
SADD letters a b c
SREM letters c d
SMEMBERS letters
SADD setA 1 2 3
SDIFF setA setB

(5)有序集合

ZADD tutorials 1 redis 2 mongodb 3 mysql 3 mysql
ZRANGE tutorials 0 10 WITHSCORES

(6)事务

MULTI
INCR likes
INCR visitors
EXEC

(7)生存时间

SET session uuid11
EXPIRE session 20
TTL session

(8)排序

LPUSH mylist 4 2 6 1 7 3
SORT mylist
LPUSH mylistalpha a c e d c a
SORT mylistalpha ALPHA

(9)消息通知

PUBLISH redisChat "Redis is a great caching technique"
SUBSCRIBE redisChat
PUBLISH redisChat "Learn redis by tutorials point"

Redis 安装部署介绍_第5张图片
Redis 安装部署介绍_第6张图片
Redis 安装部署介绍_第7张图片
Redis 安装部署介绍_第8张图片
Redis 安装部署介绍_第9张图片
Redis 安装部署介绍_第10张图片

你可能感兴趣的:(数据库,redis,服务器,数据库)