php redis 存储图片,PHP中使用redis – 存储session

存储结构和存储格式

redis使用了两种文件格式:全量数据和增量请求。全量数据格式是把内存中的数据写入磁盘,便于下次读取文件进行加载;增量请求文件则是把内存中的数据序列化为操作请求,用于读取文件进行replay得到数据,序列化的操作包括SET、RPUSH、SADD、ZADD。

redis的存储分为内存存储、磁盘存储和log文件三部分,配置文件中有三个参数对其进行配置。

save seconds updates,save配置,指出在多长时间内,有多少次更新操作,就将数据同步到数据文件。这个可以多个条件配合,比如默认配置文件中的设置,就设置了三个条件。

appendonly yes/no ,appendonly配置,指出是否在每次更新操作后进行日志记录,如果不开启,可能会在断电时导致一段时间内的数据丢失。因为redis本身同步数据文件是按上面的save条件来同步的,所以有的数据会在一段时间内只存在于内存中。

appendfsync no/always/everysec ,appendfsync配置,no表示等操作系统进行数据缓存同步到磁盘,always表示每次更新操作后手动调用fsync()将数据写到磁盘,everysec表示每秒同步一次。

Redis 安装—服务端

下载、安装

下载最新稳定版

cd /usr/local/src/

wget http://download.redis.io/redis-4.0.1.tar.gz

tar -zxvf redis-4.0.1.tar.gz

cd redis-4.0.1

make && make install

cp redis.conf /etc/redis.conf

修改配置文件

vim /etc/redis.conf \\修改如下内容

daemonize yes

logfile "/var/log/redis.log"

dir /data/redis_data/

appendonly yes

mkdir /data/redis_data

或者备份原redis.conf,新建配置文件写入以下内容

mv /etc/redis.conf /etc/redis.conf.bak

vim /etc/redis.conf

daemonize yes

pidfile "/var/log/redis.pid"

port 6379

timeout 300

loglevel debug

logfile "/var/log/redis.log"

databases 16

save 900 1

save 300 10

save 60 10000

rdbcompression yes

dbfilename dump.rdb

dir /data/redis_data

appendonly no

appendfsync always

redis.conf的主要配置参数的意义

daemonize:是否以后台daemon方式运行

pidfile:pid文件位置

port:监听的端口号

timeout:请求超时时间

loglevel:log信息级别

logfile:log文件位置

databases:开启数据库的数量

save * *:保存快照的频率,第一个*表示多长时间,第三个*表示执行多少次写操作。在一定时间内执行一定数量的写操作时,自动保存快照。可设置多个条件。

rdbcompression:是否使用压缩

dbfilename:数据快照文件名(只是文件名,不包括目录)

dir:数据快照的保存目录(这个是目录)

appendonly:是否开启appendonlylog,开启的话每次写操作会记一条log,这会提高数据抗风险能力,但影响效率。

appendfsync:appendonlylog如何同步到磁盘(三个选项,分别是每次写都强制调用fsync、每秒启用一次fsync、不调用fsync等待系统自己同步)

启动redis

redis-server /etc/redis.conf

less /var/log/redis.log //查看日志如果有警告就按照它解决https://blog.51cto.com/chenshengsheng/2115482

killall redis-server

redis-server /etc/redis.conf

我们也可以编写一个redis启动脚本。

vi /etc/init.d/redis //加入如下内容:

#!/bin/sh

#

#redis init file for starting up the redis daemon

#

#chkconfig: - 20 80

#description: Starts and stops the redis daemon.

#Source function library.

. /etc/rc.d/init.d/functions

name="redis-server"

basedir="/usr/local/redis"

exec="$basedir/bin/$name"

pidfile="$basedir/var/redis.pid"

REDIS_CONFIG="$basedir/etc/redis.conf"

[ -e /etc/sysconfig/redis ] && . /etc/sysconfig/redis

lockfile=/var/lock/subsys/redis

start() {

[ -f $REDIS_CONFIG ] || exit 6

[ -x $exec ] || exit 5

echo -n $"Starting $name: "

daemon --user ${REDIS_USER-redis} "$exec $REDIS_CONFIG"

retval=$?

echo

[ $retval -eq 0 ] && touch $lockfile

return $retval

}

stop() {

echo -n $"Stopping $name: "

killproc -p $pidfile $name

retval=$?

echo

[ $retval -eq 0 ] && rm -f $lockfile

return $retval

}

restart() {

stop

start

}

reload() {

false

}

rh_status() {

status -p $pidfile $name

}

rh_status_q() {

rh_status >/dev/null 2>&1

}

case "$1" in

start)

rh_status_q && exit 0

$1

;;

stop)

rh_status_q || exit 0

$1

;;

restart)

$1

;;

reload)

rh_status_q || exit 7

$1

;;

force-reload)

force_reload

;;

status)

rh_status

;;

condrestart|try-restart)

rh_status_q || exit 0

restart

;;

*)

echo $"Usage: $0 {start|stop|status|restart|condrestart|try-restart}"

exit 2

esac

exit $?

############到此结束

创建用户

因为脚本启动时以redis用户启动的,所以需要增加redis用户

useradd -s /sbin/nologin redis

chmod 755 /etc/init.d/redis

/etc/init.d/redis start

安装redis.so扩展模块-客户端

cd /usr/local/src

wget https://coding.net/u/aminglinux/p/yuanke_centos7/git/raw/master/21NOSQL/phpredis.zip

unzip phpredis.zip

cd phpredis-develop

/usr/local/php/bin/phpize

./configure --with-php-config=/usr/local/php/bin/php-config

make &make install

vim /usr/local/php.ini//增加extension=redis.so

/usr/local/php/bin/php -m|grep redis//看是否有redis模块

重启php-fpm服务

vim /usr/local/php-fpm/etc/php.ini//更改或增加

session.save_handler = "redis"

session.save_path = "tcp://127.0.0.1:6379"

或者apache虚拟主机配置文件中也可以这样配置:

php_value session.save_handler " redis"

php_value session.save_path " tcp://127.0.0.1:6379"

或者php-fpm配置文件对应的pool中增加:

php_value[session.save_handler] = redis

php_value[session.save_path] = " tcp://127.0.0.1:6379 "

测试

客户端:

wgt http://study.lishiming.net/.mem_se.txt

mv .mem_se.txt session.php 把session放到网站根目录

其中session.php内容可以参考https://coding.net/u/aminglinux/p/yuanke_centos7/git/blob/master/21NOSQL/session.php

# curl localhost/session.php

[root@localhost phpredis-develop]# curl localhost/session.php

1526157029
1526157029
edi5pqn9jtu1ndulfe8the8pi0

[root@localhost phpredis-develop]# curl localhost/session.php

1526157032
1526157032
pbg5h030i98qk18ovfjj5ggg51

服务端:

# redis-cli //命令行连接redis-cli,也可以查看到该key以及对应的值

127.0.0.1:6379> keys *

1) "PHPREDIS_SESSION:edi5pqn9jtu1ndulfe8the8pi0"

2) "PHPREDIS_SESSION:pbg5h030i98qk18ovfjj5ggg51"

测试结果:客户端和服务的键值是相对应的

如果想用php连接redis cluster,需要使用predis扩展

安装方法类似phpredis,predis扩展地址https://github.com/nrk/predis

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值