您的位置:js12345金沙官网登入 > 网络编程 > redis整合Spring集群搭建及业务中的使用【js12345金

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

2020-01-23 10:10

安装依赖

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

[root@centos7-1 ~]# yum -y install gcc openssl-devel libyaml-devel libffi-devel readline-devel zlib-devel gdbm-devel ncurses-devel gcc-c++ automake autoconf

 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

安装 redis

3.Redis五种数据类型

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

[root@centos7-1 ~]# wget [root@centos7-1 ~]# tar xvf redis-3.0.6.tar.gz[root@centos7-1 ~]# cd redis-3.0.6/[root@centos7-1 redis-3.0.6]# make MALLOC=libc[root@centos7-1 redis-3.0.6]# make install

 4.Redis的持久化方案

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

启动 server

 5.Redis集群的搭建

通过命令 redis-server 来启动 redis server。通过下面的输出信息可以看出这次启动并没有指定配置文件,可以使用命令 redis-server /path/to/redis.conf 来指定具体的配置文件启动。

  5.1 redis-cluster架构图

js12345金沙官网登入 1

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

[root@centos7-1 redis-3.0.6]# redis-server 4435:C 25 Jan 11:40:48.816 # Warning: no config file specified, using the default config. In order to specify a config file use redis-server /path/to/redis.conf4435:M 25 Jan 11:40:48.817 * Increased maximum number of open files to 10032 (it was originally set to 1024). _._ _.-``__ ''-._ _.-`` `. `_. ''-._ Redis 3.0.6 (00000000/0) 64 bit .-`` .-```. ```/ _.,_ ''-._ ( ' , .-` | `, ) Running in standalone mode |`-._`-...-` __...-.``-._|'` _.-'| Port: 6379 | `-._ `._ / _.-' | PID: 4435 `-._ `-._ `-./ _.-' _.-' |`-._`-._ `-.__.-' _.-'_.-'| | `-._`-._ _.-'_.-' |  `-._ `-._`-.__.-'_.-' _.-' |`-._`-._ `-.__.-' _.-'_.-'| | `-._`-._ _.-'_.-' | `-._ `-._`-.__.-'_.-' _.-' `-._ `-.__.-' _.-' `-._ _.-' `-.__.-' 4435:M 25 Jan 11:40:48.817 # WARNING: The TCP backlog setting of 511 cannot be enforced because /proc/sys/net/core/somaxconn is set to the lower value of 128.4435:M 25 Jan 11:40:48.817 # Server started, Redis version 3.0.64435:M 25 Jan 11:40:48.817 # WARNING overcommit_memory is set to 0! Background save may fail under low memory condition. To fix this issue add 'vm.overcommit_memory = 1' to /etc/sysctl.conf and then reboot or run the command 'sysctl vm.overcommit_memory=1' for this to take effect.4435:M 25 Jan 11:40:48.817 # WARNING you have Transparent Huge Pages (THP) support enabled in your kernel. This will create latency and memory usage issues with Redis. To fix this issue run the command 'echo never  /sys/kernel/mm/transparent_hugepage/enabled' as root, and add it to your /etc/rc.local in order to retain the setting after a reboot. Redis must be restarted after THP is disabled.4435:M 25 Jan 11:40:48.817 * DB loaded from disk: 0.000 seconds4435:M 25 Jan 11:40:48.817 * The server is now ready to accept connections on port 6379

  5.2redis-cluster投票:容错

js12345金沙官网登入 2

 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个

js12345金沙官网登入 3

 

到此,单节点的 Redis server已经安装完毕,以下进入配置和安装集群的过程。

  5.3. Redis集群的搭建

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

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

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

创建集群中的6个节点

    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前的注释去掉(表示是支持集群)。

js12345金沙官网登入 4

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

js12345金沙官网登入 5

脚本内容如下

.js12345金沙官网登入 6

 

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

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

 js12345金沙官网登入 7

 

js12345金沙官网登入 8js12345金沙官网登入 9

./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搭建集群命令

 运行命令后

js12345金沙官网登入 10

 

js12345金沙官网登入 11

集群相关的配置文件主要修改 redis.conf 中的一下几个地方,因为都部署在一个服务器上,每个节点的端口不同。

6. 集群的使用方法

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

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

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

[root@centos7-1 redis-3.0.6]$ vi redis.conf #修改以下地方port 7000cluster-enabled yescluster-config-file nodes-7000.confcluster-node-timeout 5000appendonly yes

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

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

每个节点的配置文件

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

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

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

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

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

5、返回结果。

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

INDEX_CONTENT分类

cid hash的字段

 JsonUtils.objectToJson(tbContents) cid对应的值

创建6个文件夹,分别表示一个 redis 节点,文件夹使用 redis 节点的端口号命名,文件里存放每个节点的配置文件。

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

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

 

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

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

 

[root@centos7-1 redis-3.0.6]# mkdir /usr/local/redis-cluster[root@centos7-1 redis-3.0.6]# cd /usr/local/redis-cluster[root@centos7-1 redis-cluster]# mkdir 7000 7001 7002 7003 7004 7005

拷贝 redis.conf 拷贝到6个文件夹中

[root@centos7-1 redis-cluster]# cp ~/redis-3.0.6/redis.conf 7000[root@centos7-1 redis-cluster]# cp ~/redis-3.0.6/redis.conf 7001[root@centos7-1 redis-cluster]# cp ~/redis-3.0.6/redis.conf 7002[root@centos7-1 redis-cluster]# cp ~/redis-3.0.6/redis.conf 7003[root@centos7-1 redis-cluster]# cp ~/redis-3.0.6/redis.conf 7004[root@centos7-1 redis-cluster]# cp ~/redis-3.0.6/redis.conf 7005

并修改每个配置中的内容为各自节点的端口,注意 portcluster-config-file 的值必须唯一。

分别启动每个节点

[root@centos7-1 ~]# redis-server /usr/local/redis-cluster/7000/redis.conf[root@centos7-1 ~]# redis-server /usr/local/redis-cluster/7001/redis.conf[root@centos7-1 ~]# redis-server /usr/local/redis-cluster/7002/redis.conf[root@centos7-1 ~]# redis-server /usr/local/redis-cluster/7003/redis.conf[root@centos7-1 ~]# redis-server /usr/local/redis-cluster/7004/redis.conf[root@centos7-1 ~]# redis-server /usr/local/redis-cluster/7005/redis.conf

启动完成后查看进程

本文由js12345金沙官网登入发布于网络编程,转载请注明出处:redis整合Spring集群搭建及业务中的使用【js12345金

关键词: