文档章节

redis集群安装以及jedis的实现

OSC屠夫
 OSC屠夫
发布于 2015/08/06 10:35
字数 713
阅读 1039
收藏 18

1.redis集群提供的功能

1.数据自动切分到多个节点

2.具有冗余,部分节点挂了之后继续可以进行

这里建了6个节点,6个节点之间可以相互ping,端口分别是7000,7001,7002,7003,7004,7005

2.下载安装解压编译redis

下载redis

cd /usr/local/
wget http://download.redis.io/releases/redis-3.0.3.tar.gz

解压编译redis

tar -zxvf redis-3.0.3.tar.gz                       
cd redis-3.0.3
make && make install

3.创建redis 节点并且配置redis

将redis的信息放到data目录,并且创建集群节点文件夹

mkdir /data/redis/cluster -p
cd /data/redis/cluster
mkdir 7000 7001 7002 7003 7004 7005
cp /usr/local/redis-3.0.3/redis.conf ./7000/
vim ./7000/redis.conf

修改redis.conf

daemonize yes
pidfile /var/run/redis/redis-7000.pid
port 7000
logfile ./7001/redis.log
dir ./7000/

开启cluster

cluster-enabled yes
cluster-config-file nodes.conf

将集群其他节点配置文件cp并且修改

cp ./7000/redis.conf ./7001/redis.conf
cp ./7000/redis.conf ./7002/redis.conf
cp ./7000/redis.conf ./7003/redis.conf
cp ./7000/redis.conf ./7004/redis.conf
cp ./7000/redis.conf ./7005/redis.conf

4.启动redis

启动redis

redis-server ./7000/redis.conf
redis-server ./7001/redis.conf
redis-server ./7002/redis.conf
redis-server ./7003/redis.conf
redis-server ./7004/redis.conf
redis-server ./7005/redis.conf

查看进程是否存在

ps -ef | grep redis

5.创建redis集群

下载ruby和rubygem

yum install ruby rubygems -y

安装gem-redis,安装gem-redis需要翻墙,有需要的可以到fast_redis中项目附件里下载,在上传上去

gem install -l redis-3.2.1.gem

创建集群

cp redis-trib.rb /usr/local/bin/redis-trib
redis-trib 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

6.集群测试

1.设置key:msg,value:hello

redis-cli -c -p 7000
127.0.0.1:7000> set msg "hello"
OK
127.0.0.1:7001> get msg
hello

2.查看集群信息

redis-cli -c -p 7000 cluster nodes
aa2380c9acb8e52bf7c98948728d19c45f7c4bb7 127.0.0.1:7001 slave 6aaa67aa6783c797297dacd537757347f58b89c0 0 1438830197669 7 connected
93fa026cedc8487d90916cce858f0189de17bc57 127.0.0.1:7005 master - 0 1438830200675 8 connected 10923-16383
44451f7f75b482d434798e801a9bab3536f513c6 127.0.0.1:7002 slave 93fa026cedc8487d90916cce858f0189de17bc57 0 1438830198671 8 connected
7997ecc7cd9e3bc0dfc3ddcad05ac6ca997b87ad 127.0.0.1:7003 slave 6aa6b557722f44acaf5eac71e8b51b8571de8131 0 1438830199674 4 connected
6aa6b557722f44acaf5eac71e8b51b8571de8131 127.0.0.1:7000 myself,master - 0 0 1 connected 0-5460
6aaa67aa6783c797297dacd537757347f58b89c0 127.0.0.1:7004 master - 0 1438830201678 7 connected 5461-10922

可以看到 7000,7004,7005 作为master,其他的salve kill了7000的进

ps -ef | grep redis
kill 30740

链接7001的客户端,查是否可以获取到值

redis-cli -c -p 7001
127.0.0.1:7001> keys

7.redis安装异常

异常:

make[2]: cc: Command not found

解决:因为没有安装gcc

yum install gcc-c++

异常:

couldn't execute "tclsh8.5": no such file or directory

解决:没有安装tcl

yum install -y tcl。

异常:

-bash: redis-trib: command not found

解决

cp redis-trib.rb /usr/local/bin/redis-trib

8.redis cluster 客户端的实现

