redis持久化、redis+mysql+nginx+php整合

  • reids持久化
  • myslq+redis+nginx+php整合
  • myslq+redis+nginx+php整合
  • redis与mysql的数据同步



reids持久化

sqlserver 链接redis redis和sqlserver结合_php

sqlserver 链接redis redis和sqlserver结合_sqlserver 链接redis_02


sqlserver 链接redis redis和sqlserver结合_sqlserver 链接redis_03

myslq+redis+nginx+php整合

因为redis是在内存中工作的,速度快,所以 redis可以放在mysql之前,充当缓存使用。

应用需要写入数据时,就向mysql写。应用读取数据时,就从redis中读。所以就需要做好mysql与redis的自动同步。

sqlserver 链接redis redis和sqlserver结合_php_04

方式一:
应用直接使用redis,在redis端需要编写代码将最终数据同步到mysql,以实现数据一致性。

sqlserver 链接redis redis和sqlserver结合_sqlserver 链接redis_05

方式二:

更适合大规模应用。

sqlserver 链接redis redis和sqlserver结合_nginx_06


下面的实验是使用的用户自定义函数。

myslq+redis+nginx+php整合

server2 ---- 172.20.10.6 ---- redis master (缓冲层)
server3 ---- 172.20.10.8 ---- nginx 、php、gearmand (前端)
server 5 ---- 172.20.10.11 ---- mariadb (后台)

分布式的分发框架
client (server5): MySQL发生了update事件,触发trigger。触发器会调用用户自定义udf函数json_object(用于转换数据,因为mysql与redis数据不兼容),之后把数据发给gearman(gman_server_set、gman_do_background)
server (server3) :gearmand,监听4730端口
worker (server3): 用户端自己写的代码worker.php,也可以用其他语言编写比如Java(作用就是从gearmand中获取任务,同步redis)。php要求支持两个模块:gearman模块和redis模块。。worker.php首先会通过php-gearman模块获取任务,再通过php-redis模块更新redis server,以完成redis的更新。

框架中redis与mysql上数据必须是同步的,怎么样使得mysql上的数据更新之后自动同步到redis?
使用触发器。
mysql想要将变更数据传给远端,需要:
1、转换成json的数据结构
2、发布到分布式的分发系统上面

sqlserver 链接redis redis和sqlserver结合_php_07

sqlserver 链接redis redis和sqlserver结合_sqlserver 链接redis_08


sqlserver 链接redis redis和sqlserver结合_mysql_09


sqlserver 链接redis redis和sqlserver结合_redis_10


sqlserver 链接redis redis和sqlserver结合_php_11


sqlserver 链接redis redis和sqlserver结合_redis_12


sqlserver 链接redis redis和sqlserver结合_mysql_13


sqlserver 链接redis redis和sqlserver结合_sqlserver 链接redis_14


sqlserver 链接redis redis和sqlserver结合_mysql_15


sqlserver 链接redis redis和sqlserver结合_sqlserver 链接redis_16


sqlserver 链接redis redis和sqlserver结合_nginx_17


sqlserver 链接redis redis和sqlserver结合_redis_18


sqlserver 链接redis redis和sqlserver结合_sqlserver 链接redis_19


sqlserver 链接redis redis和sqlserver结合_sqlserver 链接redis_20


sqlserver 链接redis redis和sqlserver结合_sqlserver 链接redis_21


sqlserver 链接redis redis和sqlserver结合_nginx_22


sqlserver 链接redis redis和sqlserver结合_nginx_23


sqlserver 链接redis redis和sqlserver结合_mysql_24


sqlserver 链接redis redis和sqlserver结合_php_25


sqlserver 链接redis redis和sqlserver结合_redis_26

sqlserver 链接redis redis和sqlserver结合_nginx_27


sqlserver 链接redis redis和sqlserver结合_mysql_28


sqlserver 链接redis redis和sqlserver结合_nginx_29


sqlserver 链接redis redis和sqlserver结合_php_30

