redis整合Spring集群搭建及业务中的使用

本文涉及的产品
云数据库 Redis 版,社区版 2GB
推荐场景:
搭建游戏排行榜
简介: 1.redis安装  Redis是c语言开发的。  安装redis需要c语言的编译环境。如果没有gcc需要在线安装。yum install gcc-c++  安装步骤:  第一步:redis的源码包上传到linux系统。

1.redis安装

  Redis是c语言开发的。

  安装redis需要c语言的编译环境。如果没有gcc需要在线安装。yum install gcc-c++

  安装步骤:

  第一步:redis的源码包上传到linux系统。

  第二步:解压缩redis。

  第三步:编译。进入redis源码目录。make

  第四步:安装。make install PREFIX=/usr/local/redis

  PREFIX参数指定redis的安装目录。一般软件安装到/usr目录下

详细安装步骤,以及后台运行的配置 点此 linux上安装redis

 2.Redis-cli 客户端连接redis

找到安装redis的文件夹中的bin目录.执行以下命令

[root@localhost bin]# ./redis-cli

默认连接localhost运行在6379端口的redis服务。

[root@localhost bin]# ./redis-cli -h 192.168.25.153 -p 6379

-h:连接的服务器的地址

-p:服务的端口号

 

关闭redis:[root@localhost bin]# ./redis-cli shutdown

3.Redis五种数据类型

redis五种数据类型及命令操作 点此 reids基本命令

 4.Redis的持久化方案

redis持久化方法点此 redis持久化方案

 5.Redis集群的搭建

  5.1 redis-cluster架构图

redis的每个节点上都保存有其他节点的信息,并且相互通信,客户端连接集群时,随机连接

  5.2redis-cluster投票:容错

 1. redis每个节点之间每隔一段时间就会相互的ping一下,对方收到ping后会回复pong,如上图,如果黄色的节点ping红色的节点时,红色节点没给回复,黄色节点就会以为红色节点已经挂了,接着其他节点去ping红色节点,如果多数节点没有收到回信,则判断红色节点已挂,投票容错就这样.

 2. 因为redis的投票容错机制,所以redis的集群至少应该有三个及以上的节点

 3.Redis 集群中内置了 16384 个哈希槽,当需要在 Redis 集群中放置一个 key-value 时,redis 先对 key 使用 crc16 算法算出一个结果,然后把结果对 16384 求余数,这样每个 key 都会对应一个编号在 0-16383 之间的哈希槽,redis 会根据节点数量大致均等的将哈希槽映射到不同的节点如下图,所以理论上redis的节点可以有16384个

 

  5.3. Redis集群的搭建

    Redis集群中至少应该有三个节点。要保证集群的高可用,需要每个节点有一个备份机。 redis主从复制 如果使用ruby搭建redis集群,从节点不用手动配置,ruby会自动分配

    Redis集群至少需要6台服务器(3台是主节点,3台是对应的备份节点)。

    搭建伪分布式。可以使用一台虚拟机运行6个redis实例。需要修改redis的端口号7001-7006

    5.3.1.    集群搭建环境

    

  1、使用ruby脚本搭建集群。需要ruby的运行环境。

    安装ruby

    yum install ruby

    yum install rubygems

 

  2、安装ruby脚本运行使用的包。

    [root@localhost ~]# gem install redis-3.0.0.gem

    Successfully installed redis-3.0.0

    1 gem installed

    Installing ri documentation for redis-3.0.0...

    Installing RDoc documentation for redis-3.0.0...

    [root@localhost ~]#

     在redis解压文件夹的src目录下有一个redis-trib.rb文件之后需要用

    [root@localhost ~]# cd redis-3.0.0/src

    [root@localhost src]# ll *.rb

    -rwxrwxr-x. 1 root root 48141 Apr  1  2015 redis-trib.rb

    5.3.1.    搭建步骤

    需要6台redis服务器。搭建伪分布式。

    需要6个redis实例。

    需要运行在不同的端口7001-7006

 

    第一步:创建6个redis实例,将我们之前安装的redis中的bin目录拷贝六份,并改好名称.修改每个实例运行的端口。需要修改redis.conf配置文件。配置文件中还需要把cluster-enabled yes前的注释去掉(表示是支持集群)。

  第二步:启动每个redis实例。这里可以创建一个sh脚本,运行脚本来启动六个redis

脚本内容如下

.

 

  第三步:使用ruby脚本搭建集群。将redis解压文件夹的src目录下有一个redis-trib.rb文件复制到我们放redis集群的文件夹中,使用以下命令

--replicas 1 表示每个节点有一个备份机

 

 

./redis-trib.rb create --replicas 1 192.168.25.153:7001 192.168.25.153:7002 192.168.25.153:7003 192.168.25.153:7004 192.168.25.153:7005 192.168.25.153:7006
ruby搭建集群命令

 运行命令后

 

6. 集群的使用方法

redis连接集群(单机版的不用加参数 -c)

[root@localhost redis-cluster]# redis01/redis-cli -p 7002 -c
-c:代表连接的是redis集群

redis连接redis单机版和集群版,点此 redis连接redis单机版和集群版

