数据库类型
RDBMS
- 关系型数据库管理系统
- Relational Database Management System
- 按照预先设置的组织结构,将数据存储在物理介质是上
- 数据之间可以做关联操作
RDBMS服务软件
- 主流的RDBMS软件
Oracle、DB2、MS SQL Server、MySQL、MariaDB
NoSQL
- NoSQL(NoSQL=Not Only SQL)
- 意思是“不仅仅是SQL”
- 泛指非关系型数据库
- 不需要预先定义数据存储结构
- 表的每条记录都可以有不同的类型和结构
NoSQL服务软件
- 主流软件
Redis、MongoDB、Memcached、CouchDB、Neo4j、FlockDB
部署Redis服务
Redis介绍
- Redis Remote Dictionary Server(远程字典服务器)
- 是一款高性能的(Key/Values)分布式内存数据库
- 支持数据持久化,可以把内存里的数据保存到硬盘中
- 也支持list、hash、set、zset 数据类型
- 支持master-salve模式数据备份
- 中文网站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 | 数据目录 |
内存管理
- 内存清除策略
volatile-lru
//最近最少使用(针对设置了TTL的key)allkeys-lru
//删除最少使用的keyvolatile-random
//在设置了TTL的key里随机移除allkeys-random
//随机移除keyvolatile-ttl (minor TTL)
//移除最近过期的keynoeviction
//不删除,写满时报错
- 选项默认设置
maxmemory <bytes>
//最大内存maxmemory-policy noeviction
//定义使用策略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"