sqlserver 链接redis redis和sqlserver结合_sqlserver 链接redis_31


sqlserver 链接redis redis和sqlserver结合_php_32


sqlserver 链接redis redis和sqlserver结合_php_33


sqlserver 链接redis redis和sqlserver结合_php_34


sqlserver 链接redis redis和sqlserver结合_mysql_35


sqlserver 链接redis redis和sqlserver结合_mysql_36


sqlserver 链接redis redis和sqlserver结合_redis_37


sqlserver 链接redis redis和sqlserver结合_php_38


sqlserver 链接redis redis和sqlserver结合_sqlserver 链接redis_39


sqlserver 链接redis redis和sqlserver结合_php_40


sqlserver 链接redis redis和sqlserver结合_nginx_41


sqlserver 链接redis redis和sqlserver结合_nginx_42


sqlserver 链接redis redis和sqlserver结合_nginx_43


sqlserver 链接redis redis和sqlserver结合_mysql_44


sqlserver 链接redis redis和sqlserver结合_php_45


sqlserver 链接redis redis和sqlserver结合_mysql_46


sqlserver 链接redis redis和sqlserver结合_php_47


sqlserver 链接redis redis和sqlserver结合_sqlserver 链接redis_48


sqlserver 链接redis redis和sqlserver结合_nginx_49

发现redis中只要有一个数据缺失,就会从mysql中将整体数据都加载一遍。不够优化。如何实现异步变更呢?即redis上只有这一个数据变更,那么只需要从mysql上将这一个数据加载一遍就行了。所以需要将redis和mysql同步。当mysql更新了,那么就立即更新redis。

redis与mysql的数据同步

到目前为止,nginx、php、redis、mysql已经可以整合一起工作了,但是还需要将redis和mysql上的数据同步。怎么样使得mysql上的数据更新之后自动同步到redis?
使用触发器。
mysql想要将变更数据传给远端,需要:
1、转换成json的数据结构
2、发布到分布式的分发系统上面

sqlserver 链接redis redis和sqlserver结合_nginx_50


sqlserver 链接redis redis和sqlserver结合_redis_51


sqlserver 链接redis redis和sqlserver结合_sqlserver 链接redis_52


sqlserver 链接redis redis和sqlserver结合_sqlserver 链接redis_53


sqlserver 链接redis redis和sqlserver结合_php_54


sqlserver 链接redis redis和sqlserver结合_php_55


sqlserver 链接redis redis和sqlserver结合_nginx_56


sqlserver 链接redis redis和sqlserver结合_mysql_57


sqlserver 链接redis redis和sqlserver结合_php_58


sqlserver 链接redis redis和sqlserver结合_sqlserver 链接redis_59


sqlserver 链接redis redis和sqlserver结合_redis_60


sqlserver 链接redis redis和sqlserver结合_sqlserver 链接redis_61


sqlserver 链接redis redis和sqlserver结合_nginx_62


sqlserver 链接redis redis和sqlserver结合_redis_63


sqlserver 链接redis redis和sqlserver结合_nginx_64


sqlserver 链接redis redis和sqlserver结合_php_65


sqlserver 链接redis redis和sqlserver结合_mysql_66


sqlserver 链接redis redis和sqlserver结合_sqlserver 链接redis_67


sqlserver 链接redis redis和sqlserver结合_sqlserver 链接redis_68


sqlserver 链接redis redis和sqlserver结合_sqlserver 链接redis_69


sqlserver 链接redis redis和sqlserver结合_redis_70


sqlserver 链接redis redis和sqlserver结合_php_71


sqlserver 链接redis redis和sqlserver结合_redis_72


sqlserver 链接redis redis和sqlserver结合_php_73


sqlserver 链接redis redis和sqlserver结合_sqlserver 链接redis_74


sqlserver 链接redis redis和sqlserver结合_sqlserver 链接redis_75


sqlserver 链接redis redis和sqlserver结合_nginx_76


sqlserver 链接redis redis和sqlserver结合_sqlserver 链接redis_77