Redis DeskTop Manage是redis的一款可视化管理工具,那么如何连接到虚拟机(centos7为例)的redis服务器呢?

安装虚拟机redis环境

  • 打开redis官网,点击download,可以看到如下下载教程,可以选择下载安装包,也可以选择命令下载,我这里选择后者

wget http://download.redis.io/releases/redis-6.0.8.tar.gz

  • 解压
    tar xzf redis-6.0.8.tar.gz

  • 进入解压后的目录开始安装
    cd redis-6.0.8

  • 在安装前需要确认gcc是否安装gcc -v,因为是用c++写的,所以make前需要安装gcc或者升级gcc
    yum install gcc-c++

  • 前提是已经进入到了解压后的redis-6.0.8目录,进行安装,默认安装完的目录是/usr/local/bin
    make

    安装后进入/usr/local/bin目录查看,这里的config文件夹是我后面手动创建的mkdir config,用来放置我的redis配置文件

  • 把解压后的redis-6.0.8文件夹内的redis.config文件复制到我们刚创建的安装后的目录下的config文件夹内

    1
    2
    cd /usr/local/bin/
    cp /home/parallels/redis-6.0.8/redis.conf congig

    redis配置文件

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
## 在redis中,合法的"尺寸单位",无大小写区分.
# 1k => 1000 bytes
# 1kb => 1024 bytes
# 1m => 1000000 bytes
# 1mb => 1024*1024 bytes
# 1g => 1000000000 bytes
# 1gb => 1024*1024*1024 bytes
##将redis是否以后台进程的方式运行,默认为"no"
**daemonize** no
##如果"daemonize yes",那么将会把进程id信息写入文件中.请注意:启动redis进程的用户需要具有写入此目录的权限.
##pidfile ~/redis.pid
##指令操作:./redis.server --daemonize yes --pidfile ~/redis.pid
##
**pidfile** /var/run/redis.pid
##指定server需要侦听的客户端连接端口,client与server在此端口进行TCP通信.
**port** 6379
##如果你的物理服务器有多个网络接口,请你为将server socket绑定在指定IP上.
# **bind** 127.0.0.1
# 指定socket连接空闲时间(秒).如果connection空闲超时,将会关闭连接(TCP socket选项)

##如果为0,表示永不超时.
**timeout** 0
##指定TCP连接是否为长连接,"侦探"信号有server端维护,长连接将会额外的增加server端的开支(TCP socket选项)
##默认为0.表示禁用,非0值表示开启"长连接";"侦探"信号的发送间隔将有linux系统决定

##在多次"侦探"后,如果对等端(客户端socket)仍不回复,将会关闭连接,否则连接将会被保持开启.
##client端socket也可以通过配置keepalive选项,开启"长连接".(单位:秒)
**tcp-keepaliv**e 0
##server日志级别,合法值:debug,verbose,notice,warning 默认为notice
##debug适合开发环境,客户端操作信息都会输出日志
##verbose输出一些相对有用的信息,目前效果不明
##notice适合生产环境
##warning异常信息
**loglevel** notice
##指定redis日志文件目录,默认为stdout
##logfile ~/redislog.log
**logfile** stdout
##设定redis所允许的最大"db簇"的个数,默认为16个簇.
##客户端可以通过"select"指令指定需要使用的"db簇"索引号,默认为0.
##redis的顶层数据结构中,所有K-V都潜在的包括了"db簇"索引号,任何一个key都将隶属于一个"db".
##任何对数据的检索,只会覆盖指定的"db";例如数据被插入到"db 10"中,那么在"db 1"中去get,将会返回null.
##对数据归类到不同的db簇中,可以帮助我们实现一些特定的需求,比如根据不同客户端连接,来指定不同的db索引号.
**databases** 16
##snapshot配置,save <seconds> <changes>,用来描述"在多少秒期间至少多少个变更操作"触发snapshot
##snapshot最终将生成新的dump.rdb文件
##save ""用来禁用snapshot功能
##如下表示12小时内至少一个key变更,触发snapshot
**save** 43200 1
##如果snapshot过程中出现错误,即数据持久化失败,是否终止所有的客户端write请求.
##这个选项很让人为难,"yes"表示终止,一旦snapshot故障,那么此server为只读服务;

