您的位置:首页 > 数据库 > Redis

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

JReno 2019-05-21 17:03 246 查看 https://blog.csdn.net/jreno/ar

数据库类型

RDBMS

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

RDBMS服务软件

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

NoSQL

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

NoSQL服务软件

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

部署Redis服务

Redis介绍

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

一、装包

从源码安装

[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

二、初始化配置

配置服务运行参数

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

三、启动/停止服务

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

(1)启动服务

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

(2)停止服务

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

四、连接Redis数据库服务

访问redis服务

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

五、常用操作指令

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

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

二、配置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"
标签: