分类 default 下的文章

redis怎么实现数据库的缓存

 对于变化频率非常快的数据来说,如果还选择传统的静态缓存方式(Memocached、File System等)展示数据,可能在缓存的存取上会有很大的开销,并不能很好的满足需要,而Redis这样基于内存的NoSQL数据库,就非常适合担任实时数据的容器。
但是往往又有数据可靠性的需求,采用MySQL作为数据存储,不会因为内存问题而引起数据丢失,同时也可以利用关系数据库的特性实现很多功能。
所以就会很自然的想到是否可以采用MySQL作为数据存储引擎,Redis则作为Cache。而这种需求目前还没有看到有特别成熟的解决方案或工具,因此采用Gearman+PHP+MySQL UDF的组合异步实现MySQL到Redis的数据复制。
MySQL到Redis数据复制方案
无论MySQL还是Redis,自身都带有数据同步的机制,比较常用的MySQL的Master/Slave模式,就是由Slave端分析Master的binlog来实现的,这样的数据复制其实还是一个异步过程,只不过当服务器都在同一内网时,异步的延迟几乎可以忽略。
那么理论上也可以用同样方式,分析MySQL的binlog文件并将数据插入Redis。但是这需要对binlog文件以及MySQL有非常深入的理解,同时由于binlog存在Statement/Row/Mixedlevel多种形式,分析binlog实现同步的工作量是非常大的。
因此这里选择了一种开发成本更加低廉的方式,借用已经比较成熟的MySQL UDF,将MySQL数据首先放入Gearman中,然后通过一个自己编写的PHP Gearman Worker,将数据同步到Redis。比分析binlog的方式增加了不少流程,但是实现成本更低,更容易操作。

nginx 配置 https

第一:要上传证书到服务器上
第二: ssl_certificate 后面写.crt文件地址
第三:ssl_certificate_key 后面跟.key文件地址

注:解决https加载外链有风险的情况使用反向代理,另外https内部调用其他https连接使用不需要https:开头(直接//开)如:href="//www.baidu.com"


server {
listen 443;
server_name www.it.tt;
index index.html index.htm index.php;
root /home/root;
ssl on;
ssl_certificate /etc/nginx/server.crt;
ssl_certificate_key /etc/nginx/server.key;

location /image/ {
proxy_pass http://it.tt/;
}
}

虚拟机下CentOS 安装

【1】. VMware中安装CentOS:

(1)新建虚拟机。
File - New - Virtual Machine (Ctrl+N)Typical(recommended) - I will install the operating system later. - Linux - CentOSVirtual machine name: CentOS6.2 - - Customize Hardware (Network Adapter: Bridged)Finish

(2)选择ISO镜像,启动虚拟机。
Settings - Hardware - CD/DVD (IDE) - Use ISO image file - Browse (CentOS-6.2-i386-minimal.iso) - OKVM - Power - Power On (Ctrl+B)

(3)安装片段。
Disc Found - SkipNext - - - Yes,discard any data - Configure Network (Wired - System eth0 - Edit - Connect automatically: Tick - IPv4 Settings - Method: Manual - Add :ip/mask/gateway - DNS servers: 210.2.2.2 - Apply - Close)select your time zone: Asia/Shanghai - Root Password: 123456 - Use Anyway - Next - Write changes to disk - [wait..] - Reboot.

网络配置:

如果安装时未配置网络,可按如下手动配置.

(1). 修改IP地址
vi /etc/sysconfig/network-scripts/ifcfg-eth0
DEVICE="eth0"
NM_CONTROLLED="yes"
ONBOOT=yes
HWADDR=00:0C:29:18:95:2F
TYPE=Ethernet
BOOTPROTO=none
IPADDR=192.168.63.7
PREFIX=24
GATEWAY=192.168.63.254
DNS1=192.168.60.1
DOMAIN=210.2.1.1
DEFROUTE=yes
IPV4_FAILURE_FATAL=yes
IPV6INIT=noNAME="System eth0"
UUID=5fb06bd0-0bb0-7ffb-45f1-d6edd65f3e03

重要部分:(详解)

1) 静态ip地址

:完整设置:
DEVICE="eth0" #指定网卡号 {可略}
BOOTPROTO="none" #是否DHCP或静态ip {可略}(注:静态IP使用none)
HWADDR="00:0C:29:18:95:2F" #MAC地址 {不可略!!如无此项 service network restart 命令不能正确执行}注:不用修改
NM_CONTROLLED="yes" #不需重启网卡生效 {可略}
ONBOOT="yes" #开机启动 {可略}
IPADDR="192.168.63.7" #静态ip地址 {不可略!!如无此项 service network restart 命令可正确执行,但无法分配ip地址}
GATEWAY="192.168.63.254" #网关地址 {不指定网关上不了外网, 如果无需外网可略}
TYPE="Ethernet" #网卡类型 {可略}
UUID="5fb06bd0-0bb0-7ffb-45f1-d6edd65f3e03" #通用唯一识别码 {可略}

:必要设置:
HWADDR="00:0C:29:18:95:2F" #MAC地址 {不可略!!如无此项 service network restart 命令不能正确执行}
IPADDR="192.168.63.7" #静态ip地址 {不可略!!如无此项 service network restart 命令可正确执行,但无法分配ip地址}
GATEWAY="192.168.63.254" #网关地址 {不指定网关上不了外网, 如果无需外网可略}

2) DHCP地址

:完整设置:
#参考 "1) 静态ip地址" 部分。

:必要设置:
BOOTPROTO="DHCP" #是否DHCP或静态ip {不可略!!如无此项 service network restart 命令可正确执行,但无法分配ip地址}
HWADDR="00:0C:29:18:95:2F" #MAC地址 {不可略!!如无此项 service network restart 命令不能正确执行}

(2). 修改网关
vi /etc/sysconfig/network
NETWORKING=yes
HOSTNAME=localhost.localdomain
GATEWAY=192.168.63.254 (注:这句话是需要加的)

(3). 修改DNS
vi /etc/resolv.conf(注:里面是空白 需要添加下面两句 )

search 210.2.1.1
nameserver 192.168.60.1

(4). 重新启动网络配置
service network restart或/etc/init.d/network restart

测试网络是否正确配置:
ifconfig :查看IP配置
ping baidu.com:是否能ping通
xmanager或其它ssh连接器连接。

(5). 自定义安装包:
yum -y install wget;yum -y install gcc;yum -y install make;yum -y install perl

(6). 安装rzsz包用以支持xmanager的文件拖放操作:(可选)
wget http://freeware.sgi.com/source/rzsz/rzsz-3.48.tar.gz;tar zxf rzsz-3.48.tar.gz;cd src

修改Makefile第四行OFLAG= -O 为 OFLAG= -O -DREGISTERED去掉注册信息。
make posix;cp rz sz /usr/bin/