redis

一、redis

Redis是一个开源的使用ANSI C语言编写、支持网络、可基于内存亦可持久化的日志型、Key-Value数据库,并提供多种语言的API。从2010年3月15日起,Redis的开发工作由VMware主持。从2013年5月开始,Redis的开发由Pivotal赞助。当想使用测试内存数据库redis时,就需要在本地linux服务器上进行安装了!

操作步骤

1. 安装软件包

安装依赖
 # yum -y install gcc gcc-c++

下载解压缩并编译源码包
 # wget http://download.redis.io/releases/redis-3.0.3.tar.gz
 # tar xzf redis-3.0.3.tar.gz
 # cd redis-3.0.3
 # make
 
创建安装目录
 # mkdir -p /usr/local/redis/bin
 # mkdir /usr/local/redis/data
 # mkdir /usr/local/redis/logs

将编译生成的以下可执行文件拷贝到安装目录
 # cd src
 # cp redis-server /usr/local/redis/bin
 # cp redis-benchmark /usr/local/redis/bin
 # cp redis-cli /usr/local/redis/bin

复制并以端口重命名配置文件
 # cd ../
 # cp redis.conf /usr/local/redis/6379.conf

复制并重命名服务启动脚本
 # cd utils
 # cp redis_init_script /etc/init.d/redisd

2. 修改配置文件

编辑修改Redis配置文件以下参数:
 # vim /usr/local/redis/6379.conf
 
daemonize yes  #设置服务以守护进程方式运行
pidfile /var/run/redis_6379.pid  #pid文件
timeout 300  #客户端空闲多少秒之后关闭连接
tcp-keepalive 60  #客户端健康状态检测,避免服务器一直阻塞
loglevel warning  #日志级别
logfile "/usr/local/redis/logs/redis.log"  #日志文件
dir /usr/local/redis/data  #数据目录

3. 配置服务

配置启动脚本,编辑修改红色字体部分:
 # vim /etc/init.d/redisd
#!/bin/sh
#
# Simple Redis init.d script conceived to work on Linux systems
# as it does use of the /proc filesystem.
REDISPORT=6379
EXEC=/usr/local/redis/bin/redis-server
CLIEXEC=/usr/local/redis/bin/redis-cli

PIDFILE=/var/run/redis_${REDISPORT}.pid
CONF="/usr/local/redis/${REDISPORT}.conf"
… …

修复启动警告并配置自启动
编辑sysctl.conf在最后增加vm.overcommit_memory = 1
 # vim /etc/sysctl.conf
vm.overcommit_memory = 1

 # vim /etc/rc.local
echo never > /sys/kernel/mm/transparent_hugepage/enabled
echo 511 > /proc/sys/net/core/somaxconn
service redisd start

重启服务器
 # reboot

4. 安装验证

查看服务是否自启动
 # tail -f /usr/local/redis/logs/redis.log
Server started, Redis version 3.0.3

使用自带客户端工具测试key-value存取功能
 # cd /usr/local/redis/bin
 # ./redis-cli
127.0.0.1:6379> keys *
(empty list or set)
127.0.0.1:6379> set test "hello world"
OK
127.0.0.1:6379> get test
"hello world"

关闭服务
 # service redisd stop
Stopping ...
Redis stopped

启动服务
 # service redisd start
Starting Redis server...

二、操作

当redis内存数据库安装完毕之后,需要对redis进行操作使用,可以通过cs客户端,或者直接通过shell端进行连接redis然后对内存数据库进行操作使用。

操作步骤

查看服务是否自启动
 # tail -f /usr/local/redis/logs/redis.log
Server started, Redis version 3.0.3
使用自带客户端工具测试key-value存取功能
 # cd /usr/local/redis/bin
 # ./redis-cli
127.0.0.1:6379> keys *
(empty list or set)
127.0.0.1:6379> set test "hello world"
OK
127.0.0.1:6379> get test
"hello world"
关闭服务
 # service redisd stop
Stopping ...
Redis stopped
启动服务
 # service redisd start
Starting Redis server...

三、webdis

当安装完redis后,通过shell端或者客户端对redis进行操作,但是缺少了对redis的监控工具,下面介绍redis的web端的监控工具Webdis。

操作步骤

1. 安装软件包

安装依赖
 # cd /root
 # yum -y install zlib-devel openssl-devel perl cpio expat-devel gettext-devel curl
 # yum -y install libevent-devel
 # yum -y install git

下载编译源码
 # git clone git://github.com/nicolasff/webdis.git
 # cd webdis
 # make

创建安装目录并拷贝安装与配置文件
 # mkdir /usr/local/webdis
 # cp webdis /usr/local/webdis
 # cp webdis.json /usr/local/webdis

2. 修改配置文件

编辑修改webdis配置文件webdis.json以下参数:
 # vim /usr/local/webdis/webdis.json
{
"redis_host": "127.0.0.1",
"redis_port": 6379,
"redis_auth": null,

"http_host": "0.0.0.0",
"http_port": 7379,

"threads": 5,
"pool_size": 20,

"daemonize": true,
"websockets": false,

"database": 0,

"acl": [
{
"disabled": ["DEBUG", "FLUSHDB", "FLUSHALL"]
},

{
"http_basic_auth": "user:password",
"enabled": ["DEBUG"]
}
],

"verbosity": 6,
"logfile": "/usr/local/webdis/webdis.log",
"pidfile": "/usr/local/webdis/webdis.pid"
}

3. 配置自启动

增加自启动命令,需配置在redis启动命令下面
 # vim /etc/rc.local
/usr/local/webdis/webdis /usr/local/webdis/webdis.json

重启服务器
 # reboot

4. 安装验证

测试常用API,或者在浏览器打开对应地址测试:
 # curl http://127.0.0.1:7379/SET/key/value
 # curl http://127.0.0.1:7379/GET/key
 # curl http://127.0.0.1:7379/DEL/key
 # curl http://127.0.0.1:7379/keys/*
 

四、认证

在使用redis的时候发现并不需要密码等,这样使得数据库的数据安全性受到威胁,所以必要时得给数据进行加密设置。

操作步骤

1.1 问题发现及还原

首先,用一个纯净的Redis进行加密试验,关闭keepalived,redis,redis-stat服务。
将/usr/local/redis/6379.conf配置文件中的,requirepass配置项打开,后面紧跟随自己设置的密码。如下图所示:

redis_第1张图片

然后开启Redis服务

当我们开启redis服务,进行连接,但是不能查询redis中的keys,提示没有权限。(问题一)

redis_第2张图片

当我们观察redis的检测工具redis-stat时,发现如下情况,提示没有权限(问题二)

redis_第3张图片

当我们再次执行程序时,发现了程序不能执行,情况如下(问题三)

redis_第4张图片

1.2 问题解决与恢复

解决问题一有如下几种方法。

1、在进行连接redis的时候,加上密码认证参数-a 及密码

redis_第5张图片

2、在redis执行语句之前加上认证

redis_第6张图片

解决问题二方法如下,在启动redis-stat时,加入密码认证参数,如下图所示,最后redis-stat工具依然能够使用。

redis_第7张图片

redis_第8张图片

解决问题三方法如下,在代码中加入password认证,试验通过。

redis_第9张图片

你可能感兴趣的:(数据库)