7.业务中使用redis进行缓存

redis不适用于大数据,适用于高并发的程序

1.查询内容列表时添加缓存。

1、查询数据库之前先查询缓存。

2、查询到结果,直接响应结果。

3、查询不到,缓存中没有需要查询数据库。

4、把查询结果添加到缓存中。

5、返回结果。

一般都使用hash数据类型,使用hash时,可以将保存的内容进行归类

INDEX_CONTENT分类
cid hash的字段
 JsonUtils.objectToJson(tbContents) cid对应的值

jedisClient.hset(INDEX_CONTENT,cid+"", JsonUtils.objectToJson(tbContents));
2.缓存同步

我们在对数据库进行增删改的时候缓存中的数据没有变化,显然这种情况下,下一次查询出来的数据肯定错误,所以需要对缓存进行同步

 

对内容信息做增删改操作后只需要把对应缓存删除即可。

可以根据我们hash的字段来删除对应的缓存。

 

相关实践学习
基于Redis实现在线游戏积分排行榜
本场景将介绍如何基于Redis数据库实现在线游戏中的游戏玩家积分排行榜功能。
云数据库 Redis 版使用教程
云数据库Redis版是兼容Redis协议标准的、提供持久化的内存数据库服务,基于高可靠双机热备架构及可无缝扩展的集群架构,满足高读写性能场景及容量需弹性变配的业务需求。 产品详情:https://www.aliyun.com/product/kvstore     ------------------------------------------------------------------------- 阿里云数据库体验:数据库上云实战 开发者云会免费提供一台带自建MySQL的源数据库 ECS 实例和一台目标数据库 RDS实例。跟着指引,您可以一步步实现将ECS自建数据库迁移到目标数据库RDS。 点击下方链接,领取免费ECS&RDS资源,30分钟完成数据库上云实战!https://developer.aliyun.com/adc/scenario/51eefbd1894e42f6bb9acacadd3f9121?spm=a2c6h.13788135.J_3257954370.9.4ba85f24utseFl
相关文章
|
12天前
|
NoSQL Linux Redis
06- 你们使用Redis是单点还是集群 ? 哪种集群 ?
**Redis配置:** 使用哨兵集群,结构为1主2从,加上3个哨兵节点,总计分布在3台Linux服务器上,提供高可用性。
22 0
|
21天前
|
负载均衡 监控 NoSQL
Redis的集群方案有哪些?
Redis集群包括主从复制(基础,手动故障恢复)、哨兵模式(自动高可用)和Redis Cluster(官方分布式解决方案,自动分片和容错)。此外,还有如Codis、Redisson和Twemproxy等第三方工具用于代理和负载均衡。选择方案需考虑应用场景、数据规模和并发需求。
22 2
|
26天前
|
NoSQL Redis
Redis集群(六):集群常用命令及说明
Redis集群(六):集群常用命令及说明
17 0
|
21天前
|
NoSQL Java 测试技术
面试官:如何搭建Redis集群?
**Redis Cluster** 是从 Redis 3.0 开始引入的集群解决方案,它分散数据以减少对单个主节点的依赖,提升读写性能。16384 个槽位分配给节点,客户端通过槽位信息直接路由请求。集群是无代理、去中心化的,多数命令直接由节点处理,保持高性能。通过 `create-cluster` 工具快速搭建集群,但适用于测试环境。在生产环境,需手动配置文件,启动节点,然后使用 `redis-cli --cluster create` 分配槽位和从节点。集群动态添加删除节点、数据重新分片及故障转移涉及复杂操作,包括主从切换和槽位迁移。
31 0
面试官:如何搭建Redis集群?
|
25天前
|
存储 缓存 NoSQL
【Redis深度专题】「核心技术提升」探究Redis服务启动的过程机制的技术原理和流程分析的指南(集群功能分析)(一)
【Redis深度专题】「核心技术提升」探究Redis服务启动的过程机制的技术原理和流程分析的指南(集群功能分析)
45 0
|
1月前
|
NoSQL Redis Docker
使用Docker搭建一个“一主两从”的 Redis 集群(超详细步骤)
使用Docker搭建一个“一主两从”的 Redis 集群(超详细步骤)
61 0
|
1月前
|
缓存 NoSQL Java
spring cache整合redis实现springboot项目中的缓存功能
spring cache整合redis实现springboot项目中的缓存功能
45 1
|
1月前
|
存储 NoSQL Java
[Redis]——Spring整合Redis(SpringDataRedis)
[Redis]——Spring整合Redis(SpringDataRedis)
|
1月前
|
监控 NoSQL Java
Spring Boot集成Redis启动失败【Caused by: java.lang.ClassNotFoundException: org.apache.commons.pool2.impl.G】
Spring Boot集成Redis启动失败【Caused by: java.lang.ClassNotFoundException: org.apache.commons.pool2.impl.G】
|
1月前
|
存储 监控 NoSQL
Redis 架构深入:主从复制、哨兵到集群
大家好,我是小康,今天我们来聊下 Redis 的几种架构模式,包括主从复制、哨兵和集群模式。
Redis 架构深入:主从复制、哨兵到集群

热门文章

最新文章