您的位置:首页 > 数据库 > Redis

Redis入门及集群环境搭建

2015-02-04 17:57 555 查看

1.概述

笔者在两周前对redis也是一无所知,不知道这是个什么东东,有什么用。由于项目需求,需要尽快掌握redis 的使用,本文是笔者在学习过程中的笔记和总结。通过本文带领读者一步步揭开Redis的面纱,主要涉及了Redis概念、安装、集群和在应用程序中的使用。

2.认识Redis

Redis(REmote DIctionary Server)是什么,如果你认为它是一个key-value store, 那可能会用它来代替MySQL;如果认为它是一个可以持久化的cache, 可以用它保存一些频繁访问的临时数据。在Redis在官方网站的的副标题是A persistent key-value database with built-in net interface written in ANSI-C for Posix systems,这个定义偏向key-value store。还有一些看法则认为Redis是一个memory database,因为它的高性能都是基于内存操作的基础。另外一些人则认为Redis是一个data structure server,因为Redis支持复杂的数据特性,比如List, Set等。

与Redis类似的NoSQL产品有Memcache、Mongodb、ehcache等,下面和Memcache做下对比。Redis和Memcache它们都是内存数据库,不过后者还可以用来缓存图片、视频等等;它们都可以支持k/v类型的数据,前者还提供list,set,hash等数据结构的存储;从数据安全性考虑,前者支持数据持久化和数据备份,而后者在服务器宕机时,数据是无法恢复的。

3.安装使用

3.1平台环境

操作系统:Ubuntu11.04(Liunx内核:2.6.38-8-generic)

Redis版本:2.8.6(he latest stable version,笔者在撰写该篇文章时已经到2.8.7)

3.2安装步骤

1)创建工作目录。该目录用于存放redis相关的资源文件

在当前用户目录,下创建study->redis目录

$ mkdir -p study/redis



2)下载。首先进入redis的官网(redis.io[英文],http://redis.cn[中文]),找到当前最新稳定版,可以通过浏览器下载或者通过终端wget进行下载,并保存到 ~/study/redis目录下。



$ cd study/redis

$ wget http://download.redis.io/releases/redis-2.8.6.tar.gz


3)解压。我们下载的是redis的源代码压缩包,需要先解压。

$ tar xvzf redis-2.8.6.tar.gz



4)编译。

$ cd redis-2.8.6

$ make



.....



上面图片中白色框中的提示信息直接忽视。

到此redis的编译结束,编译后的可运行文件在src目录中,包含有:redis-server、redis-cli、redis-sentinel、redis-benchmark、redis-check-aof、redis-check-dump,其中redis-server是服务程序,redis-cli是测试客户端程序。

Tips:上面没有直接make&&make install的命令,主要考虑的是,redis的安装目录和文件由我们自己来定义,后面会将到安装的步骤。

3.3实例测试

下面启动redis服务

$ redis-server



从上图可以看出服务端已经在6379端口开启了监听。但是给出了一个警告信息,以及解决的方法。先退出redis服务,然后修改相关系统配置文件。

通过redis的客户端程序来关闭redis服务。

$ redis-cli -h 127.0.0.1 -p 6379

$ 127.0.0.1:6379> shutdown



-h 表示redis服务器地址,-p表示服务端口

指令“shutdown”表示停止redis服务。

下面是来自服务端控制台的信息



打开/etc/sysctl.conf文件,并在文件末位添加上vm.overcommit_memory = 1



注意,编辑该文件时需要管理员权限。

Tips:本文中使用了gedit文本编辑器(图形界面)来操作文件,大家也可以使用vi编辑器来编辑。

为了不重启电脑让该配置生效,我们在终端运行sysctl vm.overcommit_memory=1 即可,然后再启动redis服务,就没有了WARNING信息。





到此redis成功的启动了。

下面用redis-cli客户端程序来操作数据。

$ redis-cli -h 127.0.0.1 -p 6379

>set key1 测试哦

>get key1

>set key2 testvalue

>get key2



也可以使用windows telnet 进行连接。





通过上面的测试,说明Redis编译通过,已经可以使用,下面进行redis的环境安装。

3.4环境部署

通过上面的编译,只是完成了应用程序的生成,并没有形成一个规范的系统结构。接下来,我们将redis安装到应用环境中。

1)创建Redis环境目录/usr/local/webserver/redis

# mkdir -p /usr/local/webserver/redis/conf

# mkdir -p /usr/local/webserver/redis/run

# mkdir -p /usr/local/webserver/redis/db

上面三个目录分别用来存放配置文件,运行时文件和数据文件。

2)复制相应文件到对应目录

打开终端,切换到管理员身份,切换到用户文件夹/study/redis/redis/redis-2.8.6

# cp redis.conf /usr/local/webserver/redis/conf/

# cd src/

# cp redis-benchmark redis-check-aof redis-check-dump redis-cli redis-server mkreleasehdr.sh redis-sentinel /usr/local/webserver/redis/

3)修改配置文件中的属性

# gedit /usr/local/webserver/redis/conf/redis.conf

==================================================================

##Redis默认不是以守护进程的方式运行,使用yes启用守护进程

daemonize yes

##当Redis以守护进程方式运行时,Redis默认会把pid写入/var/run/redis.pid文件

pidfile /usr/local/webserver/redis/run/redis.pid

##指定本地数据库存放目录

dir /usr/local/webserver/redis/db

==================================================================

更多详细参数配置:

http://hi.baidu.com/i_ccboy/item/830c54d7ca80bd3e48e1dd9f

4)创建服务启动、停止脚本

为了启动、停止服务的方便,下面我们创建对应的脚本。

在redis目录中创建start.sh

# gedit /usr/local/webserver/redis/start.sh

在打开的文件中输入如下内容,表示使用我们刚刚修改的配置文件来启动Redis服务。

==================================================================

#!/bin/bash

/usr/local/webserver/redis/redis-server /usr/local/webserver/redis/conf/redis.conf

==================================================================



按照上面的方法创建停止脚本。

# gedit /usr/local/webserver/redis/stop.sh

==================================================================

#!/bin/bash

kill `cat /usr/local/webserver/redis/run/redis.pid`

==================================================================

再改变这两个文件的权限,



# chmod a+x /usr/local/webserver/redis/start.sh /usr/local/webserver/redis/stop.sh



然后在终端输入/usr/local/webserver/redis/start.sh启动redis服务。通过下面的命令来判断是否启动成功。

# netstat -ntlp| grep 6379



使用上面的stop.sh停止服务,是kill掉了进程,这样就会造成,内存中的数据(还没持久化到磁盘)的丢失。如果使用 shutdown指令停止,则在停止服务器会将内存中的数据都写入到磁盘中,下次启动时会读入该数据文件。

4. Master/Slave主从集群

4.1环境部署

4.2实例测试

4.3原理

5. Redis Sentinel管理工具

5.1 Redis HA方案

5.2环境部署

5.3启动与检测

5.4原理

6. Jedis与Java

6.1.获得jedis.jar包

6.2Redis的Java测试项目

7. 思考

8. 结束语

完整文档请下载:http://download.csdn.net/detail/ccboy2009/8423627
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: