redis安装部署

Oct 27, 2016


前言

Redis是一种高级key-value数据库。它跟memcached类似,不过数据可以持久化,而且支持的数据类型很丰富。有字符串,链表,集 合和有序集合。支持在服务器端计算集合的并,交和补集(difference)等,还支持多种排序功能。所以Redis也可以被看成是一个数据结构服务 器。 Redis的所有数据都是保存在内存中,然后不定期的通过异步方式保存到磁盘上(这称为“半持久化模式”);也可以把每一次数据变化都写入到一个append only file(aof)里面(这称为“全持久化模式”)。

安装部署

先到redis官网下载redis,注意,redis官方没有支持window版本,只有linux版本,并且需要源码编译安装,下载源码包即可,我这里用的是3.2.5版本

[kael@localhost Downloads]$ wget http://download.redis.io/releases/redis-3.2.5.tar.gz

下载完成后解压:

[kael@localhost Downloads]$ tar -xvf redis-3.2.4.tar.gz

进入解压后的目录如下:

[kael@localhost Downloads]$ cd redis-3.2.4/
[kael@localhost redis-3.2.4]$ ls
00-RELEASENOTES  BUGS  CONTRIBUTING  COPYING  deps  dump.rdb  INSTALL  Makefile  MANIFESTO  README.md  redis.conf  runtest  runtest-cluster  runtest-sentinel  sentinel.conf  src  tests  utils
[kael@localhost redis-3.2.4]$ 

注意,在编译源码之前,需要安装编译器,我这里用的操作系统的fedora 24,内置安装了,可以使用gcc命令测试一下:

[kael@localhost redis-3.2.4]$ gcc
gcc: fatal error: no input files
compilation terminated.

这说明有这个指令,已经安装了,如果没有安装的话,可以用yum或者apt-get安装即可。

接下来编译redis源码:

[kael@localhost redis-3.2.4]$ make

编译的过程会出现一大堆的日志:

编译日志

这里表示编译完成,此时我们进入src目录就可以看到编译出来的脚本文件了:

编译结果

这个时候直接运行redis即可

[kael@localhost src]$ ./redis-server

运行

按下ctrl+c停止redis。

回到redis的跟目录,将redis安装到本地,就可以在任意目录下 运行redis了。

[kael@localhost src]$ cd ..
[kael@localhost redis-3.2.4]$ sudo make install

运行

安装完成。

现在我们重新运行redis:

[kael@localhost redis-3.2.4]$ redis-server

然后打开一个新的终端,运行redis的客户端:

[kael@localhost ~]$ redis-cli

就会进入redis了,测试一下简单的指令:

127.0.0.1:6379> set name kael
OK
127.0.0.1:6379> get name
"kael"
127.0.0.1:6379> 

一切正常。

说明redis已经部署成功。

使用java客户端

redis的客户端非常多,各种语言都有,java也有多个客户端,目前用的比较广泛的是Jedis,我们来写一个简单的应用测试一下。

创建一个普通的java maven工程:

java 工程

在pom.xml中添加Jedis的依赖:

<dependency>
    <groupId>redis.clients</groupId>
    <artifactId>jedis</artifactId>
    <version>2.9.0</version>
</dependency>

然后写一个Main类:

package main;

import redis.clients.jedis.Jedis;

/**
 * Created by kael on 2016/10/24.
 */
public class Main {
    public static void main(String[] args){
        Jedis jedis = new Jedis("10.200.84.89");
        jedis.set("foo", "bar");
        String value = jedis.get("foo");
        System.out.println(value);
    }
}

运行一下,抛出了异常:

java异常

这是因为redis默认是运行是安全模式的,不允许远程连接,我们可以在服务器上使用客户端设置关闭安全模式:

127.0.0.1:6379> config set protected-mode no
OK
127.0.0.1:6379> 

再次运行java客户端程序,打印如下结果:

java打印结果

成功!