首页 > 编程知识 正文

redis的启动和关闭,配置文件详解

时间:2023-05-05 04:45:52 阅读:258893 作者:2465

1:redis的安装 1.1:redis在window系统的安装

省略,可以自行百度
我这里安装的压缩版

1.2:redis在linux系统的安装

现在还没有用到,用到了再补上TODO

2:redis的服务启动 2.1:在windows系统中

启动redis服务端
使用cmd进入到redis的安装目录

redis-server.exe redis.windows.conf

可以在windows系统中编写一个启动文件,可以把该指令写入到startup.cmd文件中

启动redis客户端
重新启用一个cmd会话窗口,进入到redis的安装目录

redis-cli –h IP地址 –p 端口 -a 密码//默认IP本机 端口6379 密码在配置文件中自定义redis-cli -h 127.0.0.1 -p 6379 -a 123456

2.2:在linux系统中

启动redis服务器端
进入对应的安装目录

cd .....方式一./sdhj/redis-server方式二./sdhj/redis-server ./redis.conf

启动客户端
进入Redis客服端(Clone Session克隆一个窗口) 进入对应的安装目录

redis-cli –h IP地址 –p 端口 -a 密码//默认IP本机 端口6379 密码在配置文件中配置

退出客户端命令:Ctrl+C

3:redis的关闭 在windows环境中

服务端:
redis-server --service-stop

在linux环境中

方式一

(断电、非正常关闭。容易数据丢失) 查询redis进程id

ps -ef | grep -i redis//kill对 查询的id进行强制关闭kill -9 PID

方式二
(正常关闭、数据保存)
关闭redis服务,通过客户端进行shutdown
如果redis设置了密码,需要先在客户端通过密码登录,再进行shutdown即可关闭服务端

4:远程连接

远程连接比较流行的软件: RedisDesktopManager
默认不允许远程连接,需要修改一下信息才可以进行修改

sdhjd 127.0.01注释掉 允许除本机外的机器访问Redis服务requirepass 设置密码 设定数据库密码 (有些情况下不设定密码是无法进行远程连接访问的) 5:redis中redis.windows.conf和redis.windows-service.conf文件的区别


Windows版的Redis有2个配置文件,一个是:redis.windows.conf,另一个是redis.windows-service.conf。

由于安装版的Redis服务自启动,是直接通过redis-server.exe启动的,但是,启动时并没有加载Redis的配置文件(redis.windows.conf),导致redis 中sdhjd配置和密码设置不生效。
Redis自启动导致的常见的问题有:

1、在CMD命令加载配置文件(redis.windows.conf)进行启动是不成功的。提示如下:

D:softRedis>redis-server.exe redis.windows.conf [13760] 11 Jul 16:39:51.067 # Creating Server TCP listening socket 127.0.0.1:6379: sdhjd: No error

因为Redis服务已经自启动,这里是不会再新启动的,故加载配置文件是失败的。也没有出现Redis启动的小盒子(下面有图片,慢慢往下看),需要注意的是Windows版的Redis安装时,默认启动加载的配置文件是redis.windows-service.conf,如下图所示:

2、密码失效。虽然在配置文件(redis.windows.conf)设置了密码,密码为123456:

################################## SECURITY ################################### ……省略…… # requirepass foobared requirepass 123456

但启动客户端进行Redis命令操作时,是不需要密码的,也没有提示无权限操作,这是一个严重的安全问题。

D:softRedis>redis-cli.exe 127.0.0.1:6379> get name "haha" 127.0.0.1:6379>

3、Redis访问IP绑定(sdhjd)无效
Redis默认绑定的ip为127.0.0.1,但如果想内网的机器都能访问,则需要设置内网的ip地址,如192.168.100.66,然后redis.host则可以设置为192.168.100.66访问Redis。
Redis ip地址绑定默认说明:

################################## NETWORK ##################################### # By default, if no "sdhjd" configuration directive is specified, Redis listens # for connections from all the network interfaces available on the server. # It is possible to listen to just one or multiple selected interfaces using # the "sdhjd" configuration directive, followed by one or more IP addresses. # # Examples: # # sdhjd 192.168.1.100 10.0.0.1 # sdhjd 127.0.0.1 ::1 # # ~~~ WARNING ~~~ If the computer running Redis is directly exposed to the # internet, sdhjding to all the interfaces is dangerous and will expose the # instance to everybody on the internet. So by default we uncomment the # following sdhjd directive, that will force Redis to listen only into # the IPv4 lookback interface address (this means Redis will be able to # accept connections only from clients running into the same computer it # is running). # # IF YOU ARE SURE YOU WANT YOUR INSTANCE TO LISTEN TO ALL THE INTERFACES # JUST COMMENT THE FOLLOWING LINE. # ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ sdhjd 127.0.0.1

主要是意思是,如果设置了sdhjd,只能通过绑定的地址访问Redis。

如果不设置sdhjd,则所有地址都可以访问,如果在项目部署外网,所有人都可以访问到,所以这里也是个注意的地址,还是设置sdhjd比较安全。

绑定多个ip地址:

sdhjd 127.0.0.1 192.168.100.66

127.0.0.1和192.168.100.66之间通过空格分隔,不是逗号。
但如果Redis是自启动的,没有加载配置文件(redis.windows.conf)启动,这里的设置也是无效的。
如果不绑定ip地址(192.168.100.66),直接设置redis.host=192.168.100.66是访问不了的,出现以下的错误:
redis.clients.jedis.exceptions.JedisConnectionException: Could not get a resource from the pool

