前言
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工程:
在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);
}
}
运行一下,抛出了异常:
这是因为redis默认是运行是安全模式的,不允许远程连接,我们可以在服务器上使用客户端设置关闭安全模式:
127.0.0.1:6379> config set protected-mode no
OK
127.0.0.1:6379>
再次运行java客户端程序,打印如下结果:
成功!