(1)---安装、配置、启动
redis简介
Redis是一个开源、支持网络、基于内存、键值对存储数据库,使用ANSI C编写。从 2015 年 6 月开始,Redis 的开发由RedisLabs赞助,在2013年5月至2015年6月期间,其开发由Pivotal赞助。在2013年5月之前,其开发由VMware赞助。根据月度排行网站DB-Engines.com的数据显示,Redis是最流行的键值对存储数据库。
(维基百科)
由于redis基于内存、键值对存储等特点,加上它的5种数据类型,使得redis能够在缓存、消息队列、高并发应用、排行榜相关领域大展身手。
安装(以ubuntu为例)
wget http://download.redis.io/redis-stable.tar.gz |
配置redis
开发环境,无须配置。手工启动
redis-server --port 6379 |
生产环境,设置随系统自动启动(以监听6380端口为例)
1、复制启动脚本
sudo cp utils/redis_init_script /etc/init.d/redis_6380 |
2、创建配置文件所在目录
sudo mkdir /etc/redis |
3、创建PIDFILE文件所在目录
PID FILE的作用,见pid file的作用
sudo mkdir -p /var/redis/6380 |
4、修改启动脚本
修改第6行的端口号 REDISPORT=6380
sudo vim /etc/init.d/redis_6380 |
5、复制该实例redis配置文件
sudo cp redis.conf /etc/redis/6380.conf |
6、修改配置文件
sudo vim /etc/redis/6380.conf |
修改以下参数
daemonize yes #以守护进程运行 |
7、设置开机启动
sudo update-rc.d redis_6380 defaults |
提示:centos下使用如下方法
a. 修改/etc/init.d/redis_6380,在首行#!/bin/sh下添加两行
sudo vim /etc/init.d/redis_6380
/*添加这两行:(保留#号)
chkconfig: 2345 10 90
description: redis blabla .... |
启动与关闭
(开启,生产环境):
sudo /etc/init.d/redis_6380 start |
(开启,开发环境):
redis-server --port 6380 |
(关闭):
redis-cli -h 127.0.0.1 -p 6380 SHUTDOWN |
参考
----------------
(2) 管理与维护
涉及 持久化_、_主从服务_、_安全_、_监控 等设置或管理。
持久化
redis虽然是基于内存的,但是作为一个比较成熟的数据库,仍然提供了持久化的功能,并且默认是开启的。
redis有两种持久化的方式:RDB 与 AOF
RDB(默认)
在一定时间内改动的键的数量超过则写回到磁盘
配置
默认写到 dump.rdb 文件,可以在配置文件中通过参数 dbfilename 修改
可以在配置文件 redis.conf 中按照如下格式添加自定义规则(默认已有三条规则)
# save time count |
文件格式
RDB文件是以二进制形式存储的。
适用场景
由于需要达到一定的改动次数,如果中间出现异常崩溃,最后的那些改动会丢失。如果对可靠性要求不是很高,可以采用。
关闭RDB持久化
删除原有规则,并添加规则:
save "" |
AOF (append only file)
每出现一个改动就写回到文件
开启AOF持久化
修改配置文件参数, appendonly yes
默认写到 appendonly.aof 文件中,可以在配置文件中修改 appendfilename 参数
数据格式采用文本文件格式,存储的是每一步的操作,形式如下:
*3 #行数 |
表示的是命令 set foo bar
由于系统默认的写机制存在缓存,延迟回写(30s),如果掉电,缓存中内容会丢失。可以设置自动同步到磁盘,参数 appendfsync,默认时每秒回写一次
适用场景
AOF可靠性更高,但是也更影响性能(好在redis占用资源则不多),适用于对数据可靠性要求很高,对丢失0容忍的应用
注意
可以同时使用RDB和AOF两种持久化方式,不会存在冲突
设置主从服务器
redis-server --port 6380 --slaveof 127.0.0.1 6379 |
开启6380端口的redis服务器实例A,作为6379实例B的从服务器,随后A会自动向B 报告 ,请求镜像,此后每次B变动,都会通知A更改。A与B的数据交换格式类似于AOF文件,从服务器的数据默认是 只读(readonly),可以通过参数 slave-read-only 参数进行修改,但是从服务器的变化不会影响到主服务器,并且会被下一次的同步覆盖
安全
关闭外部网络访问权限
修改配置文件参数
bind 127.0.0.1 |
最新版3.2.0 已经默认如此配置了
设置密码
配置文件添加参数
requirepass <password> |
以后连接服务器时,都要先输入
AUTH <password> |
命令验证,才能正常使用
个人认为没有必要,redis不提供输入次数限制,暴力破解的难度不大,除非是非常高强度的密码。况且已经关闭外部访问,能连上主机的直接看程序代码就知道密码了。
重命名/禁止命令
重命名
rename-command command newCommandName |
禁止
禁用某些命令
rename-command command "" |
通信协议
redis提供了两种通信协议支持:简单协议 和 统一请求协议
简单协议(SET foo bar)
输入跟在redis-cli 中输入的命令一致
二进制安全的统一请求协议
输入的格式与输出一致,跟AOF文件格式相似
例如 SET foo bar
写为 *3\r\n$3\r\nSET\r\n$3foo\r\n$3bar\r\n
两种协议的输出格式对比
类型 | 示例数据 |
---|---|
错误 | -ERR blabla\r\n |
状态 | +OK\r\n |
整数 | :3\r\n |
字符串 | $3\r\nbar\r\n |
多行回复 | *3\r\n$3\r\nSET\r\n$3foo\r\n$3bar\r\n |
管理工具
redis自带工具
在 redis-cli 中输入
slowlog get 慢日志查询,时间阈值在配置文件中修改,默认为10000
monitor 实时显示服务器的每一个请求(所有客户端)
phpRedisAdmin
跟phpmyadmin相似,用网页方式管理 (查看演示)
git clone https://github.com/ErikDubbelboer/phpRedisAdmin.git |
rdbtools
地址 rdbtools快照文件解析器,根据快照文件导出json文件,分析redis中每个键的占用空间情况等。
No comments:
Post a Comment