目录
4、配置文件解析vim /etc/redis/6379.conf
1、数据库类型
1-1、RDBMS
• 关系数据库管理系统
– Relational Database Management System
– 数据按照预先设置的组织结构,存储在物理存储介质上。
– 数据之间可以做关联操作
主流的RDBMS软件
- – Oracle
- – DB2
- – WS-sqlserver
- – MySQL
1-2、NoSQL
• NoSQL(NoSQL = Not Only SQL )
– 意思是"不仅仅是SQL“
– 泛指非关系型数据库
– 不需要预先定义数据存储结构
– 表的每条记录都可以有不同的类型和结构
NoSQL主流服务软件
- – Redis
- – MongoDB
- – Memcached
- – CouchDB
- – Neo4j
- – FlockDB
2、部署redis服务
2-1、Redis介绍
• Redis
– Remode DIctionary Server(远程字典服务器)
– 使用C语言编写的,遵守BSD的开源软件
– 是一款高性能的(Key/Values)分布式内存存储服务器
– 并支持数据持久化的NoSQL数据库服务软件
– 中文网站www.redis.cn
Redis特点:
- – 支持数据持久化,可以把内存里数据保存到硬盘中
- – 不仅仅支持key/values类型的数据,同时还支持list hash set zset 类型
- – 支持master-salve 模式数据备份
2-2、安装软件包
rpm -q gcc gcc-c++---------检查有没有安装gcc gcc-c++
yum -y install gcc gcc-c++----若没装则装一下
# tar -xzf redis-4.0.8.tar.gz
# cd redis-4.0.8------进入redis目录
#make----编译
#make install---安装
2-3、初始配置
[root@host151 redis-4.0.8]# ls --------编译安装完之后redis目录下详情
00-RELEASENOTES COPYING Makefile redis.conf runtest-sentinel tests
BUGS deps MANIFESTO runtest sentinel.conf utils
CONTRIBUTING INSTALL README.md runtest-cluster src
[root@host151 redis-4.0.8 ]#./utls/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] ---选择redis服务器软件存储路径
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----redis-server程序
Cli Executable : /usr/local/bin/redis-cli-----redis-cli程序
Is this ok? Then press ENTER to go on or Ctrl-C to abort.-----回车以继续或Ctrl-C退出
Copied /tmp/6379.conf => /etc/init.d/redis_6379-----redis启动脚本
Installing service...
Successfully added to chkconfig!
Successfully added to runlevels 345!
Starting Redis server... -----------正在启动redis服务
Installation successful! -----------安装成功
-----------------------------服务默认初始化后就已经启动了
2-4、启动停止程序及查状态
[root@host151 utils]# /etc/init.d/redis_6379 stop--------停止服务
Stopping ...
Redis stopped
[root@host151 utils]# /etc/init.d/redis_6379 status------查看服务是否运行
cat: /var/run/redis_6379.pid: 没有那个文件或目录
Redis is running ()---------------括号中为空则为没运行
[root@host151 utils]# /etc/init.d/redis_6379 start-------启动服务
Starting Redis server...
[root@host151 utils]# /etc/init.d/redis_6379 status------查看服务是否运行
Redis is running (6744)
[root@host151 utils]# ss -utnlp | grep 6379-----查看相关的服务端口号是否已启动
tcp LISTEN 0 128 127.0.0.1:6379 *:* users:(("redis-server",pid=6744,fd=6))
2-5、连接redis服务
[root@host151 utils]# redis-cli---------默认只能本机登陆
127.0.0.1:6379> exit
[root@host151 utils]#
2-6、修改服务使用的ip地址和端口:
scp /usr/local/bin/redis-cli 192.168.4.50:/usr/local/bin/----将redis-cli命令拷贝到客户端50主机
/etc/init.d/redis_6379 stop-----先停服务
vim /etc/redis/6379.conf----修改主配置文件
70 bind 192.168.4.151-------将默认的127.0.0.1修改为192.168.4.151
91 # Accept connections on the specified port, default is 6379 (IANA #815344).-----默认端口是6379
92 # If port 0 is specified Redis will not listen on a TCP socket.
93 port 6351-----将端口号修改为一个好记的端口,不修改也可以
/etc/init.d/redis_6379 start----修改完后起服务
[root@host151 utils]# redis-cli -h 192.168.4.151 -p 6351-------服务端重新测试连接服务
192.168.4.151:6351> exit
[root@host50 ~]# redis-cli -h 192.168.4.151 -p 6351------客户端测试连接服务
192.168.4.151:6351> exit
修改主配置文件后:不能再用/etc/init.d/redis_6379 stop
需要用redis-cli -h 192.168.4.151 -p 6351 shutdown来停服务
或者:
vim /etc/init.d/redis_6379-------再改redis启动脚本
5 CLIEXEC=/usr/local/bin/redis-cli
6 PIDFILE=/var/run/redis_6379.pid
7 CONF="/etc/redis/6379.conf"
8 REDISPORT="6351"--------修改端口为6351
43 $CLIEXEC -h 192.168.4.151 -p $REDISPORT shutdown
就可以再用/etc/init.d/redis_6379 stop
2-7、连接服务时使用密码
• 设置密码
/etc/init.d/redis_6379 stop-----先停服务
– vim /etc/redis/6379.conf
501 # requirepass foobared---修改前
501:requirepass 123456---修改后
/etc/init.d/redis_6379 start----修改完后起服务
– [root@localhost redis-4.0.8]# redis-cli -h 192.168.4.151 -p 6351------服务端重新测试连接服务
– 127.0.0.1:6379> ping
– (error) NOAUTH Authentication required.
– 127.0.0.1:6379> auth 123456 -----输入密码
– OK
– 127.0.0.1:6379> ping
– PONG
– 127.0.0.1:6379>
注意这里相关参数的定义:
-p 指定端口
-a 指定密码
-h 指定ip
注意:改变端口号、密码、ip:脚本停止不了解决办法
redis-cli -p 6345 shutdown
改变脚本
vim /etc/init.d/redis_6379
43: $CLIEXEC -h 192.168.4.52 -p 6351 -a 123456 shutdown
3、redis常用操作指令
1.– Set keyname keyvalue -----------为keyname赋值
2.– Set keyname keyvalue EX 秒数--------- 赋值时指定有效存在时间
3.– get keyname ---------列出赋值
4.– Select 数据库编号0-15------------切换库(共16个)
5.– Keys * -------------列出当前库下所有keyname变量
6.– Keys a? ------------列出指定变量
7.– Exists keyname -----测试是否存在,0为不存在,1为存在
8.– ttl keyname --------查看生存时间 -1是永不过期,-2是过期
9.– type keyname -------查看keyname类型,注意这里的数字也是字符类型
10.– move keyname dbname------移动变量从当前库到目标库,该变量会从此库移除
11.– expire keyname 10 ------设置变量有效存在时间,单位为秒
12.– del keyname ----------删除变量
13.– flushall----------删除所有变量,删除内存中所有数据,即清楚所有库的数据
14. -flushdb --------只删除当前库的数据
15.– save --------保存变量存储到数据库目录中 硬盘里
16.– shutdown ------关闭服务
3-1、向redis服务存取数据的常用命令
[root@host50 ~]# redis-cli -h 192.168.4.51 -p 6351
192.168.4.51:6351> set name bob
192.168.4.51:6351> get name
192.168.4.51:6351> keys *
192.168.4.51:6351> set age 18
192.168.4.51:6351> keys *
192.168.4.51:6351> select 3
192.168.4.51:6351> select 0
192.168.4.51:6351> keys *
192.168.4.51:6351> keys a?
192.168.4.51:6351> keys a??
192.168.4.51:6351> EXISTS school
192.168.4.51:6351> EXISTS name
192.168.4.51:6351> ttl age
192.168.4.51:6351> EXPIRE age 10
192.168.4.51:6351> ttl age
192.168.4.51:6351> type name
192.168.4.51:6351> move name 1
4、配置文件解析vim /etc/redis/6379.conf
4-1、数据单位
12 # 1k => 1000 bytes
13 # 1kb => 1024 bytes
14 # 1m => 1000000 bytes
15 # 1mb => 1024*1024 bytes
16 # 1g => 1000000000 bytes
17 # 1gb => 1024*1024*1024 bytes
4-2、常用配置选项
- – port 6379 ---------------指定访问时访问的端口
- – bind 127.0.0.1 ----------访问时访问的IP地址
- – tcp-backlog 511 ---------tcp连接总数
- – timeout 0 ------连接超时时间,就是连接成功后客户端闲置x秒后就会自动断开与redis的连接,因为永远不会闲置0秒,所以永不超时
- – tcp-keepalive 300 -------长连接时间
- – daemonize yes -----------以守护进程方式运行
- – databases 16 ------------数据库个数
- – pidfile /var/run/redis_6379.pid 进程PID
- – logfile /var/log/redis_6379.log 日志文件
- – maxclients 10000 --------并发连接数量
- – dir /var/lib/redis/6379 -----数据库目录
- – requirepass foobared ---------客户端连接服务器后需要先输入密码,再做其他操作
- - masterauth <master-password> 主从认证的密码
- - slaveof <masterip> <masterport> 设置主服务器IP及端口,主动与主服务器同步数据
4-3、内存管理
• 内存清除策略
- – volatile-lru 最近最少使用 (针对设置了过期时间的key)
- – allkeys-lru 删除最少使用的keyname
- – volatile-random 在设置了过期的key里随机移除
- – allkeys-random 随机移除keyname
- – volatile-ttl (minor TTL) 移除最近过期的key
- – noeviction 永远不删除 写满时报错
• 选项默认设置
- – maxmemory <bytes> //最大内存
- – maxmemory-policy noeviction //定义使用的策略
- – maxmemory-samples 5 //选取模板数据的个数(针对lru 和 ttl 策略)
5、部署LNMP+redis或LAMP
5-1、 部署LAMP
[root@host50 ~]# rpm -q httpd php php-mysql
httpd-2.4.6-67.el7.x86_64----apache服务
php-5.4.16-42.el7.x86_64-----php解释器
php-mysql-5.4.16-42.el7.x86_64----检查用来实现php连接mysql的软件有没有安装
[root@host50 ~]# rpm -qa | grep -i mysql
]# systemctl start httpd ; systemctl enable httpd
]# systemctl start mysqld ; systemctl enable mysqld-----起服务
~]# mysql -uroot -p123456----测试mysql
mysql>
5-2、安装源码nginx
rpm -q gcc gcc-c++ pcre-devel zlib-devel------检查依赖包是否已安装
useradd nginx-----创建nginx用户
./configure --prefix=/usr/local/nginx --user=nginx --group=nginx ----自定义相关参数
make && make install-----编译及安装
- 测试nginx服务是否ok
[root@host51 nginx-1.12.2]# netstat -utnlp | grep :80
[root@host51 nginx-1.12.2]# /usr/local/nginx/sbin/nginx
[root@host51 nginx-1.12.2]# netstat -utnlp | grep :80
tcp 0 0 0.0.0.0:80 0.0.0.0:* LISTEN 3130/nginx: master
[root@host51 nginx-1.12.2]# echo 234 > /usr/local/nginx/html/a.html
[root@host51 nginx-1.12.2]# curl http://localhost/a.html
234
- 安装fastcgi
]# rpm -ivh php-fpm-5.4.16-42.el7.x86_64.rpm
]# systemctl start php-fpm.service
]# systemctl enable php-fpm.service
]# netstat -utnlp | grep :9000
修改配置文件以实现php连接mysql
vim /usr/local/nginx/conf/nginx.conf
65 location ~ \.php$ {
66 root html;
67 fastcgi_pass 127.0.0.1:9000;
68 fastcgi_index index.php;
69 # fastcgi_param SCRIPT_FILENAME /scripts$fastcgi_script_name;
70 # include fastcgi_params;
71 include fastcgi.conf;
72 }
:wq
- • 启动nginx服务
[root@host51 lnmp]# /usr/local/nginx/sbin/nginx -s stop
[root@host51 lnmp]# /usr/local/nginx/sbin/nginx
[root@host51 lnmp]# vim /usr/local/nginx/html/test.php
<?php
echo "hello boy";
?>
:wq
[root@host51 lnmp]# curl http://localhost/test.php
hello boy
6、配置PHP支持redis
php支持redis服务 51主机 LNMP
配置步骤:
6-1、 装包
]#rpm -q gcc gcc-c++------检查是否安装
]#yum -y install autoconf automake---安装依赖包
]#rpm php-devel-5.4.16-42.el7.x86_64.rpm ---安装依赖包
]#phpize-------因为php需要使用phpize安装php扩展,所以phpize必须ok,而phpize要ok必须安装上面的软件包
Configuring for:
PHP Api Version: 20100412
Zend Module Api No: 20100525
Zend Extension Api No: 220100525
安装php支持redis的源码包
]#tar -zxvf php-redis-2.2.4.tar.gz
]#cd phpredis-2.2.4/
]#./configure --with-php-config=/usr/bin/php-config
]#make
]# make install
Installing shared extensions: /usr/lib64/php/modules/
]#ls /usr/lib64/php/modules/
redis.so
6-2、修改PHP程序的配置文件,调用模块
修改php配置文件
]# vim /etc/php.ini
728 extension_dir = "/usr/lib64/php/modules/"-----扩展模块所在目录
730 extension = "redis.so"---扩展模块名
:wq
[root@host151 phpredis-2.2.4]# systemctl restart php-fpm.service----重起服务以加载配置文件
[root@host151 phpredis-2.2.4]# php -m | grep -i redis-----查看php支持的模块(m)中有没有redis
redis
6-3、 编写php脚本(连接redis服务存储数据)
vim /usr/local/nginx/html/redis.php
<?php
$redis = new redis();
$redis->connect('192.168.4.51',"6351");
$redis->auth('123456');
$redis->set('age','60');
echo $redis->get('age');
?>
:wq
6-4、 测试配置
在客户端访问51 网站服务器的redis.php 网页文件
连接51主机的redis服务查看存储数据是否有名叫aga的变量名,且其值为60。