CLICLITECHSTUDYREDISredis开发使用手册.docx
- 文档编号:3977751
- 上传时间:2022-11-26
- 格式:DOCX
- 页数:18
- 大小:58.57KB
CLICLITECHSTUDYREDISredis开发使用手册.docx
《CLICLITECHSTUDYREDISredis开发使用手册.docx》由会员分享,可在线阅读,更多相关《CLICLITECHSTUDYREDISredis开发使用手册.docx(18页珍藏版)》请在冰豆网上搜索。
CLICLITECHSTUDYREDISredis开发使用手册
Redis开发使用手册
1.Redis安装和部署
1.1.下载并安装
$wget
$tarxzfredis-2.4.3.tar.gz
$cdredis-2.4.3
$make
1.2.启动相应服务
$src/redis-server
1.3.检验安装
$src/redis-cli
$redis>setfoobar
OK
$redis>getfoo
"bar"
1.4.将redis作为linux随机启动服务
$vi/etc/rc.local
在随机启动配置文件加入以下代码
Redis安装目录/src/redis-server
1.5停止redis服务
$src/redis-clishutdown
2.Redis配置
2.1基本配置
#默认情况下,redis不是在后台运行的,如果需要在后台运行,把该项的值更改为yes
daemonizeyes
#当redis在后台运行的时候,Redis默认会把pid文件放在/var/run/redis.pid,你可以配置到其他地址。
当运行多个redis服务时,需要指定不同的pid文件和端口
pidfile/var/run/redis.pid
#监听端口,默认为6379,如果为0,redis将不监听任何tcp
port6379
#指定Redis只接收来自于该IP地址的请求,如果不进行设置,那么将处理所有请求,在生产环境中最好设置该项
bind10.0.2.16
#Specifythepathfortheunixsocketthatwillbeusedtolistenfor
#incomingconnections.Thereisnodefault,soRediswillnotlisten
#onaunixsocketwhennotspecified.
#
#unixsocket/tmp/redis.sock
#unixsocketperm755
#设置客户端连接时的超时时间,单位为秒。
当客户端在这段时间内没有发出任何指令,那么关闭该连接,0为不关闭相应连接
timeout0
#log等级分为4级,debug,verbose,notice,和warning。
生产环境下一般开启notice
#debug(大量信息,一般使用在测试和开发环境)
#verbose(许多不常用信息,一般用在开发环境)
#notice(常用,一般使用在生产环境)
#warning(仅仅是非常重要和严重的错误信息)
loglevelnotice
#配置log文件地址,默认使用标准输出,即打印在命令行终端的窗口上,默认使用stdout,把日志打印在终端设备上。
logfile/usr/local/redis/logs/redis.log
#设置数据库的个数,可以使用SELECT
默认使用的数据库是0
databases16
2.2快照
save9001
save30010
save6010000
#在进行镜像备份时,是否进行压缩yes是进行压缩
rdbcompressionyes
#镜像备份文件的文件名
dbfilenamedump.rdb
#dir/opt/local/var/db/redis/数据库镜像备份的文件放置的路径。
这里的路径跟文件名要分开配置是因为redis在进行备份时,先会将当前数据库的状态写入到一个临时文件中,等备份完成时,再把该该临时文件替换为上面所指定的文件,而这里的临时文件和上面所配置的备份文件都会放在这个指定的路径当中
dir./
2.3主从配置
#################################主从复制#################################
#设置该数据库为其他数据库的从数据库,使其用来进行主从设置
#slaveof
#当主数据库连接需要密码验证时,在这里指定#
#masterauth
#
#当从机和主机失去联系或复制正在进行,从机可以有以下两种反馈方式
#1)slave-serve-stale-dataissetto'yes'(默认)
#从机继续接受客户端的请求,即使数据是过期或空
#2)slave-serve-staledataissetto'no'
#从机将返回错误,而不接受客户端的请求
slave-serve-stale-datayes
#从机向主机发送ping的时间间隔,用来监控主机的状态,单位秒
#repl-ping-slave-period10
#复制超时时间单位秒
#
#repl-timeout60
2.4安全设置
##################################安全###################################
#设置客户端连接后进行任何其他指定前需要使用的密码。
警告:
因为redis速度相当快,所以在一台比较好的服务器下,一个外部的用户可以在一秒钟进行150K次的密码尝试,这意味着你需要指定非常非常强大的密码来防止暴力破解
#requirepassfoobared
#Commandrenaming.
#
#Itispossilbetochangethenameofdangerouscommandsinashared
#environment.ForinstancetheCONFIGcommandmayberenamedintosomething
#ofhardtoguesssothatitwillbestillavailableforinternal-use
#toolsbutnotavailableforgeneralclients.
#
#Example:
#
#rename-commandCONFIGb840fc02d524045429941cc15f59e41cb7be6c52
#
#Itisalsopossilbetocompletelykillacommandrenamingitinto
#anemptystring:
#
#rename-commandCONFIG""
2.5限制
###################################LIMITS####################################
#限制同时连接的客户数量。
当连接数超过这个值时,redis将不再接收其他连接请求,客户端尝试连接时将收到error信息。
#maxclients128
#设置redis能够使用的最大内存。
当内存满了的时候,如果还接收到set命令,redis将先尝试剔除设置过expire信息的key,而不管该key的过期时间还没有到达。
在删除时,将按照过期时间进行删除,最早将要被过期的key将最先被删除。
如果带有expire信息的key都删光了,那么将返回错误。
这样,redis将不再接收写请求,只接收get请求。
maxmemory的设置比较适合于把redis当作于类似memcached的缓存来使用。
stency.
#
#maxmemory
#MAXMEMORYPOLICY:
howRediswillselectwhattoremovewhenmaxmemory
#isreached?
Youcanselectamongfivebehavior:
#
#volatile-lru->removethekeywithanexpiresetusinganLRUalgorithm
#allkeys-lru->removeanykeyaccordinglytotheLRUalgorithm
#volatile-random->removearandomkeywithanexpireset
#allkeys->random->removearandomkey,anykey
#volatile-ttl->removethekeywiththenearestexpiretime(minorTTL)
#noeviction->don'texpireatall,justreturnanerroronwriteoperations
#
#Note:
withallthekindofpolicies,Rediswillreturnanerroronwrite
#operations,whentherearenotsuitablekeysforeviction.
#
#Atthedateofwritingthiscommandsare:
setsetnxsetexappend
#incrdecrrpushlpushrpushxlpushxlinsertlsetrpoplpushsadd
#sintersinterstoresunionsunionstoresdiffsdiffstorezaddzincrby
#zunionstorezinterstorehsethsetnxhmsethincrbyincrbydecrby
#getsetmsetmsetnxexecsort
#
#Thedefaultis:
#
#maxmemory-policyvolatile-lru
#LRUandminimalTTLalgorithmsarenotprecisealgorithmsbutapproximated
#algorithms(inordertosavememory),soyoucanselectaswellthesample
#sizetocheck.ForinstancefordefaultRediswillcheckthreekeysand
#picktheonethatwasusedlessrecently,youcanchangethesamplesize
#usingthefollowingconfigurationdirective.
#
#maxmemory-samples3
2.6备份和镜像
##############################APPENDONLYMODE###############################
#默认情况下,redis会在后台异步的把数据库镜像备份到磁盘,但是该备份是非常耗时的,而且备份也不能很频繁,如果发生诸如拉闸限电、拔插头等状况,那么将造成比较大范围的数据丢失。
所以redis提供了另外一种更加高效的数据库备份及灾难恢复方式。
开启appendonly模式之后,redis会把所接收到的每一次写操作请求都追加到appendonly.aof文件中,当redis重新启动时,会从该文件恢复出之前的状态。
但是这样会造成appendonly.aof文件过大,所以redis还支持了BGREWRITEAOF指令,对appendonly.aof进行重新整理。
所以我认为推荐生产环境下的做法为关闭镜像,开启appendonly.aof,同时可以选择在访问较少的时间每天对appendonly.aof进行重写一次。
appendonlyyes
#增量镜像的文件名
appendfilenameappendonly.aof
#设置对appendonly.aof文件进行同步的频率。
always表示每次有写操作都进行同步,everysec表示对写操作进行累积,每秒同步一次。
这个需要根据实际业务场景进行配置
#appendfsyncalways
appendfsynceverysec
#appendfsyncno
#WhentheAOFfsyncpolicyissettoalwaysoreverysec,andabackground
#savingprocess(abackgroundsaveorAOFlogbackgroundrewriting)is
#performingalotofI/Oagainstthedisk,insomeLinuxconfigurations
#Redismayblocktoolongonthefsync()call.Notethatthereisnofixfor
#thiscurrently,asevenperformingfsyncinadifferentthreadwillblock
#oursynchronouswrite
(2)call.
#
#Inordertomitigatethisproblemit'spossibletousethefollowingoption
#thatwillpreventfsync()frombeingcalledinthemainprocesswhilea
#BGSAVEorBGREWRITEAOFisinprogress.
#
#ThismeansthatwhileanotherchildissavingthedurabilityofRedisis
#thesameas"appendfsyncnone",thatinpraticaltermsmeansthatitis
#possibletolostupto30secondsoflogintheworstscenario(withthe
#defaultLinuxsettings).
#
#Ifyouhavelatencyproblemsturnthisto"yes".Otherwiseleaveitas
#"no"thatisthesafestpickfromthepointofviewofdurability.
no-appendfsync-on-rewriteno
#Automaticrewriteoftheappendonlyfile.
#Redisisabletoautomaticallyrewritethelogfileimplicitlycalling
#BGREWRITEAOFwhentheAOFlogsizewillgrowthbythespecifiedpercentage.
#
#Thisishowitworks:
RedisremembersthesizeoftheAOFfileafterthe
#latestrewrite(orifnorewritehappenedsincetherestart,thesizeof
#theAOFatstartupisused).
#
#Thisbasesizeiscomparedtothecurrentsize.Ifthecurrentsizeis
#biggerthanthespecifiedpercentage,therewriteistriggered.Also
#youneedtospecifyaminimalsizefortheAOFfiletoberewritten,this
#isusefultoavoidrewritingtheAOFfileevenifthepercentageincrease
#isreachedbutitisstillprettysmall.
#
#SpecifyaprecentageofzeroinordertodisabletheautomaticAOF
#rewritefeature.
auto-aof-rewrite-percentage100
auto-aof-rewrite-min-size64mb
2.7慢查询日志
##################################SLOWLOG###################################
#TheRedisSlowLogisasystemtologqueriesthatexceededaspecified
#executiontime.TheexecutiontimedoesnotincludetheI/Ooperations
#liketalkingwiththeclient,sendingthereplyandsoforth,
#butjustthetimeneededtoactuallyexecutethecommand(thisistheonly
#stageofcommandexecutionwherethethreadisblockedandcannotserve
#otherrequestsinthemeantime).
#
#Youcanconfiguretheslowlogwithtwoparameters:
onetellsRedis
#whatistheexecutiontime,inmicroseconds,toexceedinorderforthe
#commandtogetlogged,andtheotherparameteristhelengthofthe
#slowlog.Whenanewcommandisloggedtheoldestoneisremovedfromthe
#queueofloggedcommands.
#Thefollowingtimeisexpressedinmicroseconds,so1000000isequivalent
#toonesecond.Notethatanegativenumberdisablestheslowlog,while
#avalueofzeroforcestheloggingofeverycommand.
slowlog-log-slower-than10000
#Thereisnolimittothislength.Justbeawarethatitwillconsumememory.
#YoucanreclaimmemoryusedbytheslowlogwithSLOWLOGRESET.
slowlog-max-len1024
2.8虚拟内存
################################VIRTUALMEMORY###############################
###虚拟内存在redis2.4中是不推荐使用的,由于实际的使用当中存在着许多问题.
#vm-enabledno是否开启虚拟内存支持。
因为redis是一个内存数据库,而且当内存满的时候,无法接收新的写请求,所以在redis2.0中,提供了虚拟内存的支持。
但是需要注意的是,redis中,所有的key都会放在内存中,在内存不够时,只会把value值放入交换区。
这样保证了虽然使用虚拟内存,但性能基本不受影响,同时,你需要注意的是你要把vm-max-memory设置到足够来放下你的所有的key
vm-enabledno
#vm-enabledyes
#设置虚拟内存的交换文件路径
vm-swap-file/tmp/redis.swap
#这里设置开启虚拟内存之后,redis将使用的最大物理内存的大小。
默认为0,redis将把他所有的能放到交换文件的都放到交换文件中,以尽量少的使用物理内存。
在生产环境下,需要根据实际情况设置该值,最好不要使用默认的0
vm-max-memory0
#设置虚拟内存的页大小,如果你的value值比较大,比如说你要在value中放置博客、新闻之类的所有文章内容,就设大一点,如果要放置的都是很小的内容,那就设小一点。
vm-page-size32
#设置交换文件的总的page数量,需要注意的是,pagetable信息会放在物理内存中,每8个page就会占据RAM中的1个byte。
总的虚拟内存大小=vm-page-size*vm-pages.
vm-pages134217728
#设置VMIO同时使用的线程数量。
因为在进行内存交换时,对数据有编码和解码的过程,所以尽管IO设备在硬件上本上不能支持很多的并发读写,但是还是如果你所保存的vlaue值比较大,将该值设大一些,还是能够提升性能的
vm-max-threads4
2.9数据类型设置
###############################ADVANCEDCONFIG###############################
#在redis2.0中引入了hash数据结构。
当hash中包含超过指定元素个数并且最大的元素没有超过临界时,hash将以一种特殊的编码方式(大大减少内存使用)来存储,这里可以设置这两个临界值.
hash-max-zipmap-entries512
hash-max-zipmap-value64
#在redis2.0中引入了list数据结构。
当list中包含超过指定元素个数并且最大的元素没有超过临界时,list将以一种特殊的编码方式(大大减少内存使用)来存储,这里可以设置这两个临界值:
list-max-ziplist-entries512
list-max-ziplist-value64
#Setshaveaspecialencodinginjustonecase
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- CLICLITECHSTUDYREDISredis 开发 使用手册
![提示](https://static.bdocx.com/images/bang_tan.gif)