1. redis笔记一
  2. redis笔记二
  3. redis笔记三

1.配置:在原redis-sentinel文件夹中添加{8337,8338,8339,8340}文件夹,且复制原8333中的配置

在上述8333配置文件上添加集群相关配置

            #============================================自定义配置开始========================================
#Redis默认不是以守护进程的方式运行,可以通过该配置项修改,使用yes启用守护进程
daemonize yes
#当Redis以守护进程方式运行时,Redis默认会把pid写入/var/run/redis.pid文件,可以通过pidfile指定
Pidfile /var/run/redis_8340.pid
#指定Redis监听端口,默认端口为6379,作者在自己的一篇博文中解释了为什么选用6379作为默认端口,因为6379在手机按键上MERZ对应的号码,而MERZ取自意大利歌女Alessia Merz的名字
port 8340
#绑定的主机地址
bind 192.168.37.134
#日志记录方式,默认为标准输出,日志输出至指定日志文件
logfile "./redis-8340.log"
#指定本地数据库存放目录
dir "/usr/local/redis-sentinel/8340"
#当master服务设置了密码保护时,slave服务连接master的密码
masterauth admin.1231
#设置Redis连接密码,如果配置了连接密码,客户端在连接Redis时需要通过AUTH <password>命令提供密码,默认关闭
requirepass admin.1231
#指定是否在每次更新操作后进行日志记录,Redis在默认情况下是异步的把数据写入磁盘,如果不开启,可能会在断电时导致一段
时间内的数据丢失。
#因为 redis本身同步数据文件是按上面save条件来同步的,所以有的数据会在一段时间内只存在于内存中。默认为no(开启AOF持>久化)
appendonly yes
##集群开关,默认是不开启集群模式。
cluster-enabled yes
#集群配置文件的名称,每个节点都有一个集群相关的配置文件,持久化保存集群的信息。这个文件并不需要手动配置,这个配置>文件有Redis生成并更新,每个Redis集群节点需要一个单独的配置文件,请确保与实例运行的系统中配置文件名称不冲突
cluster-config-file nodes_8340.conf
#节点互连超时的阀值。集群节点超时毫秒数
cluster-node-timeout 10100
#============================================自定义配置结束========================================

2.全部启动

            [root@localhost redis-sentinel]# redis-server 8337/redis-8337.conf
[root@localhost redis-sentinel]# redis-server 8338/redis-8338.conf
[root@localhost redis-sentinel]# redis-server 8339/redis-8339.conf
[root@localhost redis-sentinel]# redis-server 8340/redis-8340.conf

查看结果

            [root@localhost redis-sentinel]# ps -ef | grep redis
root 44355 1 0 10:10 ? 00:00:00 redis-server 192.168.37.134:8337 [cluster]
root 44368 1 0 10:11 ? 00:00:00 redis-server 192.168.37.134:8338 [cluster]
root 44372 1 0 10:11 ? 00:00:00 redis-server 192.168.37.134:8339 [cluster]
root 44376 1 0 10:11 ? 00:00:00 redis-server 192.168.37.134:8340 [cluster]

3.连接且并指派槽(16484个)

(可以使用redis官方工具redis-trib.rb 来实现(集群加从服务器:Redis Cluster requires at least 3 master nodes,At least 6 nodes are required.This is not possible with 4 nodes and 1 replicas per node.))

1.连接组成集群

[root@localhost redis-sentinel]# redis-cli -c -h 192.168.37.134 -p 8337 -a admin.1231

#现在只有一个

192.168.37.134:8337> cluster nodes
1cc4d5687c9f75cfe6cda8a0f22120b9ef652ca5 :8337 myself,master - 0 0 0 connected

#和8338端口的连接起来

192.168.37.134:8337> cluster meet 192.168.37.134 8338
OK

同样依次连接8339,8340
此时redis集群时下线状态无法使用, CLUSTERDOWN Hash slot not served,槽未指派

2.指派槽

写个shell脚本,内容如下,内容是指将端口为8337的节点指派(0-4999)的槽,其他节点也以此分配,总共16484个分配至四个节点中

                #! /bin/bash
for((i=; i<; i++))
do
redis-cli -c -h 192.168.37.134 -p -a admin. cluster addslots $i
echo $i" 次添加完毕"
done

3.连接后查询可以看出cluster_slot16384个已全部ok

                192.168.37.134:> cluster info
cluster_state:ok
cluster_slots_assigned:
cluster_slots_ok:
cluster_slots_pfail:
cluster_slots_fail:
cluster_known_nodes:
cluster_size:
cluster_current_epoch:
cluster_my_epoch:
cluster_stats_messages_sent:
cluster_stats_messages_received:
#设置值时可以看到此值是放入8340节点的15495槽中
192.168.37.134:> set a b
-> Redirected to slot [] located at 192.168.37.134:
OK

