NoSQL概述,部署Redis,部署LNMP+Redis

数据库类型

RDBMS

  • 关系型数据库管理系统
  1. Relational Database Management System
  2. 按照预先设置的组织结构,将数据存储在物理介质是上
  3. 数据之间能够作关联操做

RDBMS服务软件php

  • 主流的RDBMS软件
    Oracle、DB二、MS SQL Server、MySQL、MariaDB

NoSQL

  • NoSQL(NoSQL=Not Only SQL)
  1. 意思是“不单单是SQL”
  2. 泛指非关系型数据库
  3. 不须要预先定义数据存储结构
  4. 表的每条记录均可以有不一样的类型和结构

NoSQL服务软件html

  • 主流软件
    Redis、MongoDB、Memcached、CouchDB、Neo4j、FlockDB

部署Redis服务

Redis介绍nginx

  • Redis Remote Dictionary Server(远程字典服务器)
  1. 是一款高性能的(Key/Values)分布式内存数据库
  2. 支持数据持久化,能够把内存里的数据保存到硬盘中
  3. 也支持list、hash、set、zset 数据类型
  4. 支持master-salve模式数据备份
  5. 中文网站www.redis.cn

1、装包web

从源码安装redis

[root@ip50 redis]# yum -y install gcc  //安装编译环境
[root@ip50 redis]# tar -zxvf redis-4.0.8.tar.gz
[root@ip50 redis]# cd redis-4.0.8/
[root@ip50 redis-4.0.8]# make && make install

2、初始化配置数据库

配置服务运行参数vim

  • 端口
  • 主配置文件
  • 数据库目录
  • pid文件
  • 启动程序
[root@ip50 redis-4.0.8]# cd utils/
[root@ip50 utils]# ./install_server.sh   //初始化

3、启动/中止服务windows

默认初始化完毕以后服务就是启动的服务器

(1)启动服务并发

[root@ip50 utils]# /etc/init.d/redis_6379 start

(2)中止服务

[root@ip50 utils]# /etc/init.d/redis_6379 stop

4、链接Redis数据库服务

访问redis服务

[root@ip50 ~]# ps -C redis-server
[root@ip50 ~]# ss -ntulp | grep redis-server
[root@ip50 ~]# redis-cli     //链接本机的redis数据库服务

5、经常使用操做指令

set keyname keyvalue 存储
get keyname 获取
select 数据库编号0-15 切换库
keys * 打印全部变量
keys a? 打印指定变量
EXISTS keyname 测试该变量是否存在
ttl keyname 查看生存时间
type keyname 查看类型
move keyname keyname 移动变量
expire keyname 10 设置有效时间
del keyname 删除变量
flushall 删除全部变量
save 保存全部变量,马上将内存中的数据写入到硬盘
shutdown 关闭redis服务
127.0.0.1:6379> SET school tarena     //存值
127.0.0.1:6379> KEYS *				//打印全部的key值
127.0.0.1:6379> get school			//根据key值获取value
127.0.0.1:6379> EXISTS school		//  0不存在,1存在
127.0.0.1:6379> ttl school			//-1表示永不过时,-2变量已过时
127.0.0.1:6379> move a 1			//将变量a移动到1号数据库
127.0.0.1:6379> keys a				//打印a变量
127.0.0.1:6379> expire school 200    //设置school变量名过时时间是200s,过时后会被从内存中清除
127.0.0.1:6379> type school			//查看school变量的类型
127.0.0.1:6379> del school			//删除变量
127.0.0.1:6379> flushall			//删除全部变量

经常使用配置选项

port 6379 端口
bind 127.0.0.1 ip地址,能够空格隔开写多个地址
tcp-backlog 511 tcp链接总数
timeout 0 链接超时时间
tcp-keepalive 300 长链接保持时间
daemonize yes 守护进程方式运行(时刻活跃,设置为NO就是没有任务处理的时候,redis会处于休眠状态,有任务处理时会被系统唤醒处理任务)
databases 16 数据库个数
logfile /var/log/redis_6379.log pid文件
maxclients 10000 并发链接数
dir /var/lib/redis/6379 数据目录