具体代码可以到fast_redis中查看 项目中暂时有两种显示,先就这样后期做封装处理

  • 设置redis信息包括ip,端口信息

  • 设置redis集群信息

  • 设置线程池信息

  • 获取redis

    
    @Test
      public void testCluster(){
          JedisShardInfo jedis700 = new JedisShardInfo("**",7000,"redis-7000");
          JedisShardInfo jedis701 = new JedisShardInfo("**",7001,"redis-7001");
          .....
    
          List<JedisShardInfo> shardInfoList = Lists.newArrayList();
          shardInfoList.add(jedis700);
          shardInfoList.add(jedis701);
          ......
    
          ShardedJedisPool sharedJedisPool = new ShardedJedisPool(new JedisPoolConfig(),shardInfoList);
    
          ShardedJedis shardedJedis = sharedJedisPool.getResource();
    
          shardedJedis.set("msg","hello");
          shardedJedis.get("msg");
      }
    
    
    

**
欢迎加入193826252讨论
实现代码地址https://git.oschina.net/xForMe/fast_redis.git
**

© 著作权归作者所有

OSC屠夫
粉丝 11
博文 33
码字总数 8631
作品 0
浦东
程序员
私信 提问
加载中

评论(4)

OSC屠夫
OSC屠夫 博主

引用来自“开源中国操盘师”的评论

redis.clients.jedis.exceptions.JedisMovedDataException: MOVED 5798 127.0.0.1:7001 怎么回事
好久之前的了~所以兄弟靠你自己了
panda大侠
panda大侠
redis.clients.jedis.exceptions.JedisMovedDataException: MOVED 5798 127.0.0.1:7001 怎么回事
OSC屠夫
OSC屠夫 博主

引用来自“chuckpu”的评论

支持咋样 集群版本
测试过,挺好的!一台挂了,自动切换到另一台
chuckpu
chuckpu
支持咋样 集群版本
使用jedis连接单机和集群redis的两种方式

Redis服务器的部署方式可分为单机和集群的方式,使用Jedis的对应访问接口也相应不用。如何使用Jedis操作两种不同部署方式的Redis数据,以及在web工程里如何快速的切换两种不同的访问方式,是...

jimmywu911
2016/12/02
1K
3
Redis从单机到集群,一步步教你环境部署以及使用

Redis作为缓存系统来说还是很有价值的,在大数据方向里,也是需要有缓存系统的。一般可以考虑tachyon或者redis,由于redis安装以及使用更简单,所以还是优先考虑了它。那么在一些场景下为了保...

青夜之衫
2017/12/04
0
0
godis v0.0.10 发布,Go 语言的 redis 客户端开发包

godis godis是一个golang实现的redis客户端,参考jedis实现. godis实现了几乎所有的redis命令,包括单机命令,集群命令,管道命令和事物命令等. 如果你用过jedis,你就能非常容易地上手godis,因为...

piaohao
07/01
1K
15
redis客户端jedis&spring-data-redis源码赏析

背景 本文主要对当下开源流行的redis客户端jedis和spring-data-redis的部分核心源码进行剖析,记录一下怎么去实现一个redis的java客户端以及在使用redis集群时客户端的操作需要注意的要点。 ...

菜蚜
2018/08/08
260
0
redis主从及集群搭建

redis主从复制 概述 1、Redis的复制功能是支持多个数据库之间的数据同步。一类是主数据库(master)一类是从数据库(slave),主数据库可以进行读写操作,当发生写操作的时候自动将数据同步到...

sjfbjs
2017/03/08
0
0

没有更多内容

加载失败,请刷新页面

加载更多

利用CSS禁止手机长按出现气泡: 复制、选择等功能

可以用 * ,也可作用于一个div div{  -webkit-touch-callout:none;  /*系统默认菜单被禁用*/  -webkit-user-select:none; /*webkit浏览器*/  -khtml-user-select:none; /*早期浏览...

蓝小驴
56分钟前
9
0
前端的一些雕虫小技,从100%和滚动条说起

1、100%和滚动条 当我们在css中把html和body同时设为100%时,会出现滚动条 html, body { width: 100%; height: 100%; } 原因是html和b...

wphmoon
今天
8
0
电力区块链应用案例【2019】

随着区块链技术的日益普及,出现了大量创业企业尝试使用区块链技术来解决能源与电力行业中存在的问题。在本文中,我们将介绍其中的三个能源区块链项目。 能源行业以价格不透明著称:消费者很...

汇智网教程
今天
12
0
聊聊rocketmq的adjustThreadPoolNumsThreshold

序 本文主要研究一下rocketmq的adjustThreadPoolNumsThreshold DefaultMQPushConsumer rocketmq-client-4.5.2-sources.jar!/org/apache/rocketmq/client/consumer/DefaultMQPushConsumer.ja......

go4it
今天
10
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部