codis 使用

1:Jedis与Redisson对比

2.1. 概况对比

Jedis是Redis的Java实现的客户端,其API提供了比较全面的Redis命令的支持;Redisson实现了分布式和可扩展的Java数据结构,和Jedis相比,功能较为简单。
Redisson的宗旨是促进使用者对Redis的关注分离,从而让使用者能够将精力更集中地放在处理业务逻辑上。可以认为是jedis的补充,不能替换jedis。

2.2.可伸缩性

Jedis中的方法调用是比较底层的暴露的Redis的API,也即Jedis中的Java方法基本和Redis的API保持着一致,了解Redis的API,也就能熟练的使用Jedis。
而Redisson中的方法则是进行比较高的抽象,每个方法调用可能进行了一个或多个Redis方法调用。
2.3. 编程模型

Jedis使用阻塞的I/O,且其方法调用都是同步的,程序流需要等到sockets处理完I/O才能执行,不支持异步。Jedis客户端实例不是线程安全的,所以需要通过连接池来使用Jedis。

Redisson使用非阻塞的I/O和基于Netty框架的事件驱动的通信层,其方法调用是异步的。Redisson的API是线程安全的,所以可以操作单个Redisson连接来完成各种操作。

2.4. 数据结构

Jedis仅支持基本的数据类型如:String、Hash、List、Set、Sorted Set。

Redisson不仅提供了一系列的分布式Java常用对象,不支持字符串存储,Redisson的实现类中只支持集合操作,不能对普通字符做操作。
不支持很多redis特性,比如排序,事务,管道,集群等
还提供了许多分布式服务,其中包括(BitSet, Set, Multimap, SortedSet, Map, List, Queue, BlockingQueue, Deque, BlockingDeque, Semaphore, Lock, AtomicLong, CountDownLatch)。
并且是线程安全的,在分布式开发中,Redisson可提供更便捷的方法。

 

2:代码实例

jedis单机使用方式
public static void main(String[] args) {
// 开启Jedis连接池
JedisPoolConfig jpc = new JedisPoolConfig();
jpc.setMaxTotal(50);
jpc.setMinIdle(10);
JedisPool jp = new JedisPool(jpc,"192.168.1.18",19000);

// 开启Jedis客户端
Jedis jedis = jp.getResource();

jedis.set("k1","v1");
System.out.println(jedis.get("k1"));

jedis.close();
}
jedis集群使用方式
public class JedisClusterTest {

public static void main(String[] args) throws IOException {

Set<HostAndPort> nodes = new HashSet<>();
HostAndPort hap = new HostAndPort("192.168.1.18",6379);
nodes.add(hap);

JedisCluster jedisCluster =
new JedisCluster(
nodes, 1000,
1000, 1,
new GenericObjectPoolConfig());


jedisCluster.set("k1","v1");
jedisCluster.get("k1");

jedisCluster.close();

}

}
Redisson使用方式
public class RedissonTest {

public static void main(String[] args) {

Config config = new Config();
config.setCodec(new org.redisson.client.codec.StringCodec());
config. useSingleServer().setAddress("192.168.1.18:19000");

RedissonClient redisson = Redisson.create(config);
RBucket<String> keyObject = redisson.getBucket("k2");

keyObject.set("v2");

System.out.println(keyObject.get());

redisson.shutdown();
}
}
3:codis能做什么

Codis介绍

  • Codis开发是专门解决分布式方案才诞生的
  • Codis是豌豆荚开发的分布式redis解决方案
  • 线上动态配置实现无限扩容,插槽分配和漂移
  • 单节点和集群操作对客户端透明
  • 线上可以在一定程序上达到一个资源漂移的效果

codis的强大之处服务端透明化,不需要关心多少集群,只需要关心第三方的proxy。

Codis的组成部分

命令命令作用
Codis DashboardCodis集群管理工具
Codis Proxy集群代理,代理多个Codis
Codis Server代替了窗台的redis-Server
Codis Group组的概念,可以让集群出现更多的用法
Codis Admin集群管理的命令行工具
Codis FE图形界面处理

 

4:Codis集群的部署

1.环境的准备

yum install -y gcc glibc gcc-c++ make git
git clone https://github.com/CodisLabs/codis.git -b release3.2(去GIT上下载)
yum -y install  glibc-2.17 wget http://mirror.bit.edu.cn/apache/zookeeper/zookeeper-3.4.10/zookeeper-3.4.10.tar.gz 

