NOSQL(Redis服务)

NoSQL相关概念

RDBMS

  • 关系数据库管理系统
    Relational Database Management System
    -按照预先设置的组织结构,将数据存储在物理介质上
    -数据之间可以做关联操作
  • 主流的RDBMS软件
    -MySQL
    -MariaDB
    -Oracle
    -DB2
    -SQL Server

NoSQL

  • NoSQL=Not Only SQL
    -意思是"不仅仅是SQL"
    -泛指非关系型数据库
    -不需要预先定义数据存储结构
    -每条记录可以有不同的数据类型和字段个数
  • 主流软件
    -Memcached
    -Redis
    -MongoDB
    -CouchDB
    -Neo4j
    -FlockDB

部署Redis服务器

Redis介绍

Remote Dictionary Server
-是一款高性能的(Key/Values)分布式内存数据库
-支持数据持久化(定期把内存里数据存储到硬盘)
-支持多种数据类型string,list,hash…
-支持master-slave模式数据备份
-中文网站www.redis.cn

源码编译安装

 yum -y install gcc 
 tar -zxf redis-4.0.8.tar.gz
 cd redis-4.0.8/
 ls
 00-RELEASENOTES  CONTRIBUTING  deps     Makefile   README.md   runtest          runtest-sentinel  src    utils
BUGS             COPYING       INSTALL  MANIFESTO  redis.conf  runtest-cluster  sentinel.conf     tests
make && make install

初始配置

./utils/install_server.sh
Welcome to the redis service installer
This script will help you easily set up a running redis server
Please select the redis port for this instance: [6379] 
Selecting default: 6379
Please select the redis config file name [/etc/redis/6379.conf] 
Selected default - /etc/redis/6379.conf
Please select the redis log file name [/var/log/redis_6379.log] 
Selected default - /var/log/redis_6379.log
Please select the data directory for this instance [/var/lib/redis/6379] 
Selected default - /var/lib/redis/6379
Please select the redis executable path [/usr/local/bin/redis-server] 
Selected config:
Port           : 6379                   //端口号
Config file    : /etc/redis/6379.conf         //配置文件目录
Log file       : /var/log/redis_6379.log      //日志目录
Data dir       : /var/lib/redis/6379          //数据库目录
Executable     : /usr/local/bin/redis-server  //启动程序的目录
Cli Executable : /usr/local/bin/redis-cli     //命令行的连接工具
Is this ok? Then press ENTER to go on or Ctrl-C to abort.  //回车完成配置
Copied /tmp/6379.conf => /etc/init.d/redis_6379    //服务启动脚本
Installing service...
Successfully added to chkconfig!
Successfully added to runlevels 345!
Starting Redis server...  //提示服务已经启动
Installation successful!        //提示安装成功

服务基本使用

管理服务

/etc/init.d/redis_6379 status //查看服务状态
/etc/init.d/redis_6379 stop //停止服务
/etc/init.d/redis_6379 start //启动服务
ps -C redis-server //查看进程
ss -pantu | grep :6379 //查看端口

连接服务

redis-cli  //默认连接127.0.0.1地址的 6379端口
127.0.0.1:6379> ping
PONG            //PONG说明服务正常

Redis常用命令

-set key名 key值 存储1个key值
-mset key名列表 存储多个key值
-get key名 获取key值
-mget key名1 key名2… 获取多个key值
-select 数据库编号0-15 切换库
-keys * 显示当前库所有key名
-keys a? 显示当前库指定key名
-exists key名 测试key名是否存在
-ttl key名 查看key生存时间(-1代表永久有效,-2代表变量过期了)
-type key名 查看key类型
-move key名 库编号 移动key库到指定库
-expire key名 数字 设置key有效时间(单位秒)
-del key名 删除指定的key
-flushall 删除内存里所有key
-flushdb 删除所在库的所有key
-save 保存所有key到硬盘
-shutdown 停止服务

配置文件解析

配置分类

文件说明
主配置文件/etc/redis/6379.conf
日志文件/var/log/redis_6379.log
数据库目录/var/lib/redis/6379
服务启动程序/usr/local/bin/redis-server
命令行连接命令/usr/local/bin/redis-cli

常用配置

