技术调研评估报告RedisWord文档格式.docx

上传人:b****5 文档编号:17370257 上传时间:2022-12-01 格式:DOCX 页数:11 大小:25.91KB
下载 相关 举报
技术调研评估报告RedisWord文档格式.docx_第1页
第1页 / 共11页
技术调研评估报告RedisWord文档格式.docx_第2页
第2页 / 共11页
技术调研评估报告RedisWord文档格式.docx_第3页
第3页 / 共11页
技术调研评估报告RedisWord文档格式.docx_第4页
第4页 / 共11页
技术调研评估报告RedisWord文档格式.docx_第5页
第5页 / 共11页
点击查看更多>>
下载资源
资源描述

技术调研评估报告RedisWord文档格式.docx

《技术调研评估报告RedisWord文档格式.docx》由会员分享,可在线阅读,更多相关《技术调研评估报告RedisWord文档格式.docx(11页珍藏版)》请在冰豆网上搜索。

技术调研评估报告RedisWord文档格式.docx

2012-09-19

实际完成时间

2012-09-21

2.调研过程

准备工作

操作系统

CentOS6.064位。

Linux常用命令熟悉

cd,chrgp,chown,find,configure,mkdir,rm,tar,wget,yum,make&

makeinstall。

技术选型:

Redis

Redis的特点

✧性能高:

Redis能支持超过100K+每秒的读写频率。

✧丰富的数据类型:

Redis支持二进制的Strings,Lists,Hashes,Sets及OrderedSets数据类型操作。

✧原子:

Redis的所有操作都是原子性的,同时Redis还支持几个操作全并后的原子性操作。

✧事务:

Redis支持简单的事务,但是并不保证ACID性质,只是一些基本的命令打包执行。

提供的Watch功能能够对一个key进行watch,然后执行Transcation,在这个过程中如果,如果watachd的值发生了变化,那么Transcation会发现并拒绝执行。

✧丰富的特性:

Redis还支持publish/subcrible,通知,key过期等特性。

✧单线程:

Redis使用的是单线程的IO复用模型,无法有效的利用多核心服务器。

Redis与Memcached比较

1.Redis是单线程,Memcached是多线程。

单线程不能发挥多核的优势,但Memcached的多线程也会带来其他一些问题,比如cachecoherency和锁的问题,从而影响性能。

2.Memcached使用预分配的内存池,Redis使用现场申请内存的方式来存储数据。

3.Memcached不支持持久化和复制功能。

Redis支持数据保持在硬盘中,重启的时候可以再次加载使用。

Redis的持久化参见:

4.Memcached提供了cas命令,可以保证多个并发操作同一份数据的一致性问题。

Redis没有提供类似的命令。

5.Memcached只支持简单的key-value存储,Redis支持更复杂的数据类型,可以把Redis理解为一个数据结构服务器。

6.Redis除了提供存储之外相比Memcached提供了更多的特性。

比如聚合计算,pubsub,scripting等。

7.Redis支持数据备份,即master-slave模式的数据备份。

8.在Redis中并不是所有的数据都存在内存中,这是和Memcached相比一个最大的去区别。

Redis只会缓存所有key信息。

如果Redis发现内存的使用量超过一定的阈值,将触发swap操作,将内存中的数据swap到硬盘中去。

9.Redis支持批量的插入和读取。

Redis的适用场景

1.Redis使用最佳方式是全部数据in-memory,对于少量的数据,高速读写访问。

同时提供数据落地功能。

2.Redis更多的使用场景是作为Memcached的替代者来使用的。

3.当需要除key/value之外更多数据类型支持的时候,使用Redis更合适。

4.当存储数据不能被剔除的时候,使用Redis更适合。

Redis在项目中的使用场景

1.消息系统中采用Redis存储选取后的系统消息。

Redis支持的批量存储和读取比较适合接口在读取要求。

2.灰度控制中将权限信息存储在Redis中。

Redis及相关环境搭建

Redis安装配置

1.下载Redis最新版本2.2.14(读者自己选择版本)

[root@localhost~]#cd/usr/local/src

