Redis安装使用
下载地址
Redis简介
说明
1.也是类似于memcached的Key-Value存储机制 2.是非关系型数据库的一种 3.官网:redis.io,中文网:redis.cn
特点
1.能够持久化存储数据 2.支持更多的数据类型 3.支持集群,主从同步
优点
1.具有memcached的所有特征,但是比其更强大,是超级增强版的memcached 2.可以做到数据的安全存储,能够进行持久化存储,支持事务 3.拥有更多的数据类型,可以进行复杂的运算 4.可以胜任memcached不能完成的更加复杂的业务场景
Redis安装
解压:tar -zxvf redis-4.0.1.tar.gz
复制:cp -R redis-4.0.1 /usr/local/redis
进入:cd /usr/local/redis
安装:make install
服务:
cd /usr/local/redis/src,该目录下有两个可执行文件,若有必要可以将改目录添加到$PATH环境变量中 客户端:redis-cli 服务端:redis-server 启动测试:./redis-server #默认不会后台执行,需要修改配置文件
修改配置
cd /usr/local/redis cp redis.conf redis_6379.conf #拷贝配置文件 修改配置文件redis_6379.conf为:daemonize yes #后台执行 cd utils #进入目录 cp redis_init_script redis_init_script_6379 #拷贝启动脚本 修改启动脚本redis_init_script_6379如下: REDISPORT=6379 EXEC=/usr/local/redis/src/redis-server CLIEXEC=/usr/local/redis/src/redis-cli CONF="/usr/local/redis/redis_${REDISPORT}.conf" ./redis_init_script_6379 start #启动服务
开机启动
修改用户开机启动配置文件:/etc/rc.local /usr/local/redis/utils/redis_init_script_6379 start
服务测试
1.查看进程:ps aux | grep redis 2.使用客户端连接 /usr/local/redis/src/redis-cli 连接参数: --help:获取帮助 -h:指定主机 -p:指定端口号 -a:指定密码 redis-cli [-h 127.0.0.1] [-p 6379] 127.0.0.1:6379> ping PONG quit #退出 3.密码管理,默认是没有密码的,使用密码有以下两种方式 1.单次有效,通过命令设置 获取密码:config get requirepass 设置密码:config set requirepass 123456 密码授权:auth 123456 2.永久生效,修改配置文件 /usr/local/redis/redis_6379.conf requirepass 123456 说明:不指定密码也可以连接成功,但是什么权限都没有
Redis命令
常用:
ping:测试连接情况,返回PONG表示正常
quit:退出
auth:指定密码
select:选择库,总共16个,0~15,默认在第0个
info:查看服务器信息
command:查看能够使用的命令
flushdb:清空当前库
flushall:清空所有库
save:前台持久化操作
bgsave:后台持久化操作
exists:判断键是否存在
del:删除指定的键
字符串(string)
get:获取
set:设置
getset:获取后设置
mset:设置多个
mget:获取多个
incr:递增(加1)
incrby:指定幅度的递增
incrbyfloat:指定幅度的递增一个浮点数
decr:递减(减1)
decrby:指定幅度的递减
append:追加
哈希(hash)
hdel:删除
hexists:判断是否存在
hget:获取
hgetall:获取所有
hkeys:获取所有的键
hvals:获取所有的值
hlen:获取数量
hset:设置
hmget:获取多个
hmset:设置多个
列表(list)
lpush:从左边插入数据
lrange:显示某个范围内的数据,lrange m6 0 -1,表示显示全部数据
lpop:从左边弹出数据
rpush:从右边插入数据
rpop:从右边弹出数据
llen:显示个数
无序集合(set):不能重复
sadd:添加数据
scard:个数统计
sdiff:计算差集
sinter:计算交集
sismember:判断数据是否在集合中
smembers:返回所有元素
smove:移动元素
spop:随机移除元素,可以指定个数
srandmember:随机返回一个元素,但是不移除
srem:移除元素
有序集合(sorted set)
zadd:添加元素
zcard:统计元素
zcount:指定区间统计
zrange:返回索引区间内的值
。。。。
安装phpredis
解压:unzip phpredis-php7.zip
进入:cd phpredis-php7
解压:phpize
配置:./configure --with-php-config=/usr/local/php7/bin/php-config
编译:make
安装:make install
修改php配置文件:将上一步编译的动态库添加到/usr/local/php7/etc/php.ini
extension=/usr/local/php7/lib/php/extensions/no-debug-non-zts-20160303/redis.so
重启PHP服务:service php-fpm restart
测试:写一个phpinfo(),查看是否有redis扩展
代码测试:
<?php
$redis = new Redis();
$redis->connect('127.0.0.1', 6379);
$redis->auth('123456');
$redis->set('test','ok');
可以参考github或提供的中文手册
持久化存储
redis持久化存储有两种方式:RDB和AOF。RDB是写存储文件,AOF是将执行的命令记录到文件中;若没有进行持久化操作,redis与memcached是一样的,相当于基于内存数据库。
RDB,Redis DataBase,将数据写入临时文件,做持久化操作时将临时文件替换原有的。
优点:持久化操作会单独启动一个子进程,主进程不会对其有任何IO,可以保证数据的安全可靠 缺点:持久化操作是有间隔的,那么在此期间出现问题,可能会导致数据的丢失。因此,该方式不严谨 配置: dbfilename dump.rdb #保存的数据库 dir ./ #保存位置 save 900 1 #更改了1个key,900秒后自动持久化存储 save 300 10 #更改了10个key,300秒后自动持久化存储 save 60 10000 #更改了10000个key,60秒后自动持久化存储 说明:使用save进行save进行前台保存,使用bgsave进行后台保存,重启服务即可从dump.rdb中恢复数据
AOF,Append Only File,是将执行的命令记录下来,重新执行命令即可完成数据恢复
优点:可以保持更高的数据完整性 缺点:AOF比RDB文件大得多,且恢复慢 配置: appendonly yes #开关,默认是关闭的 appendfilename "appendonly.aof" #保存文件 appendfsync everysec|always|no #同步频率,每秒|立即|从不(完全依赖OS) 自动重写配置:两个条件同时满足才会触发AOF重写操作 auto-aof-rewrite-percentage 100 #新命令占原文件的百分比 auto-aof-rewrite-min-size 64mb #本次重写的最小数据量 手动重写:bgrewriteaof 说明:数据恢复时首先从AOF,若没有开启则从RDB中恢复,两者同时使用没有冲突
Redis保存Session
session.save_handler = redis
session.save_path = "tcp://127.0.0.1:6379?auth=123456"
说明:auth是有密码才需要,若有多台服务器,可以使用weight参数指定权重
Redis主从复制
主机配置:
#bind 127.0.0.1 #注释掉
从机配置:
slaveof 主机IP 主机端口
masterauth 主机li连接密码
Redis与Memcached对比
对比项 | memcached | redis |
---|---|---|
持久化存储 | 不支持 | 支持 |
库支持 | 不支持 | 支持 |
数据类型 | 简单 | 多种 |
主从复制 | 不支持 | 支持 |
集群 | 不支持 | 支持 |
事务 | 不支持 | 支持 |
线程 | 多线程 | 单线程 |
最大item | 最小1K,最大128M,默认1M | 512M |
最大Key | define KEY_MAX_LENGTH 250 | 512M |