2.需要的包

3.开始部署

安装go语言环境
1.常规操作
tar -xf go1.7.3.linux-amd64.tar.gz 
cd go

2.添加环境变量 vim /etc/profile export GOROOT=/root/codis/go export GOPATH=/root/codis/go_path/codis export PATH=PATH:JAVA_HOME/bin:$GOROOT/bin source /etc/profile 
 
安装zookeeper
tar -xf zookeeper-3.4.10.tar.gz 
cd /root/codis/zookeeper-3.4.10/conf/ mv zoo_sample.cfg zoo.cnf #配置文件有需要可以自己修改 
 
/root/codis/zookeeper-3.4.10/bin/zkServer.sh start
安装codis
tar -xf codis3.2.2-go1.8.5-linux.tar.gz cd codis3.2.2-go1.8.5-linux mkdir conf/redis/{redis_6381,reids_6382} 拷贝redis的配置文件到以上目录下 cp redis.cnf conf/redis/redis_6381/ #修改配置文件 vim redis.cnf #bind 127.0.0.1 #绑定注释 protected-mode no #安全模块不开启 daemonize yes #开启后台启动 pidfile /var/run/redis_6381.pid #设置进程号,不能相同 port 6381 #设置端口号,不能一样
分别执行
codis-server redis.cnf

开启两个服务

netstat -lnput |grep codis      #查看是否6381和6382端口开启
ps -ef |grep codis-server       #查看进程是否使用

配置集群的管理工具dashboard

./codis-dashboard --default-config |tee conf/dashboard.toml     #开启dashboadb生成配置文件

修改配置文件

vim conf/dashboard.toml
        coordinator_name = "zookeeper"
        coordinator_addr = "192.168.4.56:2181"      #不建议写IP地址,最好使用主机名称
        product_name = "codis-demo"
        admin_addr = "192.168.4.56:18080"
 
 

启动dashboard

mkdri ./logs
nohup ./codis-dashboard --config=conf/dashboard.toml --log=logs/dashboard.log --log-level=WARN --ncpu 2 & #指定配置文件位置,指定日志路径,指定日志级别,指定可以提供资源数 #nohup指定后台启动 tail -f /log/日志文件 
 

关于如何优雅的关闭dashboard

常规的情况下我们总是使用(Kill -9 进程号)强制结束,但是这样会导致整个node节点崩溃,
为了保障其他节点的正常运行我们需要的是优雅的关闭dashboard。

./codis-admin --dashboard="192.168.4.56:18080" --shutdown
开启proxy
./codis-proxy --default-config |tee conf/proxy.toml product_name = "codis-demo" #必须和我们的dashboard相同 vim conf/proxy.toml admin_addr = "192.168.4.56:11080" proxy_addr = "192.168.4.56:19000" jodis_name = "zookeeper" jodis_addr = "192.168.4.56:2181" 
 

启动但是没有启用

nohup ./codis-proxy --config=conf/proxy.toml --log=logs/proxy.log --log-level=WARN --ncpu 2 &

启用相互之间关联

./codis-admin --dashboard=192.168.4.56:18080 --create-proxy -x192.168.4.56:11080 cat logs/proxy.log #查看日志是否成功 

启动codis-fe图形界面管理

生成配置文件

./codis-admin --dashboard-list --zookeeper=192.168.4.56:2181 |tee conf/codis.json 

开启codis-fe

nohup ./codis-fe --ncpu=2 --log=logs/fe.log --log-level=WARN --dashboard-list=conf/codis.json --listen=192.168.4.56:10011 & cat log/codis-fe 

访问网站

 

 

 

 

5:替换成代理的地址即可访问操作redis

 

本文主要的目标是帮助大家完成Codis的集群搭建,让大家对Codis有一个相对直观的认知,话不多说,咱们开始把。

环境准备

codis3.2.2-go1.8.5-linux.tar.gz
glibc-2.17.tar.gz
go1.10.linux-amd64.tar.gz
zookeeper-3.4.11.tar.gz


go环境配置安装

由于Codis是使用GO语言编写的,所以想使用Codis需要先安装GO语言环境,安装过程如下:
将go1.10.linux-amd64.tar.gz解压至预期安装目录下,笔者习惯将内容放置在/opt/install下,截图如下:
图片描述
go的默认环境要求必须在/usr/local下,所以更改目录需要配置GOROOT环境变量
图片描述
图片描述
GOPATH的目录是用来标识GO的所有第三方软件放置位置,当然了,我们现在只有一个Codis


