RedisDeskTopManage是redis的可视化管理工具,那么如何连接到虚拟机(以centos7为例)的redis服务器呢?安装虚拟机redis环境打开redis官网,点击下载,可以看到下面的下载教程,可以选择下载安装包,也可以选择命令下载,我这里选择后者wgethttp:///download.redis.io/releases/redis-6.0.8.tar.gz解压tarxzfredis-6.0.8.tar.gz进入解压目录开始安装cdredis-6.0.8安装前需要确认gcc是否安装了gcc-v,因为是c++写的,所以需要安装gcc或者升级gccyuminstallgcc-c++再make。前提是你已经进入解压后的redis-6.0.8目录进行安装。默认安装目录为/usr/local/binmake安装后,进入/usr查看/local/bin目录。这里的config文件夹是我后面手动创建的mkdirconfig,用来放置我的redis配置文件。将解压后的redis-6.0.8文件夹中的redis.config文件复制到我们刚刚创建的文件夹中。cd/usr/local/bin/cp/home/parallels/redis-6.0.8/redis.confcongigredis在创建的安装目录下config文件夹下的配置文件##在redis中,合法的“大小单位”,不区分大小写-sensitive.#1k=>1000bytes#1kb=>1024bytes#1m=>1000000bytes#1mb=>1024*1024bytes#1g=>1000000000bytes#1gb=>1024*1024*1024bytes##redis是否运行为一个后台进程,默认是“no”**daemonize**no##如果是“daemonizeyes”,那么进程id信息会被写入文件。请注意:启动redis进程的用户需要有写入该目录的权限。##pid文件~/redis.pid##指令运行:./redis.server--daemonizeyes--pidfile~/redis.pid##**pidfile**/var/run/redis.pid##指定服务端需要监听的客户端连接端口,客户端与服务端在此端口进行TCP通信.**port**6379##如果你的物理服务器有多个网络接口,请将服务器套接字绑定到指定的IP。#**bind**127.0.0.1#指定socket连接空闲时间(秒)。IfconnectionIdletimeout,theconnectionwillbeclosed(TCPsocketoption)##如果为0,表示永不超时。**timeout**0##指定TCP连接是否为长连接,“侦探”信号由服务器端维护,长连接会额外增加服务器端开销(TCPsocket选项)##默认为0。表示禁用,非零值表示启用“长连接”;“侦探”信号的发送间隔将由linux系统决定##在多次“侦探”之后,如果对端(clientsocket)仍然没有回复,则关闭连接,否则保持连接打开。##客户端socket也可以通过配置keepalive选项开启“长连接”。(单位:秒)**tcp-keepaliv**e0##serverloglevel,合法值:debug,verbose,notice,warning默认notice##debug适用于开发环境,客户端运行信息会输出log##verbose输出一些比较有用的信息,目前效果未知log**logfile**stdout##设置redis允许的最大“dbclusters”数,默认为16个clusters。##客户端可以通过“select”命令指定要使用的“dbcluster”索引号,默认为0。##在redis的顶层数据结构中,所有的K-V都可能包含“dbcluster”"索引号,任何一个key都会属于一个"db"。##任何检索数据只会覆盖指定的"db";比如数据插入到“db10”,那么如果你去“db1”中获取,就会返回null。##将数据分类到不同的dbclusters中,可以帮助我们实现一些特定的需求,比如根据不同的client连接,来参考设置不同的数据库索引号。**databases**16##snapshot配置,保存,用于描述“在多少秒内至少有多少change操作”触发snapshot##snapshot最终会生成一个新的dump.rdb文件##save""用于禁用快照功能##以下表示12小时内至少有一次key变化触发快照**save**432001##如果快照过程中出现错误,即数据持久化失败,是否终止所有客户端写请求。##这个选项很啰嗦,“yes”表示终止,一旦快照失败,那么这个服务器就是一个只读服务;##如果为“否”,则本次快照失败,但不影响下一次快照,但如果失败,则只能将数据恢复到“上次成功点”。**stop-writes-on-bgsave-error**yes##是否启用rdb文件压缩方式,默认是yes。##压缩可能需要额外的cpu开销,但是这样可以有效减小rdb文件的大小,利于存储/备份/传输/数据恢复。**rdbcompression**yes##是否对rdb文件使用CRC64校验,默认为“yes”,那么CRC校验会被添加在每个rdb文件内容的末尾。##对于其他第三方验证工具,检测文件的完整性非常方便**rdbchecksum**是的##指定rdb文件的名称**dbfilename**dump.rdb##指定目录位置rdb/AOF文件的目录**dir**./#使用当前服务器作为slave,并为其指定master信息。#**slaveof**##当前服务器的授权密码##任何client或slave与本server交互前,需要提交密码,其他server的masterauth配置与此参数值一致##密码要足够复杂(64字节)#**requirepass**##通过身份验证连接到master。如果master中使用了“密码保护”,slave必须下发正确的授权密码才能连接成功##“requirepas”配置项指的是当前服务器的密码已设置。##该配置项中的值需要和master机器的“requirepas”保持一致。该参数在从机端配置。#**masterauth**##如果当前服务器是slave,当slave与master失去通信时,是否继续为客户端提供服务,“yes”表示继续,“no”表示终止。##在“是”的情况下,slave继续为客户端提供只读服务,此时的数据可能已经过期。##在“no”的情况下,任何发送到本server(包括client和本server)server'sslave的数据请求服务都会被告知“error”**slave-serve-stale-data**yes##是否slave是“只读”的,强烈建议是“yes”**slave-read-only**yes##slave向指定master发送ping报文的时间间隔(秒),defaultis10#**repl-ping-slave-period**10##在slave和master之间的通信中,默认最大空闲时间为60秒。超时将导致连接关闭。#**repl-timeout**60##slave和master的连接,是否禁用TCPnodelay选项。##"yes"表示禁用,那么socket通信中的数据将以包的方式发送(包大小受socketbufferlimit限制),##可以提高socket通信的效率(tcp交互次数),但小数据会被缓冲,不会立即发送,接收方可能会有延迟。##"no"表示开启tcpnodelay选项,任何数据都会立即发送,时效性较好,但效率较低##推荐为"no"**repl-disable-tcp-nodelay**no##适用于Sentinel模块(不稳定,M-S集群管理和监控),需要额外的配置文件来支持##slave的权重值,默认为100。当master出现故障时,Sentinel会寻找权重值最低的slave(>0)从slave列表中取出,并提升为master##如果权重值为0,表示这个slave是“观察者”,不参与master选举**slave-priority**100##重命名指令,对于一些与“服务器”控制相关的指令,你可能不希望远程客户端(非管理员用户)链接可以随意使用,##那么你可以将这些指令重命名为其他“难以阅读”的字符串.##举些例子laveof""CONFIG""BGREWRITEAOF""BGREWRITE""FLUSHALL"等命令需要限制访问##配置项格式:rename-command#**rename-command**CONFIG3ed984507a5dcd722aeade310065ce5d(mode:MD5('CONFIG^!'))##允许的客户端连接数,默认为10000。##这个值不能设置太大,因为每次socket连接都会被系统以“文件”的形式打开descriptor”,它受限于系统的“打开文件数”##如果超过这个值,服务器将拒绝连接。#**maxclients**10000##redis-cache可以使用的最大内存(字节)使用,默认为0,表示“无限制”,最终由OS的物理内存大小决定(如果物理内存不足,可能会使用swap)##如果这个值设置得太小(比如32字节),会直接导致服务器无法使用。##这个值尽量不要超过机器的物理内存大小,从性能和实现的角度考虑,可以是物理内存的3/4。##这个配置需要和“maxmemory-policy”一起使用。当redis中的内存数据达到maxmemory时,触发“clearpolicy”。##如果使用“clearpolicy”后仍然无法获得足够的内存来存储新数据,那么写操作的客户端会收到“errorOOM..”消息,而服务端只读。##在“内存不足”的情况下,任何写操作(如set、lpush等)都会触发“清空策略”的执行。##在实际环境中,建议redis所有物理机的硬件配置保持一致(memoryConsistent),同时保证master/slave中的“maxmemory”和“policy”配置一致#**maxmemory**##“Insufficientmemory”,数据清除策略,默认为“volatile-lru”##_volatile-lru_->对“expiredcollection”中的数据使用LRU(leastrecentlyused)算法.如果使用“expire”命令为key指定过期时间,那么这个key会被添加到“expiredcollection”中。##每个Redis对象都保留了一个“lastaccesstime”属性,可以用来判断这个对象空闲的时间,那么LRU算法可以根据这个属性来判断##优先移除过期/LRU数据。如果“过期集合”中的所有removal仍然不能满足内存要求,那就是OOM。##_allkeys-lru_->对所有数据,使用LRU算法##_volatile-random_->对“过期集合”中的数据使用“随机选择”算法,移除选择的K-V,直到“内存足够”.##如果“过期集合”中的所有移除仍然不满足,将OOM##_allkeys-random_->对所有数据,采用“随机选择”算法,移除选中的K-V,直到“内存足够”。##_volatile-ttl_->for"expiredcollection"数据采用TTL算法(最小生存时间),移除即将过期的数据。##_noeviction_->不做任何干扰操作,直接返回OOM异常。#####如果数据过期,不会带来“应用系统”的异常,而且系统中写操作比较密集,建议使用“_**allkeys-lru**_"#**maxmemory-policy**volatile-lru##是否开启aof功能,"yes"表示开启,开启时aof文件同步功能才生效,默认为"no"##对于master机器,建议使用AOF,对于slave,建议关闭(使用snapshot),**appendonly**aof中没有##文件同步机制##_always_->任何aof记录都会立即执行文件同步(磁盘写入),这是最安全的;如果写请求比较密集,会造成高磁盘IO开销和响应延迟##_everysec_->每秒同步一次,高性能和安全的策略也是默认值##_no_->不直接同步,让文件同步交给OS控制,OS会根据文件流通道中的缓冲区状态/空闲状态选择写入磁盘。安全与效率和操作系统设置有关。**appendfsync**everysec##aofrewrite时,是否暂停使用文件同步策略追加aof新记录,主要考虑磁盘IO开销和请求阻塞时间。##默认是no,表示“不挂起”,新的aof记录仍然会立即同步##**no-appendfsync-on-rewrite**no##aofrewritetriggertiming,minimumfilesize**auto-aof-rewrite-min-size**64mb##aof每次rewrite后会记住当前aof文件的大小,当文件增长到一定百分比时,继续aofrewrite**auto-aof-rewrite-percentage**100##aofrewrite过程中,是否采用增量“文件同步”策略,默认为“yes”,必须为yes。##rewrite过程,每32M数据同步一次,可以减少“aof大文件”写入磁盘的操作次数。**aof-rewrite-incremental-fsync**yes##lua脚本运行的最大时间**lua-time-limit**5000##“慢操作日志”记录,单位:微秒(百万分之一a第二,1000*1000),如果操作时间超过这个值,命令信息将被“记录”。(内存,非文件)##“运行时间”不包括网络IO开销,只包括请求到达服务器后“内存执行”的时间。“0”表示记录所有操作。**slowlog-log-slower-than**10000##“慢操作日志”保留的最大数量,“记录”将被排队。如果超过这个长度,旧记录将被删除。##可以通过"SLOWLOGargs"查看慢记录信息(SLOWLOGget10,SLOWLOGreset)##通过"SLOWLOGgetnum"命令可以查看最新的num条慢记录,包括时间/命令等信息/K-Vofthe"record"operation**slowlog-max-len**128##通过“TYPEkey”命令查看key的数据类型##通过“OBJECTencodingkey”查看key的编码类型##hash类型的数据结构在encoding中可以使用ziplist和hashtable##ziplist的特点是文件存储(和内存存储)需要的空间小,而且内容比较少小时,性能和hashtable差不多。所以redis默认采用ziplist作为hash类型。##如果哈希中的条目数或值的长度达到阈值,则将其重构为哈希表。##ziplist中允许存储的最大条目数建议为128**hash-max-ziplist-entries**512##ziplist中entryvalue允许的最大字节数建议为1024**hash-max-ziplist-value**64##对于list类型,会采用ziplist和linkedlist两种编码类型。##相同ashash.**list-max-ziplist-entries**512**list-max-ziplist-value**64##zset是一个有序集合,有2种编码类型:ziplist,skiplist##因为“排序”会消耗额外的Performance,当zset中数据较多时,会重构到skiplist中。##同hash。**zset-max-ziplist-entries**128**zset-max-ziplist-value**64##intset允许保存的最大条目数,如果达到阈值,intset将重构为hashtable**set-max-intset-entries**512##是否开启top的rehash功能级数据结构,如果内存允许,请启用。##rehash可以大大提高K-V访问的效率。**activerehashing**是##Clientbuffercontrol##在client和server的交互中,每次连接将与缓冲区相关联。Buffer用于将客户端需要接受的响应信息进行排队。##如果客户端不能及时消费响应信息,缓冲区会不断积压,给服务端带来内存压力。如果缓冲区中积压的数据达到阈值,就会##导致连接关闭,缓冲区被移除。"##buffer控制类型包括:##_normal_->正常连接##_slave_->connectionwithslave##_pubsub_->pub/sub类型的连接,这种类型的连接经常会导致这种问题;因为pub端会密集发布消息,而sub端可能消费不够##指令格式:client-output-buffer-limit”,其中hard表示缓冲区的最大值,一旦达到阈值,连接将立即关闭;##soft是“容忍值”的意思,配合秒,如果buffer值超过soft就持续如果时间达到秒,连接将立即关闭。如果超过soft但##buffer数据秒后小于soft,则连接会被保留。#其中hard和soft都设置为0,表示禁用buffercontrol。通常hard值大于soft.**client-output-buffer-limit**normal000**client-output-buffer-limit**slave256mb64mb60**client-output-buffer-limit**pubsub32mb8mb60##Redis服务器执行后台任务的频率,默认为10,值越大,redis执行“间歇任务”的频率越高(次/秒)##“间歇任务”包括“过期集合”》检测,关闭“空闲超时”连接等。这个值必须大于0,小于500。(见redis.h源码)##如果这个值太小,意味着更多的CPU周期消耗,并且后台任务轮询的频率更高##如果这个值太大,说明“内存敏感度”差。##建议保持默认值**hz**10##include命令用于加载额外的配置文件模板,也可以在redis服务器启动时使用。手动指定需要包含的配置文件。#**include**/path/to/local.conf#include/path/to/other.conf启动redis,安装后进入redis目录,使用脚本运行cd/usr/local/binstartup我已经配置好了这里配置文件里的密码,所以我需要authpasswordauthenticationredisdesktopconnection来修改配置文件1)修改protected-modeyes为:protected-modeno2)注释掉#bin127.0.0.13)Daemonizeno改成yes4)设置密码requirepass123456检查虚拟机防火墙配置,需要开放端口才能访问本服务器。可以查看我之前的博客查看虚拟机IP地址ifconfig并尝试连接。点击确定,连接成功。