[root@localhost~]#wget

2.编译安装Redis

[root@localhost~]#tar–xvzfxzvfredis-2.2.14.tar.gz//解压

[root@localhost~]#cdredis-2.2.14

[root@localhost~]#make

make命令执行完成后,会在src目录下生成5个可执行文件,分别是redis-server、redis-cli、redis-benchmark、redis-check-aof、redis-check-dump,它们的作用如下:

redis-server:

Redis服务器daemon启动程序。

redis-cli:

Redis命令行操作工具。

当然你也可以用telnet根据其纯文本协议操作。

redis-benchmark:

redis性能测试工具,测试Redis在你的系统及你的配置下的读写性能。

redis-check-aof:

更新日志检查。

redis-check-dump:

用于本地数据检查。

[root@localhost~]#makePREFIX=/usr/localinstall//安装

3.配置Redis

[root@localhost~]#mkdir/etc/redis

[root@localhost~]#cpredis.conf/etc/redis/redis.conf

[root@localhost~]#mkdir 

/var/lib/redis

4.redis-conf配置参数

#是否作为守护进程运行

daemonizeyes

#如以后台进程运行,则需指定一个pid,默认为/var/run/redis.pid

pidfileredis.pid

#绑定主机IP,默认值为127.0.0.1

#bind127.0.0.1

#Redis默认监听端口

port6379

#客户端闲置多少秒后,断开连接,默认为300(秒)

timeout300

#日志记录等级,有4个可选值,debug,verbose(默认值),notice,warning

loglevelverbose

#指定日志输出的文件名,默认值为stdout,也可设为/dev/null屏蔽日志

logfilestdout

#可用数据库数,默认值为16,默认数据库为0

databases16

#保存数据到disk的策略

#当有一条Keys数据被改变是,900秒刷新到disk一次

save9001

#当有10条Keys数据被改变时,300秒刷新到disk一次

save30010

#当有1w条keys数据被改变时,60秒刷新到disk一次

save6010000

#当dump.rdb数据库的时候是否压缩数据对象

rdbcompressionyes

#本地数据库文件名,默认值为dump.rdb

dbfilenamedump.rdb

#本地数据库存放路径,默认值为./

dir/var/lib/redis/

###########Replication#####################

#Redis的复制配置

#slaveof<

masterip>

<

masterport>

当本机为从服务时,设置主服务的IP及端口

#masterauth<

master-password>

当本机为从服务时,设置主服务的连接密码

#连接密码

#requirepassfoobared

#最大客户端连接数,默认不限制

#maxclients128

#最大内存使用设置,达到最大内存设置后,Redis会先尝试清除已到期或即将到期的Key,当此方法处理后,任到达最大内存设置,将无法再进行写入操作。

#maxmemory<

bytes>

#是否在每次更新操作后进行日志记录,如果不开启,可能会在断电时导致一段时间内的数据丢失。

因为redis本身同步数据文件是按上面save条件来同步的,所以有的数据会在一段时间内只存在于内存中。

默认值为no

appendonlyno

#更新日志文件名,默认值为appendonly.aof

#appendfilename

#更新日志条件,共有3个可选值。

no表示等操作系统进行数据缓存同步到磁盘,always表示每次更新操作后手动调用fsync()将数据写到磁盘,everysec表示每秒同步一次(默认值)。

#appendfsyncalways

appendfsynceverysec

#appendfsyncno

################VIRTUALMEMORY###########

#是否开启VM功能,默认值为no

vm-enabledno

#vm-enabledyes

#虚拟内存文件路径,默认值为/tmp/redis.swap,不可多个Redis实例共享

vm-swap-file/tmp/redis.swap

#将所有大于vm-max-memory的数据存入虚拟内存,无论vm-max-memory设置多小,所有索引数据都是内存存储的(Redis的索引数据就是keys),也就是说,当vm-max-memory设置为0的时候,其实是所有value都存在于磁盘。

默认值为0。

vm-max-memory0

vm-page-size32

vm-pages134217728

vm-max-threads4

