redis 学习(2)
一,安装redis 扩展
php 官网 redis扩展下载地址 http://pecl.php.net/package/redis
下载对应php版本(x64,x86 , hts ,ts,windows ,linux)的redis扩展
复制包里的 php_redis.dll 到 php>ext 文件下
php.ini 关联 php_redis.dll 文件
phpinfo 查看是否成功
二,php 使用redis
/* redis */ $redis = new Redis(); $redis->connect('localhost'); // 连接redis 服务器 $redis->auth('mypass'); // 设置密码 如果有的话 $redis->set('username','narsu'); echo $redis->get('username'); $redis->hmset('user:id',['username'=>'narsu','age'=>'28','email'=>'nalasu@163.com']);
三,持久化机制
1.快照方式持久化
(1).每隔一段时间redis 会将 内存中的数据整体存储到硬盘中
(2).默认开启,有触发条件
redis.conf
save 900 1 // 900秒内 超过1个key 被修改,则发起快照
save 300 10 // 300 秒内 超过10个key被修改,发起快照
save 60 1000 // 60 秒 超过 10000个key被修改 发起快照

(3).硬盘数据文件名默认是 dump.rdb 可修改
redis.conf dbfilename 修改

(4).手动保存
redis-cli 登录状态 下
bgsave // 保存
未登录下
./bin/redis-cli -a mypass bgsave
(5).缺点
redis意外挂掉将丢死最后一次快照保存之后的所有修改
(6).其他配置
stop-writes-on-bgsave-error yes // 后台备份进程出错时,主进程是否停止写入
rdbcompression yes // 导出的rdb文件是否压缩
Rdbchecksum yes // 导入rdb 回复数据时 是否校验rdb的完整性
dbfilename dump.db // 导出的rdb 文件名
dir ./ // rdb的路径
2.append-only-file 追加方式持久化 AOF
把用户执行的每个“写”指令(添加,修改,删除)都备份到文件中,还原数据的时候 就执行具体指令
(1)开启 // redis.conf
appendonly yes // 启用
appendfielname appendonly.aof // 保存命令的文件
(2)触发条件
appendfsync always // 每次收到写入命令就执行写入磁盘(最慢最完全持久化)不推荐
appendfsync everysec // 每分钟执行 折中方案 推荐
appendfsync no // 完全依赖 os,性能最好,持久化没保证
(3)aof文件的重写
如某个 string 被重复定义多次 aof 会记住每个命令 从而 文件会很大
如 incr number 10次 压缩成 set number 11
执行重写条件
auto-aof-rewrite-percentage 100 // aof 文件大小比上次重写时的大小增长率100% 时重写
auto-aof-rewrite-min-size 64mb // aof 文件至少64mb时重写
no-appendfsync-on-rewrite yes // 正在导出rdb快照过程中 是否停止同步 aof
手动执行重写
登录状态 bgrewriteaof
未登录 ./bin/redis-cli -a mypass bgrewriteaof
注:aof 和rdb文件都在的情况下优先用aof 恢复数据
重写就是把内存中的数据逆化成命令,写入到aof日志里
推荐两种持续化方案都使用
rdb 恢复数据快于 aof // 快照恢复速度快但是会被aof覆盖 同时开启 以aof为准
四,外网访问服务器redis
1.开放端口
2.redis.conf bind 127.0.0.1 // 只允许127.0.0.1访问 注释掉
3.redis.conf protected-mode yes // 禁止外网访问 改为no 允许

浙公网安备 33010602011771号