Redis是一款高性能分布式内存数据库,支持数据持久化(可以把内存里的数据保存到硬盘中),支持list、hash、set、zset数据类型,支持master-salve模式(主从)。
部署redis服务
1、下载redis源码包,源码编译安装
tar zxf redis-4.0.8.tar.gz
cd redis-4.0.8
make
make install
2、初始化配置(redis服务端口号,主配置文件,数据库目录,pid文件,启动程序)
./utils/install_server.sh #初始化
3、启动,停止服务(/etc/init.d/redis_6379 此文件是安装redis后自带脚本,用它可以启动停止服务,也可查看服务状态)
/etc/init.d/redis_6379 start
/etc/init.d/redis_6379 stop
/etc/init.d/redis_6379 status
redis服务的启动和停止都是通过脚本来执行的,当修改了配置文件里面的 地址 端口 密码 则在/etc/init.d/redis_6379 脚本中需要修改这些参数,因为这个脚本也是使用redis的默认参数来启动或则停止的。
redis基本命令
redis-cli #连接redis服务
备注:redis-cli 不写任何参数默认使用本地环回口地址127.0.0.1和默认端口6379连接,如果修改了配置文件里的监听地址和端口则需要跟相应的参数来连接redis服务。比如我们修改redis可以允许其它用户可以使用6352端口远程登陆,则修改配置文件里的 bind 192.168.4.52 和 port 6352 ,使用 redis-cli -h 192.168.4.52 -p 6352 来登陆,如使用了密码则需加 -a选项 后面跟密码登陆。
ping #测试连接是否成功(返回pong说明成功)
set name lisi #存储name为lisi
get name #获取name的值
select 2 #切换到2库(redis默认有16个库 0~15)
keys * #打印所有变量
keys a? #打印指定表量(?代表一个字符)
EXISTS name #测试name是否存在(存在显示1,不存在显示0)
ttl name #查看name的生存时间(就是有效期是多久)
type name #查看name的类型
move name 2 #把name移动到2库里
expire name 10 #设置name的有效时间为10秒
del name #删除name变量
flushall #删除所有变量
save #保存内存的数据到硬盘
shutdown #关闭redis服务
配置文件解析
/etc/redis/6379.conf
prot 6379 #监听端口
bind 127.0.0.1 #监听ip地址,如果需要远程登陆需要改成本地网卡的ip地址,不能使用本地回环地址;如有多个地址用空格隔开
tcp-backlog 511 #redis允许tcp连接的总数(已建立连接的个数+正在连接的个数)
timeout 0 #连接超时时间(0为永不不超时,timeout 30 代表30秒就端开)
tcp-keepalive 300 #长连接时间(每隔300秒检查一次连接是否还在)
daemonize yes #守护进程方式运行(就是一直在内存里运行,no是当连接的时候才会在内存里运行)
databases 16 #数据库个数
logfile /var/log/redis_6379.log #pid文件
maxclients 10000 #redis服务能够处理并发连接数
dir /var/lib/redis/6379 #数据库目录(redis数据文件保存在此目录下,名字为dump.rdb)
requirepass 123456 #设置连接redis服务的密码(默认不设置,因为redis是用内存存储数据,它是架设在linux上,此服务是通过防火墙来控制的,它不负责安全)
内存清除策略
– volatile-lru 最近最少使用 (针对设置了过期时间的 key )
– allkeys-lru 删除最少使用的 key
– volatile-random 在设置了过期的 key 里随机移除
– allkeys-random 随机移除 key
– volatile-ttl (minor TTL) 移除最近过期的 key
– noeviction 不删除 写满时报错
选项默认设置
– maxmemory <bytes> // 最大内存(默认单位是bytes)
– maxmemory-policy [noeviction] // 定义使用的策略 [ ] 里的策略可修改
– maxmemory-samples 5 // 选取模板数据的个数(针对 lru 和 ttl 策略) 数字越大选的越精准,对cpu消耗就大
部署LNMP+Redis
1、搭建LNMP
a、源码编译nginx
b、并配置nginx支持动态页面
location ~ \.php$ {
root html;
fastcgi_pass 127.0.0.1:9000;
fastcgi_index index.php;
fastcgi_param SCRIPT_FILENAME $document_root/$fastcgi_script_name; #SCRIPT_FILENAME 这里面是存客户端访问的php文件名叫什么, $document_root 告诉php要解释那个网页文件,获取客户端访问的页面
include fastcgi_params;
}
c、安装mysql
d、安装php-fpm
2、部署PHP支持Redis
a、安装redis服务
b、默认php是不能连接redis,需要安装支持php连接redis模块的包php-redis
先安装php-devel软件包会有/usr/bin/phpize这个命令,然后执行/usr/bin/phpize会在/usr/bin/下生成php-config配置文件,因为后面配置php-redis需要获取php的配置信息也就是这个配置文件
php-redis是源码包,需源码编译安装
tar -zxf php-redis-2.2.4.tar.gz
cd php-redis-2.2.4/
./configure --with-php-config=/usr/bin/php-config #配置支持php-config的配置
make
make install
安装完成之后会输出模块安装路径信息,我们修改php配置文件时需要写此路径,告诉它在此路径下找我们安装的模块。
c、测试配置
php -m #产看php支持的模块
修改php配置文件
vim /etc/php/ini
extension_dir = "/usr/bin/php-config" #到那个路径下找模块
extension = "redis.so" #模块名叫什么
重启php-fpm服务测试
php连接redis服务php脚本页面
<?php
$redis = new redis(); #生成redis类的对象,生成之后可以用这个类里面的方法
$redis->connect('127.0.0.1',6379); #连接redis的ip地址端口号
$redis->set('redistest','666666'); #给redistest赋值为666666
echo $redis->get('redistest'); #获取redistest的值
?>