所以说,Redis由Windows自启动的,配置文件(redis.windows.conf)的设置都是无效的

五、解决方案:

1、禁用Redis的自启动,设置为手动
2、不要使用Redis安装版,使用压缩版
3、通过命令行CMD加载配置文件(redis.windows.conf)启动

D:softRedis>redis-server.exe redis.windows.conf

4、再新打开一个cmd(不要关闭之前打的Cmd窗口),启动Redis客户端:

D:softRedis>redis-cli.exe

5、获取Redis中某个key的值,提示无权限。

127.0.0.1:6379> get name (error) NOAUTH Authentication required. 127.0.0.1:6379>

通过密码进入访问,使用 auth + 密码,如下:

127.0.0.1:6379> get name (error) NOAUTH Authentication required. 127.0.0.1:6379> auth 123456 OK 127.0.0.1:6379> get name "haha" 127.0.0.1:6379>

六、如果不是安装版的Redis,又想让Redis自启动的时候,可以向Windows添加自启动服务:
1、进入到Redis的安装目录

D:softRedis>

2、执行命令:

redis-server --service-install redis.windows.conf --loglevel notice --service-name Redis

完整实例指令:

D:softRedis>redis-server --service-install redis.windows.conf --loglevel notice --service-name Redis

–service-install redis.windows.conf 指定redis配置文件
–loglevel notice 指定日志级别
–service-name Redis 指定服务名称
运行结果如下( Redis successfully installed as a service.):

D:softRedis>redis-server --service-install redis.windows.conf --loglevel notice --service-name Redis [7176] 12 Jul 09:34:50.730 # Granting read/write access to 'NT AUTHORITYNetworkService' on: "D:softRedis" "D:softRedis" [7176] 12 Jul 09:34:50.730 # Redis successfully installed as a service.

4、安装服务后,默认不是马上启动的,但启动类型是自启动,如果想马上启动,请执行命令:

redis-server --service-start 服务成功启动显示如下: [9876] 12 Jul 09:57:41.251 # Redis service successfully started.

或者重启电脑。

5、删除Redis服务:
redis-server --service-uninstall

5:redis的配置文件讲解

redis.windows.conf文件中

#redis的配置#Redis默认不是以守护进程的方式运行,可以通过该配置项修改,使用yes启用守护进程daemonize yes#当Redis以守护进程方式运行时,Redis默认会把pid写入redis.pid文件,可以通过pidfile指定pidfile 'E:/xxx/redis/redis_pid/redis.pid'#端口port 6379#绑定主机的ip地址sdhjd 127.0.0.1#当 客户端闲置多长时间后关闭连接,如果指定为0,表示关闭该功能timeout 300#指定日志记录级别,Redis总共支持四个级别:debug、verbose、notice、warning,默认为verboseloglevel notice#日志记录方式,默认为标准输出,如果配置Redis为守护进程方式运行,而这里又配置为日志记录方式为标准输出,则日志将会发送给/dev/nulllogfile stdout#设置数据库的数量,默认数据库为0,可以使用SELECT <dbid>命令在连接上指定数据库iddatabases 16#指定在多长时间内,有多少次更新操作,就将数据同步到数据文件,可以多个条件配合#分别表示900秒(15分钟)内有1个更改,300秒(5分钟)内有10个更改以及60秒内有10000个更改save 900 1save 300 10save 60 10000#指定存储至本地数据库时是否压缩数据,默认为yes,Redis采用LZF压缩,如果为了节省CPU时间,可以关闭该选项,但会导致数据库文件变的巨大rdbcompression yes#指定本地数据库文件名,默认值为dump.rdbdbfilename dump.rdb#指定本地数据库存放目录dir 'D:/XXX/redis/redis_database'#设置当本机为slav服务时,设置master服务的IP地址及端口,在Redis启动时,它会自动从master进行数据同步#slaveof 127.0.0.1 6379#当master服务设置了密码保护时,slav服务连接master的密码#masterauth 123456#设置Redis连接密码,如果配置了连接密码,客户端在连接Redis时需要通过AUTH <password>命令提供密码,默认关闭#requirepass foobared#设置同一时间最大客户端连接数,默认无限制,Redis可以同时打开的客户端连接数为Redis进程可以打开的最大文件描述符数,如果设置 maxclients 0,表示不作限制。当客户端连接数到达限制时,Redis会关闭新的连接并向客户端返回max number of clients reached错误信息maxclients 10000#指定Redis最大内存限制,Redis在启动时会把数据加载到内存中,达到最大内存后,Redis会先尝试清除已到期或即将到期的Key,当此方法处理 后,仍然到达最大内存设置,将无法再进行写入操作,但仍然可以进行读取操作。Redis新的vm机制,会把Key存放内存,Value会存放在swap区maxmemory 300m#指定是否在每次更新操作后进行日志记录,Redis在默认情况下是异步的把数据写入磁盘,如果不开启,可能会在断电时导致一段时间内的数据丢失。因为 redis本身同步数据文件是按上面save条件来同步的,所以有的数据会在一段时间内只存在于内存中。默认为noappendonly yes#指定更新日志文件名,默认为appendonly.aofappendfilename 'appendonly.aof'#指定更新日志条件,共有3个可选值#no:表示等操作系统进行数据缓存同步到磁盘(快) #always:表示每次更新操作后手动调用fsync()将数据写到磁盘(慢,安全)#everysec:表示每秒同步一次(折衷,默认值)appendfsync everysec

版权声明:该文观点仅代表作者本人。处理文章:请发送邮件至 三1五14八八95#扣扣.com 举报,一经查实,本站将立刻删除。