#############ADVANCEDCONFIG###############

glueoutputbufyes

hash-max-zipmap-entries64

hash-max-zipmap-value512

#是否重置Hash表

activerehashingyes

运行多个Redis实例

一台Redis服务器,分成多个节点,每个节点分配一个端口(6380,6381…),默认端口是6379。

每个节点对应一个Redis配置文件,如:

redis6380.conf、redis6381.conf

启动多个redis实例:

注意:

如果配置文件和启动的Redis版本不匹配会解析配置文件失败无法启动。

LAMP和phpReidsAdmin搭建

1.LAMP环境搭建。

首先配置防火墙,开启80端口、3306端口:

vi/etc/sysconfig/iptables

-AINPUT-mstate--stateNEW-mtcp-ptcp--dport80-jACCEPT(允许80端口通过防火墙)

-AINPUT-mstate--stateNEW-mtcp-ptcp--dport3306-jACCEPT(允许3306端口通过防火墙)

重启防火墙使配置生效

/etc/init.d/iptablesrestart

serviceiptablesrestart

1)安装Apache。

采用yum安装。

[root@localhost~]#yuminstallhttpdhttpd-devel

[root@localhost~]#chkconfighttpd--level2345on//设置apache为开机启动项。

[root@localhost~]#servicehttpdstart//启动apache

默认目录为/var/www/html

配置文件路径为/etc/httpd/conf/httpd.conf

访问apache所在务器地址看是否安装成功。

如果访问不了的话看防火墙是否关闭:

serviceiptablesstop。

如果安装过程出现什么问题,参见下面的遇到问题及解决方法。

2)安装Mysql。

[root@localhost~]#yuminstallmysql-servermysql

[root@localhost~]#mysql_secure_installation

出现要求密码的提示直接回车,出现要求设置密码的提示的时候,设置密码。

[root@localhost~]#cp/etc/init.d/mysqld/etc/init.d/mysqld//将mysql设为服务。

[root@localhost~]#servicehttpdstart//启动mysql

[root@localhost~]#mysql–uroot–p123//使用用户名和密码登陆mysql。

3)安装PHP。

yum安装。

[root@localhost~]#yuminstallphpphp-develphp-mysqlphp-gdlibjpeg*php-imapphp-ldapphp-odbcphp-pearphp-xmlphp-xmlrpcphp-mbstringphp-mcryptphp-bcmathphp-mhashlibmcrypt//安装php和相应的php扩展。

[root@localhost~]#servicehttpdrestart//重启apache

[root@localhost~]#vi/var/www/html/info.php

输入:

?

php

phpinfo();

>

在浏览器中访问info.php。

出现php信息,说明php和apache安装成功。

2.安装phpRedisAdmin。

phpRedisAdmin是一个基于PHP的Redis图形界面客户端。

1)安装PHP的Redis扩展。

源码安装。

master

[root@localhost~]#tar–zxvfowlient-phpredis-2.1.1-1-g90ecd17.tar.gz

[root@localhost~]#cdowlient-phpredis-90ecd17

[root@localhost~]#/usr/bin/phpize//phpize用来扩展php

[root@localhost~]#./configure--with-php-config=/etc//yum安装php默认配置文件在/etc(如果遇到bash 

/configure 

permissiondenied错误,在当前目录运行chmod+x./configure,如果提示找不到php配置文件,直接在/etc目录下手动创建php.ini)

[root@localhost~]#make&

makeinstall

[root@localhost~]#vi/etc/php.ini//修改php配置文件

添加一行:

extension="

redis.so"

[root@localhost~]#servicehttpdrestart//重启Apache

在浏览器打开info.php看PHP是否已经支持Redis。

为了进一步验证可以写个Redisphp测试页面:

[root@localhost~]#vi/var/www/html/redis.php

$redis=newRedis();

$redis->

connect('

192.168.32.13'

6379);

set('

test'

'

HelloRedisWord!

'

);

echo$redis->

get('

访问浏览器看到“HelloRedisWord!

”说明Redis扩展安装成功。

2)安装phpRedisAdmin。

