Ubuntu搭建Redis单机版和集群版以及java连接测试
环境准备:
搭建之前,需要先安装一个ubuntu的操作系统,我使用的是虚拟机中安装,ubuntu14.04版本。
redis-3.2.6版本
SSH远程连接。
执行命令: yum install gcc-c++
一、搭建redis单机版
进入到/usr/local 目录下, 有两种安装方式: 1)离线安装,2)在线安装
离线安装,则需要将redis的安装包通过ssh上传到ubuntu中。 官网上下载安装包(地址:https://redis.io/download)
2.在线安装: wget http://download.redis.io/releases/redis-3.2.6.tar.gz
3.解压压缩包 tar xzf redis-4.0.9.tar.gz
cd redis-4.0.9 进入到解压之后的文件夹中 (我使用的是root账户进入的,并且授予了权限,如果使用的是其他的账号进入,则 在命令的执行前面加上 sudo)
make //对源文件进行编译
cd src //进入到编译好的文件下面。
make install PREFIX=/usr/local/redis //redis安装到制定的usr/local/redis的文件夹下面,如果没有redis这个文件夹,会自动创建。 PREFIX参数指定redis的安装目录。一般软件安装到/usr目录下
4.启动redis单机版 : 1)进入到redis的安装目录下面的bin文件夹: cd /usr/local/redis/bin/
2)执行命令启动: ./redis-server
如果需要后台启动,则需要配置redsi的配置文件
3)把/usr/local/redis-3.2.6/redis.conf复制到/usr/local/redis/bin目录下
命令:cp /usr/localredis-3.2.6/redis.conf /usr/local/redis/bin/
4)修改配置 cd /usr/local/redis/bin/
vi redis.conf
5)修改其中的
将启动方式修改为后台启动,daemonize就是后台启动的意思,将no 修改为yes
6)保存并退出
7)重新启动redis, cd /usr/local/redis/bin/
./redis-server redis.conf
查看是否已经启动: ps aux|grep redis
表示redsi已经启动,并且默认的redis的运行端口是6379端口。
二、java连接Redis的单机版
<!--redis的依赖 -->
<dependency>
<groupId>redis.clients</groupId>
<artifactId>jedis</artifactId>
<version>2.9.0</version>
</dependency>
书写测试方式:
/**
* redis的连接和操作
* @author 8050
*
*/
public class RedisTest {
private Jedis jedis = new Jedis("192.168.129.128", 6379);
@Test
public void RedisFun1() {
String string = jedis.set("zzz", "11");
String value = jedis.get("zzz");
System.out.println(value);
jedis.incr("zzz");
System.out.println("自增之后的zzz的值为"+jedis.get("zzz"));
System.out.println("decr之后的值"+jedis.decr("zzz"));
jedis.append("zzz", "append");
System.out.println(jedis.get("zzz"));
jedis.del("zzz");
System.out.println("is exist?"+jedis.exists("zzz"));
jedis.close();
}
@Test
public void RedisList() {
//将数据存储到list数据中的时候,先存储在list中的数据,是在最左面,删除的话,删除的是最左面的。
jedis.lpush("list5", "1","2","3");
List<String> lrange = jedis.lrange("list5", 0, -1);
for (String string2 : lrange) {
System.out.println(string2);
}
String lpop = jedis.lpop("list5");
String rpop = jedis.rpop("list5");
System.out.println("删除的左边的元素是"+lpop+"删除的右边的元素是"+rpop);
jedis.del("list5");
System.out.println("is list5 exist?"+jedis.exists("list5"));
}
@Test
public void RedisSet() {
jedis.sadd("set1", "e", "a","b","c","d");
Set<String> smembers = jedis.smembers("set1");
System.out.println(smembers);
//弹出右边的一个
String lpop = jedis.spop("set1");
System.out.println(lpop);
}
@Test
public void hash() {
Map<String, String> map = new HashMap<>();
map.put("k1", "v1");
map.put("k2", "v2");
map.put("k3", "v3");
jedis.hmset("map1", map);
Map<String, String> map2 = jedis.hgetAll("map1");
System.out.println(map2.toString());
}
三、redis集群版的搭建
2.mkdir redis-cluster
3.cd redis-cluster
mkdir 7000 7001 7002 7003 7004 7005 //创建6个文件夹,作为redis的6的节点,3个服务,3个备份机。
搭建的redis的集群,因为选举投票的机制,所以必须为基数,并且为了保证高可用,搭建3个机器的redis集群,并且每个节 点,搭建一个备份机
4.cd /usr/local/redis/
复制redis中的bin文件夹到redis-cluster下的每个文件夹下
cp -r /usr/local/redis-cluster/7000/
cp -r /usr/local/redis-cluster/7001/
cp -r /usr/local/redis-cluster/7002/
cp -r /usr/local/redis-cluster/7003/
cp -r /usr/local/redis-cluster/7004/
cp -r /usr/local/redis-cluster/7005/
vim redis.conf
修改 redis01 的端口号,6个实例redis端口号分别为7001-7006
并打开cluster-enable前面的注释
cd /usr/local/redis-cluster/7000/bin
./redis-server redis.conf
./redis-server redis.conf
8.创建集群:
1)创建集群之前,需要安装ruby
sudo apt-get ruby
但是执行这个命令,有的可能会报错,
然后 cd /usr/local/redis-3.2.6/src
执行,提示ruby的版本太低。
[aaa@qq.com ~]# curl -sSL https://get.rvm.io | bash -s stable
[aaa@qq.com ~]# find / -name rvm -print
会显示
/usr/local/rvm
/usr/local/rvm/src/rvm
/usr/local/rvm/src/rvm/bin/rvm
/usr/local/rvm/src/rvm/lib/rvm
/usr/local/rvm/src/rvm/scripts/rvm
/usr/local/rvm/bin/rvm
/usr/local/rvm/lib/rvm
/usr/local/rvm/scripts/rvm
3.更新配置文件 : source /usr/local/rvm/scripts/rvm
4.查看rvm中的ruby版本
rvm list known
5.选择一个高于2.2.2的ruby版本安装
rvm install 2.4.4 我选择的是2.4.4
使用一个ruby版本 rvm use 2.4.4
并且设置为默认的版本 rvm use 2.4.4 --default
查看ruby的版本 是否是选择的 ruby --version
6.ruby就已经安装了 ,直接执行命令 gem install redis 安装redis
7. 然后就可以创建cluster了: 执行下面命令:
cd /usr/local/redis-cluster/
./redis-trib.rb create --replicas 1 192.168.129.128:7000 192.168.129.128:7001 192.168.129.128:7002 192.168.129.128:7003 192.168.129.128:7004 192.168.129.128:7005
然后查看是否启动集群: ps aux|grep redis 就可以查看后台的进程是否启动。
代表redis集群启动成功,6个节点都已经启动。
四、java连接Redis集群和spring整合
1.创建maven工程:
<dependencies>
<dependency>
<groupId>org.springframework.data</groupId>
<artifactId>spring-data-redis</artifactId>
<version>1.0.2.RELEASE</version>
</dependency>
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-test</artifactId>
<version>3.1.2.RELEASE</version>
<scope>test</scope>
</dependency>
<dependency>
<groupId>redis.clients</groupId>
<artifactId>jedis</artifactId>
<version>2.9.0</version>
</dependency>
<dependency>
<groupId>junit</groupId>
<artifactId>junit</artifactId>
<version>4.8.2</version>
<scope>test</scope>
</dependency>
</dependencies>
2.spring和redis的整合配置文件
<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="http://www.springframework.org/schema/beans"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xmlns:p="http://www.springframework.org/schema/p"
xmlns:aop="http://www.springframework.org/schema/aop"
xmlns:context="http://www.springframework.org/schema/context"
xmlns:jee="http://www.springframework.org/schema/jee"
xmlns:tx="http://www.springframework.org/schema/tx"
xsi:schemaLocation="http://www.springframework.org/schema/aop
http://www.springframework.org/schema/aop/spring-aop-4.0.xsd
http://www.springframework.org/schema/beans
http://www.springframework.org/schema/beans/spring-beans-4.0.xsd
http://www.springframework.org/schema/context
http://www.springframework.org/schema/context/spring-context-4.0.xsd
http://www.springframework.org/schema/jee
http://www.springframework.org/schema/jee/spring-jee-4.0.xsd
http://www.springframework.org/schema/tx
http://www.springframework.org/schema/tx/spring-tx-4.0.xsd">
<context:property-placeholder location="classpath:redis.properties"/>
<context:annotation-config/>
<bean id="jedisPoolConfig" class="redis.clients.jedis.JedisPoolConfig">
<property name="maxIdle" value="${redis.maxIdle}"/>
<property name="maxTotal" value="${redis.maxActive}" />
<property name="maxWaitMillis" value="${redis.maxWait}" />
<property name="testOnBorrow" value="${redis.testOnBorrow}"/>
</bean>
<bean id="hostport1" class="redis.clients.jedis.HostAndPort">
<constructor-arg name="host" value="192.168.129.128"/>
<constructor-arg name="port" value="7000"/>
</bean>
<bean id="hostport2" class="redis.clients.jedis.HostAndPort">
<constructor-arg name="host" value="192.168.129.128"/>
<constructor-arg name="port" value="7001"/>
</bean>
<bean id="hostport3" class="redis.clients.jedis.HostAndPort">
<constructor-arg name="host" value="192.168.129.128"/>
<constructor-arg name="port" value="7002"/>
</bean>
<bean id="hostport4" class="redis.clients.jedis.HostAndPort">
<constructor-arg name="host" value="192.168.129.128"/>
<constructor-arg name="port" value="7003"/>
</bean>
<bean id="hostport5" class="redis.clients.jedis.HostAndPort">
<constructor-arg name="host" value="192.168.129.128"/>
<constructor-arg name="port" value="7004"/>
</bean>
<bean id="hostport6" class="redis.clients.jedis.HostAndPort">
<constructor-arg name="host" value="192.168.129.128"/>
<constructor-arg name="port" value="7005"/>
</bean>
<bean id="redisCluster" class="redis.clients.jedis.JedisCluster">
<constructor-arg name="jedisClusterNode">
<set>
<ref bean="hostport1"/>
<ref bean="hostport2"/>
<ref bean="hostport3"/>
<ref bean="hostport4"/>
<ref bean="hostport5"/>
<ref bean="hostport6"/>
</set>
</constructor-arg>
<constructor-arg name="connectionTimeout" value="6000"/>
<constructor-arg name="soTimeout" value="5000"/>
<constructor-arg name="maxAttempts" value="3" />
<constructor-arg name="poolConfig">
<ref bean="jedisPoolConfig"/>
</constructor-arg>
</bean>
</beans>
redis.properties文件:redis.maxIdle=10
redis.maxActive=1000
redis.maxWait=5000
redis.testOnBorrow=true
3.测试方法,测试是否连接和存取数据
import org.junit.Test;
import org.junit.runner.RunWith;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.test.context.ContextConfiguration;
import org.springframework.test.context.junit4.SpringJUnit4ClassRunner;
import redis.clients.jedis.JedisCluster;
@RunWith(SpringJUnit4ClassRunner.class)
@ContextConfiguration(locations= {"classpath:spring-redis.xml"})
public class RedisCluterTest {
@Autowired
JedisCluster jedisCluster;
//通过jedisCluster 操作redis集群
@Test
public void fun1() {
//返回ack
String name = jedisCluster.set("name", "xxx");
String age = jedisCluster.set("age", "28");
String sex = jedisCluster.set("sex", "1");
System.out.println(name+" "+age+" "+sex);
String name1 = jedisCluster.get("name");
String age1 = jedisCluster.get("age");
String sex1 = jedisCluster.get("sex");
System.out.println("get的值"+name1+" "+ age1 +" "+ sex1);
}
}
上一篇: docker安装redis集群(单机)
下一篇: 一点都不酸