##如果为"no",那么此次snapshot将失败,但下一次snapshot不会受到影响,不过如果出现故障,数据只能恢复到"最近一个成功点".
**stop-writes-on-bgsave-error** yes
##是否启用rdb文件压缩手段,默认为yes.

##压缩可能需要额外的cpu开支,不过这能够有效的减小rdb文件的大小,有利于存储/备份/传输/数据恢复.
**rdbcompression** yes
##是否对rdb文件使用CRC64校验和,默认为"yes",那么每个rdb文件内容的末尾都会追加CRC校验和.
##对于其他第三方校验工具,可以很方便的检测文件的完整性
**rdbchecksum** yes
##指定rdb文件的名称
**dbfilename** dump.rdb
##指定rdb/AOF文件的目录位置
**dir** ./
# 将当前server做为slave,并为其指定master信息.
# **slaveof** <masterip> <masterport>

##当前server的授权密码

##任何客户端或者slave与此server交互前,需要提交密码,其他server的masterauth配置和此参数值保持一致
##密码应该足够复杂(64字节)
# **requirepass** <foobared>

## 以认证的方式连接到master.如果master中使用了"密码保护",slave必须交付正确的授权密码,才能连接成功
## "requirepas"配置项指定了当前server的密码.

## 此配置项中<master-password>值需要和master机器的"requirepas"保持一致。此参数配置在slave端。
# **masterauth** <master-password>
##如果当前server是slave,那么当slave与master失去通讯时,是否继续为客户端提供服务,"yes"表示继续,"no"表示终止.
##在"yes"情况下,slave继续向客户端提供只读服务,有可能此时的数据已经过期.
##在"no"情况下,任何向此server发送的数据请求服务(包括客户端和此server的slave)都将被告知"error"
**slave-serve-stale-data** yes
##slave是否为"只读",强烈建议为"yes"
**slave-read-only** yes
##slave向指定的master发送ping消息的时间间隔(秒),默认为10
# **repl-ping-slave-period** 10
##slave与master通讯中,最大空闲时间,默认60秒.超时将导致连接关闭.
# **repl-timeout** 60
##slave与master的连接,是否禁用TCP nodelay选项.
##"yes"表示禁用,那么socket通讯中数据将会以packet方式发送(packet大小受到socket buffer限制),
##       可以提高socket通讯的效率(tcp交互次数),但是小数据将会被buffer,不会被立即发送,对于接受者可能存在延迟.
##"no"表示开启tcp nodelay选项,任何数据都会被立即发送,及时性较好,但是效率较低
##建议为"no"
**repl-disable-tcp-nodelay** no
##适用Sentinel模块(unstable,M-S集群管理和监控),需要额外的配置文件支持
##slave的权重值,默认100.当master失效后,Sentinel将会从slave列表中找到权重值最低(>0)的slave,并提升为master
##如果权重值为0,表示此slave为"观察者",不参与master选举
**slave-priority** 100
##重命名指令,对于一些与"server"控制有关的指令,可能不希望远程客户端(非管理员用户)链接随意使用,
##那么就可以把这些指令重命名为"难以阅读"的其他字符串.
##例如"slaveof"   "CONFIG"   "BGREWRITEAOF"   "BGREWRITE"   "FLUSHALL"等指令需要被限制访问

