Redis是一个开源的使用ANSI C语言编写、支持网络、可基于内存亦可持久化的日志型、Key-Value数据库,并提供多种语言的API。从2010年3月15日起,Redis的开发工作由VMware主持。
sudo apt-get install gcc
tar -zxvf redis-3.2.0.tar.gz
cd redis-3.2.0
make
make install PREFIX=/home/muxiaocao/redis-3.2.0
cd /home/muxiaocao/redis-3.2.0
cp redis.conf bin
vim redis.conf
bind 192.168.3.111
./redis-server redis.conf
./redis-server redis.conf
ps aux|grep redis
Redis Desktop Manager是redis的图像界面
集群中应该至少有三个节点,每个节点有一备份节点。需要6台服务器。
所以搭建伪分布式,需要6个redis实例。
步骤1:
第一步:创建6个redis实例指定端口从7001到7006
![]()
第二步:修改redis.conf 打开Cluster-enable yes前面的注释。
![]()
![]()
第三步:需要一个ruby脚本。在redis源码文件夹下的src目录下。redis-trib.rb第四步:把redis-trib.rb文件复制到到redis-cluster目录下。
第五步:执行ruby脚本之前,需要安装ruby环境:
1. sudo apt-get install ruby 2.2.2
查看ruby版本:ruby -version
如果小于2.2.2,则需要手动下载较高版本步骤如下:
1. wget http://cache.ruby-lang.org/pub/ruby/2.2/ruby-2.2.2.tar.gz
2. tar -xvf ruby-2.2.2.tar.gz
3. ./configure --prefix=/home/muxiaocao/redis/ruby-2.2.2
4. make && make install
5. gem install redis
2. sudo apt-get install gems
3. gem install rubygems-update
4. 安装redis-trib.rb运行依赖的ruby的包。sudo gem install redis-3.2.1.gem
第六步:启动所有的redis实例
1. 创建脚本vim start-all.sh写入:
2. 赋予运行权限chmod +x start-all.sh
3. 执行./start-all
第七步:使用redis-trib.rb创建集群。
./redis-trib.rb create –replicas 1 192.168.3.111:7001 192.168.3.111:7002 192.168.3.111:7003 192.168.3.111:7004 192.168.3.111:7005 192.168.3.111:7006
![]()
注意:如果出现以下情况,是需要重新安装redis
![]()
成功结果:
![]()
在看可视化界面:
如果想了解redis的更多命令,可点击这里
Redis的java客户端需要使用Jedis,我们可以使用maven依赖:
<dependency>
<groupId>redis.clientsgroupId>
<artifactId>jedisartifactId>
<version>${jedis.version}version>
dependency>
// 单机版测试
@Test
public void testJedisSingle() throws Exception {
Jedis jedis = new Jedis("192.168.3.111", 6379);
jedis.set("test", "hello jedis");
String result = jedis.get("test");
System.out.println(result);
jedis.close();
}
// 使用连接池
@Test
public void testJedisPool() throws Exception {
// 创建一个连接池对象
// 在系统中应该是单例的
JedisPool jedisPool = new JedisPool("192.168.3.111", 6379);
Jedis jedis = jedisPool.getResource();
String string = jedis.get("test");
System.out.println(string);
// 使用完jedis必须关闭
jedis.close();
// 当系统关闭时,关闭连接池
jedisPool.close();
}
// 集群版测试
@Test
public void testJedisCluster() throws Exception {
Set nodes = new HashSet<>();
nodes.add(new HostAndPort("192.168.3.111", 7001));
nodes.add(new HostAndPort("192.168.3.111", 7002));
nodes.add(new HostAndPort("192.168.3.111", 7003));
nodes.add(new HostAndPort("192.168.3.111", 7004));
nodes.add(new HostAndPort("192.168.3.111", 7005));
nodes.add(new HostAndPort("192.168.3.111", 7006));
// 在系统中是单例的
JedisCluster jedisCluster = new JedisCluster(nodes);
jedisCluster.set("name", "张三");
jedisCluster.set("value", "1000");
String name = jedisCluster.get("name");
String value = jedisCluster.get("value");
System.out.println(name + "," + value);
// 在系统关闭时关闭
jedisCluster.close();
}
第一步:定义接口
package com.taotao.rest.service;
/**
* Description:Dubbo缓存服务提供者接口
* JedisClient.java
* 个人主页:www.muxiaocao.cn/me
* @author 木小草
* @date: 2016年6月4日 下午8:15:07
* @version: 1.0
*/
public interface JedisClientService {
public String set(String key,String value);
public String get(String key);
public Long hset(String key,String item,String value);
public String hget(String key,String item);
public Long incr(String key);
public Long decr(String key);
// 设置有效时间
public Long expire(String key,int second);
// 返回有效时间:-1:永久保存 -2:已经失效 大于0:有效时间(单位s)
public Long ttl(String key);
}
-- ======================Redis缓存=========================== -->
-- 配置redis客户端单机版 -->
id="jedisPool" class="redis.clients.jedis.JedisPool">
name="host" value="192.168.3.111">
name="port" value="6379">
-- 配置redis客户端实现类 -->
id="jedisClientService" class="com.taotao.rest.service.impl.JedisClientSingle"/>
-- 配置redis客户端集群版 -->
--
<set>
class="redis.clients.jedis.HostAndPort">
name="host" value="192.168.3.111">
name="port" value="7001">
class="redis.clients.jedis.HostAndPort">
name="host" value="192.168.3.111">
name="port" value="7002">
class="redis.clients.jedis.HostAndPort">
name="host" value="192.168.3.111">
name="port" value="7003">
class="redis.clients.jedis.HostAndPort">
name="host" value="192.168.3.111">
name="port" value="7004">
class="redis.clients.jedis.HostAndPort">
name="host" value="192.168.3.111">
name="port" value="7005">
class="redis.clients.jedis.HostAndPort">
name="host" value="192.168.3.111">
name="port" value="7006">
set>
id="jedisClientService" class="com.taotao.rest.service.impl.JedisClientCluster"/> -->
另外:密码登录详解
Redis命令参考
注意:转载请标明,转自itboy-木小草。
尊重原创,尊重技术。