介绍

Redis是一个开源的key-value类型的数据库缓存和存储系统,同时Redis提供了丰富的数据结构用来支持多样的业务chan场景,比如hashes,lists,sets还有ordered sets及其他类型。云数据库Redis提供了兼容Redis协议的数据库服务,提供单机和集群两种模式,提供了全套的容灾切换、故障迁移、在线扩容、性能优化的数据库解决方案。
本文我们将介绍如何使用阿里云Redis服务作为PHP服务的session存储。PHP的session存储作为php会话信息的存储单元,默认的PHP使用文件来存储session会话信息。同时PHP支持使用扩展的存储单元来作为会话信息的存储,通过扩展的session能够满足多台PHP服务器共享会话信息。

架构优势

阿里redis 红包 阿里redis价格_PHP

  • Redis云服务主从版本默认双机热备
  • Redis云服务主从版本兼容性高,支持lua、事物,并且兼容Redis3.0的地理位置GEO计算
  • Redis云服务性能优越,最大性能可以达到10WQPS
  • Redis云服务主从版本数据持久化,每秒AOF Fsync,并且支持备份恢复
  • Redis云服务主从版本256MB内存小性能高,性价比非常适合小内存的业务场景
  • Redis云服务主从版本支持动态扩容,用户在业务增长之后可以动态升级

购买Redis云服务

  • 访问Redis控制台,点击创建实例
  • 选择256MB按量付费,每个用户都能享受一次99元包年256MB的折扣

阿里redis 红包 阿里redis价格_git_02

测试Redis云服务

Redis云服务提供了文本协议进行访问,我们可以通过telnet进行服务的简单测试,实例的域名可以在控制台点击实例详情页面查看到,测试方法如下:

[root@ECS~]# telnet HOST 6379
Trying IP...
Connected to HOST.
Escape character is '^]'.
auth PASSWORD            #回车
+OK                      #回复
ping                     #回车
+PONG                    #回复
quit                     #回车
+OK                      #回复
Connection closed by foreign host.

如果购买的实例能够按上面正常回复说明购买的实例能够正常使用。

性能测试

./memtier_benchmark --server HOST -p 6379 -P redis --threads=16 --clients=4 -a PASSWORD --data-size=128 --test-time=600 --ratio=1:10 --key-pattern=S:S
  • 测试结果:

安装PHP扩展

  • 代码下载
git clone https://github.com/phpredis/phpredis
  • 初始化配置,切换到代码目录输入phpize然后输入./configure进行配置
  • 编译安装,在执行完成./configure之后检查有没有异常,如果没有则执行make; make install即可
配置PHP扩展

PHP的会话存储定义在php.ini文件中,用户可以通过执行以下PHP代码找到PHP配置文件的路径。

<?php
phpinfo()
?>

通常如果使用apache对应的配置文件在/etc/php5/apache2/php.ini,如果是nginx则在/usr/local/php/etc/php.ini,通过sudo vim 文件路径来修改对应的PHP配置如下,其中HOST还有PASSWORD需要换成对应实例域名和密码。

session.save_handler = redis
session.save_path = "tcp://HOST:6379?auth=PASSWORD"

重启PHP服务则后续PHP的session信息将存储在阿里云Redis上,用户可以随着业务量的增长来随时对云Redis扩容。

结论

云数据库Redis提供了方便的Redis云服务,通过主备来保证实例的高可用,并提供了弹性的扩展能力,用户可以按需购买使用,同时阿里云Redis可以作为PHP的session信息存储管理单元,解决用户分布式session存储的困扰