配置说明
port 6379端口
bind 127.0.0.1IP地址
daemonize yes守护进程方式运行
databases 16数据库个数
logfile /var/log/redis_6379.log日志文件
maxclients 10000并发连接数量
dir /var/llib/redis/6379数据库目录

内存管理

  • 内存清除策略
    LRU means Least Recently Used
    LFU means Least Frequently Used
配置说明
volatile-lru最近最少使用(针对设置了TTL(剩余生存时间)的key)
volatile-lfu针对设置了TTL的key中清除使用频率最少key)
allkeys-lru删除最少使用的key(针对所有的key)
allkeys-lfu从所有key中清除使用频率最少的key
volatile-random在设置了TTL的key里随机移除
allkeys-random随机移除key
volatile-ttl(minor TTL)移除最近过期的key
noeviction不删除
  • 优化设置
配置说明
manmemory最大内存
maxmemory-policy定义使用策略
maxmemory-samples选取key模板的个数(针对lru和ttl策略)

修改Redis服务运行参数

  • 修改主配置文件
cp /etc/redis/6379.conf  /root/6379.conf     #可以先备份一份,防止修改错误没法还原
/etc/init.d/redis_6379 stop
vim /etc/redis/6379.conf
.......
bind  192.168.4.50                #设置服务使用的ip
port 6350                         #更改端口号
requirepass 123456                #设置密码
  • 修改启动脚本
vim  +43  /etc/init.d/redis_6379
$CLIEXEC -h 192.168.4.50 -p 6350 -a 123456  shutdown
  • 测试
/etc/init.d/redis_6379  start
netstat -utnlp  | grep redis-server
redis-cli -h 192.168.4.50 -p 6350 [-a 123456] #访问服务
192.168.4.50:6350>auth 123456                 #输入密码(访问时没填密码)
192.168.4.50:6350>ping
PONG

持久化(数据恢复)

RDB

RDB介绍

  • Redis数据库文件,全称Redis DataBase
    –数据持久化方式之一
    –数据持久化默认方式
    –按照指点时间间隔,将内存中的数据集快照写入硬盘
  • 定义RDB文件名
    –dbfilename “dump.rdb” #文件名

使用RDB文件

  • 备份数据
    –备份dump.rdb文件到其他位置
cp 数据库目录/dump.rdb 备份目录
  • 恢复数据
    –拷贝备份文件到数据库目录,启动redis服务
cp 备份目录/dump.rdb 数据库目录/

RDB优化设置

  • 数据从内存保存到硬盘的频率
    –save 900 1 #900秒内且有1个key改变
    –save 300 10 #300秒内且有10个key改变
    –save 60 10000 #60秒内且有10000个key改变
  • 手动存盘
    –save #阻塞写存盘
    –bgsave #不阻塞写存盘

RDB优点和缺点

  • RDB优点
    –高性能的持久化实现—创建一个子进程来执行持久化,先将数据写入临时文件,持久化过程结束后,再用这个临时文件替换上次持久化好的文件;过程中主进程不做任何IO操作
    –比较适合大规模数据恢复,且对数据完整性要求不是非常高的场合
  • RDB的缺点
    –意外宕机后,丢失最后一次持久化的所有数据

AOF

AOF介绍

  • Append Only File
    –追加方式记录写操作的文件
    –记录redis服务所有写操作
    –不断的将新的写操作,追加到文件的末尾
    –默认没有启动
    –使用cat命令可以查看文件内容
  • 启动AOF
192.168.4.51:6351>config  set   appendonly yes     #启用aof,默认no
192.168.4.51:6351> config  rewrite  #写进配置文件

使用AOF文件恢复数据

  • 备份数据
    –备份appendonly.aof文件到其他位置
cp 数据库目录/applendonly.aof 备份目录
  • 恢复数据
    –拷贝备份文件到数据库目录
    –启动redis服务
cp 备份目录/appendonly.aof 数据库目录
/etc/redis/redis_端口 start

AOF优化配置

  • 定义文件名
vim +673 /etc/redis/6379.conf
appendonly  yes  #启用AOF
appendfilename "appendonly.aof" #指定文件名
  • AOF文件记录写操作的方式
    三选一,默认是appendfsync everysec