##配置项格式: rename-command <command> <newCommand>
# **rename-command** CONFIG 3ed984507a5dcd722aeade310065ce5d    (方式:MD5('CONFIG^!'))
##所允许的客户端连接数,默认为10000.
##此值不可能被设置成过大,因为每个socket连接都会以"文件描述符"的方式被系统打开,它受到系统"文件打开个数"的限制
##如果超过此值,server将会拒绝连接.
# **maxclients** 10000
##redis-cache所能使用的最大内存(bytes),默认为0,表示"无限制",最终由OS物理内存大小决定(如果物理内存不足,有可能会使用swap)
##如果此值设置过小(比如32字节),将直接导致server无法使用.
##此值尽量不要超过机器的物理内存尺寸,从性能和实施的角度考虑,可以为物理内存3/4.
##此配置需要和"maxmemory-policy"配合使用,当redis中内存数据达到maxmemory时,触发"清除策略".
##如果使用"清除策略"后,仍无法得到足够的内存来存储新的数据,那么write操作的客户端将会收到"error OOM.."信息,此时server只读.
##在"内存不足"时,任何write操作(比如set,lpush等)都会触发"清除策略"的执行.
##在实际环境中,建议redis的所有物理机器的硬件配置保持一致(内存一致),同时确保master/slave中"maxmemory""policy"配置一致
# **maxmemory** <bytes>
##"内存不足"时,数据清除策略,默认为"volatile-lru"
## _volatile-lru_    ->对"过期集合"中的数据采取LRU(近期最少使用)算法.如果对key使用"expire"指令指定了过期时间,那么此key将会被添加到"过期集合"中.

##每个Redis对象,都保留一个“最后访问时间”的属性,可以用来判断此对象空闲的时间,那么LRU算法就可以根据此属性来进行判断。
## 将已经过期/LRU的数据优先移除.如果"过期集合"中全部移除仍不能满足内存需求,将OOM.
## _allkeys-lru_ ->对所有的数据,采用LRU算法
## _volatile-random_ ->对"过期集合"中的数据采取"随即选取"算法,并移除选中的K-V,直到"内存足够"为止.
## 如果如果"过期集合"中全部移除全部移除仍不能满足,将OOM
## _allkeys-random_ ->对所有的数据,采取"随即选取"算法,并移除选中的K-V,直到"内存足够"为止.
## _volatile-ttl_ ->对"过期集合"中的数据采取TTL算法(最小存活时间),移除即将过期的数据.
## _noeviction_ ->不做任何干扰操作,直接返回OOM异常.
###
##如果数据的过期不会对"应用系统"带来异常,且系统中write操作比较密集,建议采取"_**allkeys-lru**_"
# **maxmemory-policy** volatile-lru
##是否开启aof功能,"yes"表示开启,在开启情况下,aof文件同步功能才生效,默认为"no"
##对master机器,建议使用AOF,对于slave,建议关闭(采用snapshot),
**appendonly** no

##aof中文件同步机制
## _always_ ->任何一个aof记录都立即进行文件同步(磁盘写入),安全性最高;如果write请求比较密集,将会造成较高的磁盘IO开支和响应延迟
## _everysec_ ->每秒同步一次,性能和安全性都较高的策略,也是默认值
## _no_ ->不直接同步,让文件同步交给OS控制,OS将会根据文件流通道中buffer情况/空闲情况进行择机写入磁盘.安全性和效率与OS设定有关.
**appendfsync** everysec
##在aof rewrite期间,是否对aof新记录的append暂缓使用文件同步策略,主要考虑磁盘IO开支和请求阻塞时间.
##默认为no,表示"不暂缓",新的aof记录仍然会被立即同步
##
**no-appendfsync-on-rewrite** no
##aof rewrite触发时机,最小文件尺寸
**auto-aof-rewrite-min-size** 64mb

##aof每次rewrite之后,都会记住当前aof文件的大小,当文件增长到一定比例后,继续进行aof rewrite
**auto-aof-rewrite-percentage** 100
##aof rewrite过程中,是否采取增量"文件同步"策略,默认为"yes",而且必须为yes.
##rewrite过程中,每32M数据进行一次文件同步,这样可以减少"aof大文件"写入对磁盘的操作次数.
**aof-rewrite-incremental-fsync** yes
##lua脚本运行的最大时间
**lua-time-limit** 5000
##"慢操作日志"记录,单位:微秒(百万分之一秒,1000 * 1000),如果操作时间超过此值,将会把command信息"记录"起来.(内存,非文件)
##其中"操作时间"不包括网络IO开支,只包括请求达到server后进行"内存实施"的时间."0"表示记录全部操作.
**slowlog-log-slower-than** 10000
##"慢操作日志"保留的最大条数,"记录"将会被队列化,如果超过了此长度,旧记录将会被移除.
##可以通过"SLOWLOG <subcommand> args"查看慢记录的信息(SLOWLOG get 10,SLOWLOG reset)
##通过"SLOWLOG get num"指令可以查看最近num条慢速记录,其中包括"记录"操作的时间/指令/K-V等信息
**slowlog-max-len** 128
##通过"TYPE key"指令查看key的数据类型
##通过"OBJECT encoding key"查看key的编码类型
##hash类型的数据结构在编码上可以使用ziplist和hashtable