Zookeeper环境配置安装

Codis是一款强依赖于Zookeeper的软件,所以我们需要安装它。

  1. 首先我们将Zookeeper解压至预期目录,依照习惯,笔者将内容解压至/opt/install目录下
    图片描述
  2. 将Zookeeper的conf目录下zoo.sample.cfg修改为zoo.cfg文件
    图片描述
  3. 启动Zookeeper即可,启动命令在Zookeeper的bin目录下的zkServer.sh
    图片描述

Codis环境配置安装

将codis3.2.2-go1.8.5-linux.tar.gz解压至刚刚配置的GOPATH目录下,然后依次配置即可,以下都使用%codis_path%来表示codis的解压根目录哈

  1. Codis-server配置启动
    首先我们要明确,codis-server其实就相当于redis-server,也就是codis-server可以启动很多个redis实例
    • 创建配置文件存储目录[因为要创建两个Redis实例]
      mkdir -p %codis_path%/conf/redis/redis_6379
      mkdir -p %codis_path%/conf/redis/redis_6380
      图片描述
    • 拷贝redis的配置文件至相应目录下【ps:如果没有文件的话,可以去下载一个Redis,然后将配置文件拷贝出来,这里就不赘述了】
      图片描述
    • 修改Redis配置文件【PS:两个配置文件修改的内容基本一致,所以合并一起说】
      图片描述
      图片描述
      图片描述<p>
    • 启动codis-server
      %codis_path%/codis-server %codis_path%/conf/redis/redis_6379/redis.conf
      %codis_path%/codis-server %codis_path%/conf/redis/redis_6380/redis.conf<p>
      图片描述
  2. Codis-dashboard配置启动
    • 创建配置文件
      %codis_path%/codis-dashboard --default-config | tee %codis_path%/config/codis/dashboard.toml<p>
    • 修改配置文件
      图片描述
    • 启动dashboard命令:【注意替换自己的codis路径】
      nohup /opt/install/codis3.2.2-go1.8.5-linux/codis-dashboard \
      --ncpu=4 \
      --config=/opt/install/codis3.2.2-go1.8.5-linux/config/codis/dashboard.toml \
      --log=/opt/install/codis3.2.2-go1.8.5-linux/logs/dashboard.log \
      --log-level=WARN &<p>
      图片描述
      -- 关闭dashboard命令:
      /opt/install/codis3.2.2-go1.8.5-linux/codis-admin --dashboard=192.168.4.130:18080 --shutdown<p>
      图片描述<p>
  3. Codis-Proxy配置启动
    • 生成proxy配置文件【注意替换自己的codis路径】
      /opt/install/codis3.2.2-go1.8.5-linux/codis-proxy --default-config | tee /opt/install/codis3.2.2-go1.8.5-linux/config/codis/proxy.toml<p>
    • 修改proxy配置文件
      图片描述
      图片描述
    • 启动proxy
      nohup /opt/install/codis3.2.2-go1.8.5-linux/codis-proxy --ncpu=4 --config=/opt/install/codis3.2.2-go1.8.5-linux/config/codis/proxy.toml --log=/opt/install/codis3.2.2-go1.8.5-linux/logs/proxy.log --log-level=WARN &<p>
      图片描述
    • 关联proxy与dashboard
      /opt/install/codis3.2.2-go1.8.5-linux/codis-admin --dashboard=192.168.4.130:18080 --create-proxy -x192.168.4.130:11080<p>
      图片描述
  4. Codis-FE配置启动
    • 配置codis-fe
      /opt/install/codis3.2.2-go1.8.5-linux/codis-admin --dashboard-list --zookeeper=192.168.4.130:2181 | tee /opt/install/codis3.2.2-go1.8.5-linux/config/codis/codis.json<p>
      图片描述
    • 启动codis-fe
      nohup ./codis-fe --ncpu=2 --log=logs/fe.log --log-level=WARN --dashboard-list=config/codis/codis.json --listen=192.168.4.130:8080 & <p>
      图片描述
  5. Codis配置演示

至此整个Codis集群环境就已经搭建完成了,大家可以尽情使用页面简单的操作和查看Redis集群状态了。

最后还是要大家说以下,如果希望使用Java客户端连接Codis集群,只要连接proxy即可,我们之前配置的proxy地址为:192.168.4.130:19000.

 

 

转载于:https://www.cnblogs.com/zyy1688/p/10942469.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值