Windows下安装Redis及php的redis扩展

Redis简介

    Redis是一个key-value存储系统。和Memcached类似,它支持丰富的数据类型,最为常用的数据类型主要有五种,分别是:string(字符串)、 hash(哈希)、list(链表)、set(集合)和zset(有序集合)。Redis通常将数据存储于内存中,或被配置为使用虚拟内存。与memcached不同的是,redis会周期性的把更新的数据写入磁盘或者把修改操作写入追加的记录文件,以此来达到数据持久化的目的,并且在此基础上实现了master-slave(主从)同步。当前 Redis的应用已经非常广泛,国内像新浪、淘宝,国外像 Flickr、Github等均在使用Redis的缓存服务。

环境要求

    Windows 64位操作系统

    php-7.2.2-Win32-VC15-x64

    Redis-x64-4.0.2.2

    php_redis-4.0.2-7.2-ts-vc15-x64

    php_igbinary-2.0.7-7.2-ts-vc15-x64(php_redis扩展依赖)

    资源下载地址

    php7.2Redisphp-redisphp-igbinary

    注意事项:windows环境下,https://github.com/MicrosoftArchive/redis/releases资源列表里面能找到的最新版本为3.2,但是却没有资源库能够提供对应版本的php-redis扩展,真TM扯淡。

安装Redis

    将下载下来的redis压缩包Redis-x64-4.0.2.2.zip解压至某个目录,如图:

    根据自己所采用的启动方式,修改对应的配置文件。另外,出于安全方面的考虑,通常需要为redis设置连接密码,找到配置文件中含有requirepass foobared字样的行,在其下面新增一行,如图:

    设置Redis连接密码后,客户端在连接Redis时需要通过AUTH <password>命令提供密码。

数据持久化

    Redis提供了两种持久化的方式,将内存中的数据,存储在磁盘上。分别是rdb和aof(默认关闭),默认使用的是rdb方式,我们可以根据自己的需求,决定采用哪一种方式。

    RDB方式

    Redis通过创建快照的方式获取某一时刻Redis中所有数据的副本,然后将其存放在指定的磁盘文件中。用户可以针对该快照进行各种操作,比如:将快照文件复制到其他服务器从而完成Redis的主从复制,或者将快照留在原地,服务器重启的时候重用数据。

    rdb配置

# 配置rdb文件名

dbfilename dump.rdb

# 配置rdb文件目录

dir ./

# 策略配置

# 在规定的时间内,Redis发生写操作的个数满足条件,会触发持久化命令。

# 当用户设置了多个save的选项配置,只要其中任一条满足,Redis都会触发一次持久化操作,比如:900秒之内至少一次写操作,或者300秒之内至少发生10次写操作,或者60秒之内至少发生10000次写操作都会触发快照命令。

save 900 1

save 300 10

save 60 10000

    AOF方式

    Redis的AOF持久化策略是将发送到Redis服务器端的每一条命令都记录下来,并且保存到硬盘的AOF文件中,类似于打开日志文件,来一条命令就记录一条。

    aof配置

# 是否开启AOF模式,默认为no,yes表示开启

appendonly no

# 配置aof文件名

appendfilename "appendonly.aof"

# 配置aof文件目录

dir ./

# AOF同步频率,默认为 everysec

# always 表示每次有数据发生修改时都会写入AOF文件,这种方式会严重降低redis的性能。

# everysec 表示表示每秒钟同步一次,该策略为AOF的缺省策略。

# no 表示让操作系统来决定应该何时进行同步,Linux系统往往可能30秒才会执行一次

appendfsync everysec

# yes表示新写操作不进行同步,只是暂存在缓冲区里,避免造成磁盘IO操作冲突,等重写完成后再写入,默认为no 

no-appendfsync-on-rewrite no

# Redis恢复时,是否忽略最后一条可能存在问题的指令(因为最后一条指令可能存在问题,比如写一半时突然断电了),默认为yes

aof-load-truncated yes

    注意:如果RDB与AOF同时开启,Redis 默认会先加载AOF的配置文件。

主从复制

    在Redis中实现主从复制比较简单,只需要修改slave服务器配置文件中的slave相关参数即可。

# 设置master主服务器IP和端口

slaveof 127.0.0.1 10002

# slave是否只读,从服务器负责读操作,主服务器负责写操作,从而实现读写分离

slave-read-only yes

    主从同步原理

    1. Slave服务启动,主动连接Master,并发送SYNC命令,请求初始化同步

    2. Master收到SYNC后,执行BGSAVE命令生成RDB文件,并缓存该时间段内的写命令

    3. Master完成RDB文件后,将其发送给所有Slave服务器,

    4. Slave服务器接收到RDB文件后,删除内存中旧的缓存数据,并装载RDB文件

    5. Master在发送完RDB后,即刻向所有Slave服务器发送缓存中的写命令

    6. 至此初始化完成,后续进行增量同步

启动Redis

    此处有两种启动方式,通过命令行和通过系统服务的方式。

    1. 命令行方式启动:

    切换到redis的根目录,比如根目录为 D:\myplatform\Redis,然后执行命令 redis-server redis.windows.conf 即可启动redis服务,如图:

    注意:此窗口请勿关闭,否则redis服务就会停止了。

    2. 系统服务方式启动:

    cmd窗口下,切换到redis根目录,执行如下命令:

    redis-server --service-install redis.windows-service.conf --loglevel verbose --service-name "Redis Service 4.0" --port 10001

   安装成功后,即可通过windows服务界面的方式启动redis了。

客户端测试

    新开一个cmd窗口,切换到redis根目录,执行命令 redis-cli,如果能看到redis的服务器地址和端口,就说明客户端已成功连接。根据redis启动方式的不同,选择相应的命令。

    命令行方式:redis-cli

    系统服务方式:redis-cli -h 127.0.0.1 -p 10001

安装php-redis扩展

    将php_redis-4.0.2-7.2-ts-vc15-x64.zip压缩包中的php_redis.dll文件,以及php_igbinary-2.0.7-7.2-ts-vc15-x64.zip压缩包中的php_igbinary.dll文件,拷贝到php安装目录的ext目录下,如图:

    然后,修改php.ini配置文件,在里面加入如下扩展:

    extension=php_igbinary.dll

    extension=php_redis.dll

    注意:php_igbinary扩展要放在php_redis扩展的前面。

    最后,重启apache服务。

Redis相关完整软件包

下载地址:Redis相关软件包

©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 202,905评论 5 476
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 85,140评论 2 379
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 149,791评论 0 335
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 54,483评论 1 273
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 63,476评论 5 364
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 48,516评论 1 281
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 37,905评论 3 395
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 36,560评论 0 256
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 40,778评论 1 296
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 35,557评论 2 319
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 37,635评论 1 329
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 33,338评论 4 318
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 38,925评论 3 307
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 29,898评论 0 19
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 31,142评论 1 259
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 42,818评论 2 349
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 42,347评论 2 342

推荐阅读更多精彩内容