Redis是一个开源的使用ANSI C语言编写、支持网络、可基于内存亦可持久化的日志型、Key-Value数据库,并提供多种语言的API。从2010年3月15日起,Redis的开发工作由VMware主持。从2013年5月开始,Redis的开发由Pivotal赞助。当想使用测试内存数据库redis时,就需要在本地linux服务器上进行安装了!
安装依赖
# 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
编辑修改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 #数据目录
配置启动脚本,编辑修改红色字体部分:
# 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
查看服务是否自启动
# 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...
当安装完redis后,通过shell端或者客户端对redis进行操作,但是缺少了对redis的监控工具,下面介绍redis的web端的监控工具Webdis。
安装依赖
# 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
编辑修改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"
}
增加自启动命令,需配置在redis启动命令下面
# vim /etc/rc.local
/usr/local/webdis/webdis /usr/local/webdis/webdis.json
重启服务器
# reboot
测试常用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的时候发现并不需要密码等,这样使得数据库的数据安全性受到威胁,所以必要时得给数据进行加密设置。
首先,用一个纯净的Redis进行加密试验,关闭keepalived,redis,redis-stat服务。
将/usr/local/redis/6379.conf配置文件中的,requirepass配置项打开,后面紧跟随自己设置的密码。如下图所示:
然后开启Redis服务
当我们开启redis服务,进行连接,但是不能查询redis中的keys,提示没有权限。(问题一)
当我们观察redis的检测工具redis-stat时,发现如下情况,提示没有权限(问题二)
当我们再次执行程序时,发现了程序不能执行,情况如下(问题三)
1、在进行连接redis的时候,加上密码认证参数-a 及密码
2、在redis执行语句之前加上认证
解决问题二方法如下,在启动redis-stat时,加入密码认证参数,如下图所示,最后redis-stat工具依然能够使用。
解决问题三方法如下,在代码中加入password认证,试验通过。