vim  /etc/redis/6379.conf
# appendfsync always  //时时记录,并完成磁盘同步
appendfsync everysec //每秒记录一次,并完成磁盘同步
# appendfsync no  //写入aof.不执行磁盘同步
  • 日志文件会不断增大,何时触发日志重写?
vim  +744 /etc/redis/6379.conf
auto-aof-rewrite-percentage 100 #再次重写,增长百分比
auto-aof-rewrite-min-size 64mb  #首次重写触发值
  • 修复AOF文件
    –把文件恢复到最后一次的正确操作
redis-check-aof --fix /var/lib/redis/6379/appendonly.aof
0x              8b: Expected prefix '*', got: 'd'
AOF analyzed: size=153, ok_up_to=139, diff=14
This will shrink the AOF from 153 bytes, with 14 bytes, to 139 bytes
Continue? [y/N]: y
Successfully truncated AOF

AOF优点与缺点

  • AOF优点
    –可以灵活设置持久化方式
    –出现意外宕机时,仅可能丢失1秒的数据
  • AOF
    –持久化文件的体积通常会RDB方式
    –执行fsync策略时的速度可能会比RDB方式慢

与网站服务一起使用(LNMP+Redis)

部署LNMP环境

在主机192.168.4.57部署LNMP环境

yum -y install mariadb mariadb-server
1.安装源码nginx软件及php-fpm

yum  -y  install  gcc    pcre-devel(提供正则匹配)   zlib-devel(提供无损数据压缩)  #安装依赖
tar  -zxvf  nginx-1.12.2.tar.gz  #解压
cd nginx-1.12.2  #进源码目录
./configure 
make && make install
yum  -y  install  php-fpm #安装php-php

2.修改配置nginx.conf

vim   +65  /usr/local/nginx/conf/nginx.conf
......
location ~ \.php$ {
              root           html;
              fastcgi_pass   127.0.0.1:9000;
              fastcgi_index  index.php;
              include        fastcgi.conf;
       }
......
/usr/local/nginx/sbin/nginx  -t   #测试修改
nginx: the configuration file /usr/local/nginx/conf/nginx.conf syntax is ok
nginx: configuration file /usr/local/nginx/conf/nginx.conf test is successful

3.启动服务
php-fpm服务
systemctl start php-fpm #启动服务
netstat -utnlp | grep :9000 #查看端口
nginx服务
/usr/local/nginx/sbin/nginx
netstat -utnlp | grep :80
测试配置

vim  /usr/local/nginx/html/test.php
<?php
        echo  "hello world!!!";
?>
curl  http://localhost/test.php 
hello world!!!

配置PHP支持redis

1.安装php扩展

yum -y  install php php-devel php-mysql automake autoconf
tar -zxf php-redis-2.2.4.tar.gz 
cd phpredis-2.2.4/
phpize  #生成配置文件php-config及 configure命令
./configure  --with-php-config=/usr/bin/php-config
make && make install

2.修改php.ini文件

vim /etc/php.ini
728 extension_dir = "/usr/lib64/php/modules/"  #模块文件目录
730 extension = "redis.so" #模块文件名
systemctl  restart php-fpm #重启php-fpm服务
php -m | grep  -i redis    #查看已加载的模块

3.测试配置:修改网站脚本,把数据存储到redis服务器192.168.4.50
a)查看192.168.4.50主机的redis服务器是否运行

netstat -utnlp  | grep redis-server
redis-cli -h 192.168.4.50 -p 6350 -a 123456 
192.168.4.50:6350> ping
PONG
192.168.4.50:6350> exit

b)编写网站脚本(192.168.4.57)

vim  /usr/local/nginx/html/linkredis.php
<?php
$redis = new redis();
$redis->connect("192.168.4.50","6350");
$redis->auth("123456");
$redis->set("linux","redhat");
echo $redis->get("linux");
?>

c)访问网站脚本
curl http://localhost/linkredis.php #访问nginx服务
redhat
d)在192.168.4.50 服务器,查看数据

 redis-cli -h 192.168.4.50 -p 6350 -a 123456 
 192.168.4.50:6350> keys *      #查看变量
 1) "linux"
 192.168.4.50:6350> get linux   #获取值
 "redhat"
  • 2
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值