##ziplist的特点就是文件存储(以及内存存储)所需的空间较小,在内容较小时,性能和hashtable几乎一样.因此redis对hash类型默认采取ziplist.

##如果hash中条目的条目个数或者value长度达到阀值,将会被重构为hashtable.
##ziplist中允许存储的最大条目个数,建议为128
**hash-max-ziplist-entries** 512
##ziplist中允许条目value值最大字节数,建议为1024
**hash-max-ziplist-value** 64
##对于list类型,将会采取ziplist,linkedlist两种编码类型.
##同hash.
**list-max-ziplist-entries** 512
**list-max-ziplist-value** 64
##zset为有序集合,有2中编码类型:ziplist,skiplist

##因为"排序"将会消耗额外的性能,当zset中数据较多时,将会被重构为skiplist.
##同hash.
**zset-max-ziplist-entries** 128
**zset-max-ziplist-value** 64
##intset中允许保存的最大条目个数,如果达到阀值,intset将会被重构为hashtable
**set-max-intset-entries** 512
##是否开启顶层数据结构的rehash功能,如果内存允许,请开启.
##rehash能够很大程度上提高K-V存取的效率.
**activerehashing** yes
##客户端buffer控制

##在客户端与server进行的交互中,每个连接都会与一个buffer关联,此buffer用来队列化亟待被client接受的响应信息.
##如果client不能及时的消费响应信息,那么buffer将会被不断积压而给server带来内存压力.如果buffer中积压的数据达到阀值,将会
##导致连接被关闭,buffer被移除."
##buffer控制类型包括:
## _normal_ -> 普通连接
## _slave_ ->与slave之间的连接
## _pubsub_ ->pub/sub类型连接,此类型的连接,往往会产生此种问题;因为pub端会密集的发布消息,但是sub端可能消费不足.
##指令格式:client-output-buffer-limit <class> <hard> <soft> <seconds>",其中hard表示buffer最大值,一旦达到阀值将立即关闭连接;
##soft表示"容忍值",它和seconds配合,如果buffer值超过soft且持续时间达到了seconds,也将立即关闭连接,如果超过了soft但是在seconds之后
##buffer数据小于了soft,连接将会被保留.
# 其中hard和soft都设置为0,则表示禁用buffer控制.通常hard值大于soft.
**client-output-buffer-limit** normal 0 0 0
**client-output-buffer-limit** slave 256mb 64mb 60
**client-output-buffer-limit** pubsub 32mb 8mb 60
##Redis server执行后台任务的频率,默认为10,此值越大表示redis对"间歇性task"的执行次数越频繁(次数/秒)
##"间歇性task"包括"过期集合"检测、关闭"空闲超时"的连接等,此值必须大于0且小于500.(参见redis.h源码)

##此值过小就意味着更多的cpu周期消耗,后台task被轮询的次数更频繁

##此值过大意味着"内存敏感"性较差.
##建议保持默认值
**hz** 10
##include指令用来载入额外的配置文件模板,也可以在redis server启动时,手动指定需要include的配置文件.
# **include** /path/to/local.conf
# include /path/to/other.conf

启动redis

  • 进入安装后的redis目录,使用脚本运行
    cd /usr/local/bin
  • 启动

    我这里在配置文件中配置过了密码,所以需要auth 密码认证

redis desktop连接

  • 修改配置文件
    1)修改protected-mode yes 改为:protected-mode no
    2)注释掉#bin 127.0.0.1
    3)将 daemonize no 改成 yes
    4)设置密码 requirepass 123456

  • 检查虚拟机防火墙配置,需要开放端口,才能访问到这台服务器
    可以查看我的上一篇博客

  • 查看虚拟机IP地址ifconfig

  • 尝试连接

  • 点击确定,连接成功