[root@localhost~]#cd/var/www/html

[root@localhost~]#gitclone

[root@localhost~]#cdphpRedisAdmin

[root@localhost~]#gitsubmoduleinit

[root@localhost~]#gitsubmoduleupdate

访问:

192.168.32.13/phpRedisAdmin验证phpRedisAdmin是否安装成功。

3.遇到的问题及解决方法

1)在安装apache的时候先是通过yum安装然后又通过源码安装,后来又要卸掉apache重装。

源码安装的我是直接删除安装目录/usr/local/apache2。

然后通过yumremovehttpd来删除yum安装的apache,提示删除成功,但是我再用yuminstallhttpd想验证下我有没有真的删除掉的时候,系统又总是提示我已经安装过apache。

yum安装的一个不好的地方就是我不知道到底安装量哪些文件,安装的文件在哪个目录,所以一个个删除文件不现实。

最后网上查到可以用rpm-qa|grephttpd查看安装了哪些apache依赖的rpm包:

httpd-tools-2.2.15-15.el6.centos.1.x86_64

httpd-2.2.15-15.el6.centos.1.x86_64

然后用rpm-e来删除这些依赖项,但这时候又出现问题了,系统出错提示如下:

errorreadinginformationonservicehttpd:

Nosuchfileordirectory

error:

%preun(httpd-2.2.15-15.el6.centos.1.x86_64)scriptletfailed,exitstatus1

这时候可以在rpm后加个参数—noscripts,通过rpm-e--noscripts删除掉了上面的两个包,最后成功卸载掉了apache。

2)在用yum安装mysql的时候,进行到mysql_secure_installation时候出现了下面的错误提示:

Can'

tconnecttolocalMySQLserverthroughsocket'

/var/lib/mysql/mysql.sock'

(2)。

这个错误的提示是说,不能通过’/tmp/mysql.sock’连接到服务器。

Mysql.sock是创建与mysqld服务器相关的MySQL通信端点所使用的套接字。

而PHP标准配置正是通过’/tmp/mysql.sock’来连接数据库,可能是一些mysql的安装方法将mysql.sock放到了别的地方,可以通过修改/etc/mysql/f文件(或者/etc/my.conf文件,和mysql安装的方法有关,该配置文件的路径可能会有所不同)来修改它,打开文件可以看到如下的语句:

/tmp/mysql.sock,在这个路径下也的确存在mysql.sock但是运行mysql_secure_installation

时候查找的路径却是/var/lib/mysql/mysql.sock,很疑惑,最后通过做一个链接解决了这个问题:

ln-s/tmp/mysql.sock/var/lib/mysql/mysql.sock。

3)在启动Apache的时候出现下面的错误提示:

Startinghttpd:

httpd:

Couldnotreliablydeterminetheserver'

sfullyqualifieddomainname,using192.168.33.225forServerName

(98)Addressalreadyinuse:

make_sock:

couldnotbindtoaddress[:

:

]:

80

couldnotbindtoaddress0.0.0.0:

nolisteningsocketsavailable,shuttingdown

首先重启系统,如果重启系统还不行的话,用netstat-lnp|grep80命令查看有哪些进程占用了80端口,可以用pspid查看某个进程的详细信息,用kill-9pid杀掉进程。

4)安装phpRedisAdmin所以要装php的Redis扩展phpredis,但是通过yum安装php后就是找不到phpize,phpzie是用来安装php扩展的,找不到它自然无法安装phpRedis。

最后发现原来phpize是属于php-devel的。

通过yuminstallphp-devel发现phpize出现在/usr/bin目录下了。

Redis性能测试

见《Redis性能测试报告》

Redis优化

分区:

redis-sharding

分区,aof,一些故障排除和解决,参见

调整系统内核参数

虚拟内存

,调整系统内核参数

3.调研结果评估

暂无。

4.后续工作

1.Redis性能测试。

2.Redis性能优化。

建议

1.在项目中使用的Redis中尽量保证数据都是in-memory的。

2.预估数据量提前做好分区。

评价

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 高中教育 > 高中教育

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1