内存管理

  • 内存清除策略
  1. volatile-lru //最近最少使用(针对设置了TTL的key)
  2. allkeys-lru //删除最少使用的key
  3. volatile-random //在设置了TTL的key里随机移除
  4. allkeys-random //随机移除key
  5. volatile-ttl (minor TTL) //移除最近过时的key
  6. noeviction //不删除,写满时报错
  • 选项默认设置
  1. maxmemory <bytes> //最大内存
  2. maxmemory-policy noeviction //定义使用策略
  3. maxmemory-samples 5 //选取模板数据的个数(针对lru和ttl策略)

设置密码

[root@ip50 ~]# vim /etc/redis/6379.conf 
... ...
requirepass 123456
... ...

重启服务

[root@ip50 ~]# /etc/init.d/redis_6379 stop
[root@ip50 ~]# /etc/init.d/redis_6379 start

使用密码登陆

[root@ip50 ~]# redis-cli -a 123456
或者
[root@ip50 ~]# redis-cli 
127.0.0.1:6379> auth 123456

修改了密码以后没法正常中止redis

须要这样执行

[root@ip50 ~]# redis-cli -a 123456 shutdown
[root@ip50 ~]# /etc/init.d/redis_6379 start

中止redis修改默认的ip跟端口

[root@ip50 ~]# redis-cli -a 123456 shutdown
[root@ip50 ~]# vim /etc/redis/6379.conf 
... ...
bind 192.168.4.50
port 6350
... ...
[root@ip50 ~]# /etc/init.d/redis_6379 start
[root@ip50 ~]# redis-cli -h 192.168.4.50 -p 6350  -a 123456  //进入服务

端口、ip地址、密码修改后必须这样操做中止服务

[root@ip50 ~]# redis-cli -h 192.168.4.50 -p 6350 -a 123456 shutdown

修改启动脚本

[root@ip50 ~]# vim /etc/init.d/redis_6379 
... ...
PID=$(cat $PIDFILE)
            echo "Stopping ..."
            $CLIEXEC -p 6350 -h 192.168.4.50 -a 123456 shutdown
            while [ -x /proc/${PID} ]
            do
                echo "Waiting for Redis to shutdown ..."
                sleep 1
            done
            echo "Redis stopped"
... ...

[root@ip50 ~]# /etc/init.d/redis_6379 stop
[root@ip50 ~]# /etc/init.d/redis_6379 start

部署LNMP+Redis

1、部署LNMP请参考这篇文章 LNMP搭建

2、配置php支持redis

(1)安装redis服务
(2)配置php支持redis

[root@ip56 ~]# yum -y install php
[root@ip56 ~]# cd redis/lnmp/
[root@ip56 lnmp]# yum -y install php-devel-5.4.16-42.el7.x86_64.rpm
[root@ip56 lnmp]# tar -xf php-redis-2.2.4.tar.gz 
[root@ip56 lnmp]# cd phpredis-2.2.4/
[root@ip56 phpredis-2.2.4]# phpize   //扩展模块
[root@ip56 phpredis-2.2.4]# ./configure --with-php-config=/usr/bin/php-config
[root@ip56 phpredis-2.2.4]# make && make install
[root@ip56 ~]# ls /usr/lib64/php/modules/       //查看php支持哪些模块
[root@ip56 ~]# vim /etc/php.ini   //修改配置文件,添加redis模块
... ...
extension_dir = "/usr/lib64/php/modules/"
; On windows:
extension = "redis.so"
... ...
[root@ip56 ~]# systemctl restart php-fpm
[root@ip56 ~]# php -m | grep -i redis     //验证模块是否加载成功
[root@ip56 ~]# vim /usr/local/nginx/html/setRedis.php   //编写php链接本地redis的脚本

<?php
$redis = new redis();
$redis->connect('127.0.0.1',6379);
$redis->set('redistest','666666');
echo $redis->get('redistest');
?>

[root@ip56 ~]# curl http://localhost/setRedis.php  //调用php
[root@ip56 ~]# redis-cli //验证
127.0.0.1:6379> keys *
1) "redistest"
2) "x"