redis的使用

    public static void main(String [] args) throws IOException {
//建立连接
Socket socket = new Socket("192.168.37.134", 6379);
OutputStream outputStream = socket.getOutputStream();
InputStream inputStream = socket.getInputStream(); /**
* resp协议:https://redis.io/topics/protocol
* 单行回复:回复的第一个字节是 "+",如表示成功 +OK
* 错误信息:回复的第一个字节是 "-",如表示错误 -ERR unknown command 'xxx'
* 整形数字:回复的第一个字节是 ":"
* 多行字符串:回复的第一个字节是 "$"
* 数组:回复的第一个字节是 "*"
*/ /* 遵循resp协议发送消息:
*3 数组包含3个元素,分别是SET、eat、I want to eat
$3 是一个字符串,且字符串长度为3
SET 字符串的内容
$3 是一个字符串,且字符串长度为3
aaa 字符串的内容
$6 是一个字符串,且字符串长度为13
bbbbbb 字符串的内容
* */
outputStream.write("*3".getBytes());
outputStream.write("\r\n".getBytes()); outputStream.write("$3".getBytes());
outputStream.write("\r\n".getBytes()); outputStream.write("SET".getBytes());
outputStream.write("\r\n".getBytes()); outputStream.write("$3".getBytes());
outputStream.write("\r\n".getBytes()); outputStream.write("aaa".getBytes());
outputStream.write("\r\n".getBytes()); outputStream.write("$6".getBytes());
outputStream.write("\r\n".getBytes()); outputStream.write("bbbbbb".getBytes());
outputStream.write("\r\n".getBytes()); outputStream.flush(); //接收消息
byte [] result = new byte[2048];
inputStream.read(result);
System.out.println("接收到响应:"+new String(result));
}

结果===>接收到响应:+OK

redis相关笔记(二.集群配置及使用)的更多相关文章

  1. Redis高可用之集群配置(六)

    0.Redis目录结构 1)Redis介绍及部署在CentOS7上(一) 2)Redis指令与数据结构(二) 3)Redis客户端连接以及持久化数据(三) 4)Redis高可用之主从复制实践(四) 5 ...

  2. Redis 3.0 Cluster集群配置

    Redis 3.0 Cluster集群配置 安装环境依赖 安装gcc:yum install gcc 安装zlib:yum install zib 安装ruby:yum install ruby 安装 ...

  3. consui(二)集群配置

    consul集群搭建:一.软件安装Linux 环境下载zip包然后直接解压,然后把解压的文mv consul /bin检验安装是否成功,查看版本[root@node1 ~]consul -vConsu ...

  4. Redis简单梳理及集群配置

    **REmote DIctionary Server(Redis) 是一个由Salvatore Sanfilippo写的key-value存储系统. Redis是一个开源的使用ANSI C语言编写.遵 ...

  5. redis 学习笔记-cluster集群搭建

    一.下载最新版redis 编译 目前最新版是3.0.7,下载地址:http://www.redis.io/download 编译很简单,一个make命令即可,不清楚的同学,可参考我之前的笔记: red ...

  6. Redis集合 安装 哨兵集群 配置

    redis相关 redis基础 redis发布订阅 redis持久化RDB与AOF redis不重启,切换RDB备份到AOF备份 redis安全配置 redis主从同步 redis哨兵集群 redis ...

  7. redis 学习笔记2(集群之哨兵模式的使用)

    redis3.0之前已经有了哨兵模式,3.0之后有了cluster(分片集群),官方不推荐使用!!主要原因是分片后单节点故障后需要实现手动分槽... 集群较为成熟的解决方案codis,公司使用的是哨兵 ...

  8. Linux系统下安装Redis和Redis集群配置

    Linux系统下安装Redis和Redis集群配置 一. 下载.安装.配置环境: 1.1.>官网下载地址: https://redis.io/download (本人下载的是3.2.8版本:re ...

  9. redis集群配置

    客户端分片 程序端实现 代理proxy,访问proxy,proxy指定redis保存位置. Twemproxy Redis cluster ,会造成一部分数据丢失,无中心化1.将数据自动切分(spli ...

随机推荐

  1. Gene Ontology (GO) 注释

    Gene Ontology (GO) 注释  Posted on 2017-06-11 |  In 生信 相似的基因在不同物种中,其功能往往保守的.显然,需要一个统一的术语用于描述这些跨物种的同源基因 ...

  2. vs code 使用技巧整理

    快捷键 Ctrl + Shift + F:在文件夹中搜索; Ctrl + Shift + P:命令面板; Ctrl + Shift + T:重新打开 关闭的编辑页面; Ctrl+Shift+PgUp/ ...

  3. centos7安装完成之后必要的配置

    一配置yum源 curl -o /etc/yum.repos.d/CentOS-Base.repo http://mirrors.aliyun.com/repo/Centos-7.repo wget ...

  4. win7搭建局域网时间服务器

    近日,本人想在局域网内通过普通的windows 7 PC搭建一台NTP服务器,可看似简单的配置却给我捣腾了了半天.初期,参考了互联网的上相关的配置文档,可网络设备就是死活不同步NTP服务器的时间.实在 ...

  5. js常用方法和检查是否有特殊字符串和倒序截取字符串

     js常用方法demo <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http:/ ...

  6. 【ERP知识】一个VMI(供应商管理库存)实现方案

    VMI,Vendor Managed Inventory,供应商管理库存 是指客户不采购或尽量少采购物料,而是由供应商保证该物料有充足的数量,在客户需要的时候能按时提供. 这样可以降低客户方的库存成本 ...

  7. Python 进阶_OOP 面向对象编程_组合与继承

    #目录 前言 组合 派生 通过继承来覆盖重载方法 最常用的重载场景实例方法的重载 从标准类中派生类方法的重载 前言 我们定义一个类是希望能够把类当成模块来使用,并把类嵌入到我们的应用代码中,与其他的数 ...

  8. 通过注册表修改IE的Internet选项

    Internet Explorer 安全区域设置存储在以下注册表子项下面: HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\I ...

  9. 判断是否是NaN

    if (isNaN(parseInt(x))) { alert("非数字"); } else{ alert("数字"); }

  10. POJ 1860 Currency Exchange (Bellman-Ford)

    题目链接:POJ 1860 Description Several currency exchange points are working in our city. Let us suppose t ...