引言:
redis是一个key-value存储系统。和Memcached类似,它支持存储的value类型相对更多,包括string(字符串)、list(链表)、set(集合)、zset(sorted set --有序集合)和hash(哈希类型)。这些数据类型都支持push/pop、add/remove及取交集并集和差集及更丰富的操作,而且这些操作都是原子性的。在此基础上,redis支持各种不同方式的排序。与memcached一样,为了保证效率,数据都是缓存在内存中。区别的是redis会周期性的把更新的数据写入磁盘或者把修改操作写入追加的记录文件,并且在此基础上实现了master-slave(主从)同步。
Redis 是一个高性能的key-value数据库。 redis的出现,很大程度补偿了memcached这类key/value存储的不足,在部 分场合可以对关系数据库起到很好的补充作用。它提供了Java,C/C++,C#,PHP,JavaScript,Perl,Object-C,Python,Ruby,Erlang等客户端,使用很方便。 [1]
Redis支持主从同步。数据可以从主服务器向任意数量的从服务器上同步,从服务器可以是关联其他从服务器的主服务器。这使得Redis可执行单层树复制。存盘可以有意无意的对数据进行写操作。由于完全实现了发布/订阅机制,使得从数据库在任何地方同步树时,可订阅一个频道并接收主服务器完整的消息发布记录。同步对读取操作的可扩展性和数据冗余很有帮助。
记录Windows 7 安装 redis 服务,及php 扩展
一、下载redis
redis 官网只提供 linux 版本下载,虽然官网未提供Windows版本下载,但其在github上有一个Windows 版本维护更新
官网地址:https://redis.io
for widows 地址:https://github.com/MicrosoftArchive/redis/tags
目前最新版本win-3.2.100, 选择对应版本,点击downloads 进入下载页面,根据系统版本选择下载,这里选择Redis-x64-3.2.100.zip【可直接点击下载】 版本
二、安装redis 及添加系统服务
软件不需要,安装,直接运行既可,如需要安装版本直接下载Redis-x64.3.2.100.msi 安装既可,在redis 根目录打开cmd 命令提示行或者powershell,执行下面命令
redis-server redis.windows.conf
出现如图界面则表示启动成功,redis 地址127.0.0.1 端口 6379,新开一个命令行登录,这里没有对redis 添加密码如果需要配置,则在redis.windows.conf 文件自行配置,相关配置说明附在文章末尾
这里执行的命令启动redis有一个弊端,就是不能关闭命令行,每次使用需要启动一次,故而我们将redis 加到系统服务里,并设置未开机启动,这样就不要我们自己来启动了,添加系统服务所用的配置文件是redis.windows-service.conf 与命令行不为同一文件,执行命令前可以看下系统服务里面有没有redis 服务,查看方式win+R 输入services.msc,确保没有安装过,然后即可执行下面命令之后刷新服务管理既可以看到Redis 服务已经添加成功
redis-server –service-install redis.windows-service.conf –loglevel verbose
常用redis 命令
卸载服务:redis-server –service-uninstall
开启服务:redis-server –service-start
停止服务:redis-server –service-stop
三、添加PHP 扩展
首先使用php探针来获取php版本信息,NTS/TS版本,是否是64位版本
如图可见当前版本为PHP7.1.28 X64-NTS 版本,就可以去php扩展库里下载相对应的.dll 文件,《传送》,可以看到当前最新稳定版本是4.3.0,因为是Windows 系统所以选择dll下载
下载对应版本,解压到php扩展目录里,然后再php.ini 文件里添加redis 引用,重启服务,就可以发现已经安装好redis扩展了
extension = php_redis.dll
The end.
rredis.windows[-services].conf配置文件字段解析说明:
#是否以后台守护进程运行,默认为no, 取值yes, no
daemonize no
#pid文件存放路径
pidfile /var/run/redis.pid
#配置redis端口,默认6379
port 6379
#绑定ip。默认绑定所有本机ip,一般用在服务器多ip下,可以只监听内网服务器ip,保证服务安全
bind 127.0.0.1
#sock文件
unixsocket /tmp/redis.sock
#客户端超时时间,单位秒
timeout 300
#log级别,支持四个级别,debug,notice,verbose,warning
loglevel verbose
#log文件路径
logfile
#log输出到标准设备,logs不写文件,输出到空设备,/deb/null
logfile stdout
#保存快照的频率,在多长时间内执行一定数量的写操作时,保存快照的频率,可以设置多个条件。如果都注释掉,则不做内存数据持久化。如果只是把redis只用作cache,不开启持久化功能
save
save 900 1
#是否使用压缩
rdbcompression
#快照数据库名称
dbfilename
#数据库存放路径
dir
#redis主从 做法 在从上填上主的IP和端口号 主上不用做任何设置
slaveof
#主库服务器口令,如果主服务器未打开requirepass,则不需要此项
masterauth
#在master服务器挂掉或者同步失败时,从服务器是否继续提供服务
slave-serve-stale-data yes
#设置redis服务密码,如果开启,则客户端连接时需要 -a 指定密码,否则操作会提示无权限
requirepass foobared
#命令改名,相当于linux alias,可以用改功能屏蔽一些危险命令
rename-command
#最大连接数;0 表示不限制
maxclients 128
#最大使用内存(分配的内存),推荐生产环境下做相应调整,我们用的是只用来做高速缓存,限制2G。默认情况下,redis会占用可用的所有内存
maxmemory
#过期策略,提供六种策略
maxmemory-policy volatile-lru
volatile-lru //删除过期和lru 的key(默认值)
allkeys-lru //删除lru算法的key
volatile-random //随机删除即将过期key
allkeys->random //随机删除
volatile-ttl //删除即将过期的
noeviction //永不过期,返回错误
#是否开启appendonlylog,开启的话每次写操作会记一条log。相当于mysql的binlog;不同的是,每次redis启动都会读此文件构建完整数据。即使删除rdb文件,数据也是安全的
appendonly
#日志文件的名称,默认appendonly.aof
appendfilename appendonly.aof
#异步写append file 的策略。类似mysql事物log写方式。三种
appendfsync
appendfsync always //同步,每次写都要flush到磁盘,安全,速度慢。
appendfsync everysec //每秒写(默认值,推荐值)同mysql
appendfsync no //交给操作系统去做flush的动作
#虚拟内存开关
vm-enabled no
#swap文件,不同redis swap文件不能共享。而且生产环境下,不建议放在tmp目录
vm-swap-file /tmp/redis.swap
#vm大小限制。0:不限制,建议60-80% 可用内存大小
vm-max-memory 0
#根据缓存内容大小调整,默认32字节
vm-page-size 32
#page数。每 8 page,会占用1字节内存。vm-page-size * vm-pages 等于 swap 文件大小
vm-pages 134217728
#vm 最大io线程数。注意: 0 标志禁止使用vm
vm-max-threads 4