`
Josh_Persistence
  • 浏览: 1654630 次
  • 性别: Icon_minigender_1
  • 来自: 上海
社区版块
存档分类

三、Java内存数据库实践之深入浅出Redis - 高级实用命令详解之安全和主从复制

阅读更多

在开始本篇之前,可以参照上一篇:二、Java内存数据库实践之深入浅出Redis - Redis安装与配置

http://josh-persistence.iteye.com/blog/2077322

 

一、Redis Client操作的常见的异常: Redis的安全问题

在上一讲中,如果成功的安装并启动redis服务后,使用redis的自带客户端进行连接的时候,

$ src/redis-cli
redis> set foo bar
OK
redis> get foo
"bar"

可能在客户端控制台上会发下如下的错误:(error) NOAUTH Authentication required.

 

这个错误涉及到redis的安全问题,了解了redis的安全问题,也就知道了怎么样去fix这个问题。

 

1.1、安全性

为redis设置密码:设置客户端连接后进行任何其他指定前需要实用的密码。

警告:因为redis速度非常快,所以在一台较好的服务器下,一个外部用户可以在一秒钟进行150k次的密码尝试,这意味着你需要指定非常非常强大的密码来防止暴力破解。

修改密码的方法:

只需要在redis的配置文件redis.conf中开启requirepass就可以了,比如我设置我的访问密码是diandi

requirepass diandi

在redis.conf中加入这一行代码之后,我们杀死原来的redis进程:pkill redis然后重新启动redis:cd src

./redis-server ../redis.conf

 

然后我们用redis-cli发现还能登陆进来,但是当我们执行操作的时候,比如keys *就会如下错误:

127.0.0.1:6379> keys *
(error) NOAUTH Authentication required.

没有必要的授权验证。

在这里redis支持两种授权方式,一种就是直接用auth命令进行授权:

只需要使用auth命令并键入在redis.conf中配置的password,如在redis.conf中配置的密码是diandi

则输入auth diandi

 

第一次输入了一个错误的密码test,授权失败,第二次输入正确的密码,返回ok,授权成功,之后就可以进行所有的操作。

 

如果我们不想每次登录进来之后都要用auth进行授权,那么我们可以采用另一种授权方式,就是在登陆客户端的时候用-a 来指定密码

sh-3.2# redis-cli -a diandi

上面的密码如果输错,也能进入,但是之后不能进行操作。需要用auth重新进行授权。

 

二、Redis的主从复制问题:

Redis主从复制配置和使用都非常简单。通过主从复制可以允许多个slave server拥有和master server相同的数据库副本。

 

2.1 redis主从复制的特点:

1.一台master可以拥有多个slave(1对多的关系)

2.多个slave除了可以连接同一个master外,还可以连接到其他slave(这样做的原因是如果masterdown掉之后其中的一台slave立马可以充当master的角色,这样整个服务流程不受影响)

3.主从复制不会阻塞master,在同步数据的同时,master可以继续处理client请求。

4.提高系统的伸缩性

 

2.2 redis主从复制的过程:

1.slave与master建立连接,发送sync同步命令。

2.Master会启动一个后台进程,将数据库快照保存到文件中,同时master主进程会开始收集新得写命令并缓存。

3.后台完成保存后,将文件发送给slave

4.slave将文件保存到硬盘上

 

2.3 配置主从服务器:

配置slave服务器很简单,只需要在slave的配置文件中加入以下配置:

slaveof masterip masterport

如果主机开启了登录验证,那么还需要加入下面这句:

masterauth authpassword

然后启动从机,首先主机会发快照给从机,从机的数据库会更新到和主机相同的状态,然后往主机里写内容,从机也会随之更新。

如果我们在从机上写数据那么会报错:

 

(error) READONLY You can't write against a read only slave.

 

可以用info命令来查看主从服务器的信息,在从机上用info命令可以看到

role:slave

master_host:masterip

master_port:masterport

master_link_status:up证明和主机处在连接状态

在主机上用info命令

role:master

同时连接着几台从机

connected_slaves:1

同时可以查看连接到主机上的从机的ip和在线状态

slave0:ip=192.168.1.107,port=6379,state=online,offset=1709,lag=1

 

下一篇将会介绍目前最优秀的Redis的Java Client Jedis的使用。

 

 

分享到:
评论

相关推荐

    redis-3.2.2.gem redis-3.2.2.gem redis-3.2.2.gem

    8. **命令行接口Redis-cli**:Redis-cli工具在3.2版本中也得到了增强,增加了更多的命令和选项,使日常操作更加方便。 9. **安全性和稳定性**:修复了许多已知的bug,增强了系统的安全性,保证了服务的稳定运行。 ...

    redis-windows-7.2.4.zip

    - 使用`redis-server --service-start`和`redis-server --service-stop`命令启动和停止服务。 6. **安全性**: - Redis默认不启用密码认证,为了安全,可以在配置文件中设置`requirepass`密码。 - 通过`bind`...

    Redis稳定版 Redis-x64-5.0.14.1.zip

    本次提供的版本是Redis的稳定版——Redis-x64-5.0.14.1,针对64位操作系统设计。在深入探讨Redis之前,我们先了解下Redis的基本特性。 1. **数据类型**: Redis支持五大数据类型:字符串(String)、哈希(Hash)、列表...

    Redis-x64-3.2.100.zip

    - 使用`redis-benchmark`进行性能测试,找出瓶颈并优化。 综上所述,这个压缩包提供了在Windows环境下运行Redis所需的基本组件和文档,帮助用户在非Linux系统上搭建和管理Redis服务。通过正确配置和使用这些文件,...

    Another-Redis-Desktop-Manager.1.6.1

    《Redis桌面管理器Another-Redis-Desktop-Manager详解》 Redis,全称为Remote Dictionary Server,是一种高性能的键值存储系统,常被用作数据库、缓存和消息中间件。其简洁的数据结构和丰富的数据类型使其在分布式...

    Redis-x64-5.0.9.zip

    可以使用各种语言的Redis客户端连接,如Python的`redis-py`,Java的`Jedis`等。 13. **安全策略**: Redis可以通过设置密码认证,限制只允许特定IP连接,增加安全性。 14. **监控与性能分析**: Redis提供了`...

    tomcat-redis-session-manager-1.2-tomcat-7-java-7

    标题中的"tomcat-redis-session-manager-1.2-tomcat-7-java-7"表明这是一个针对Tomcat服务器,用于管理session的组件,版本为1.2,适配Tomcat 7和Java 7环境。这个组件的主要作用是将Tomcat的会话管理功能与Redis...

    Redis-x64-5.0.14 windows

    Redis是世界上最受欢迎的开源内存数据结构存储系统,它可以用作数据库、缓存和消息代理。在Windows环境下,Redis-x64-5.0.14是Redis为64位Windows操作系统编译的一个版本,提供了在Windows上运行Redis的能力。本文将...

    tomcat-redis-session-manager jar包

    【标题】"tomcat-redis-session-manager jar包"是一个用于集成Redis进行Session管理的Java库,特别设计用于Apache Tomcat服务器。这个库使得在多台Tomcat服务器之间共享和协调用户的Session数据成为可能,从而提高了...

    tomcat-redis-session-manager的jar包-包含Tomcat7和Tomcat8

    《深入理解Tomcat-Redis-Session-Manager:在Tomcat7和Tomcat8中的应用》 在现代Web应用程序开发中,session管理是一个至关重要的环节,它涉及到用户会话的持久化和跨请求的数据共享。传统的session管理方式在高...

    redis-windows-7.0.10.zip

    Redis的核心组件包括`redis-server.exe`(服务器进程)、`redis-cli.exe`(命令行客户端)以及`redis-benchmark.exe`(性能测试工具)等。用户需要通过`redis-server.exe`启动服务,并通过`redis-cli.exe`进行交互式...

    another-redis-desktop-manager.1.5.5.exe Redis数据库连接软件(好用)

    本文将详细介绍“another-redis-desktop-manager.1.5.5.exe”这款Redis数据库连接软件,帮助用户更好地管理和操作Redis数据库。 首先,"another-redis-desktop-manager"是一款基于桌面的Redis管理工具,其1.5.5版本...

    Redis-Windows-6.2.6.zip

    Redis是世界上最受欢迎的开源内存数据结构存储系统,它可以用作数据库、缓存和消息代理。在Windows环境下,Redis的安装和使用可能与在Linux上有所不同,但同样提供了高效的数据处理能力。本文将深入探讨Redis 6.2.6...

    Redis-x64-7.0.5-windows11

    2. **下载源码**:从Redis官网获取最新版本的源代码,或者直接使用提供的Redis-x64-7.0.5编译好的二进制文件。 3. **配置环境变量**:将Redis的bin目录添加到系统PATH环境变量中,以便于命令行启动Redis服务。 4. **...

    redis-windows-redis7.0.5.zip

    2. `redis-cli.exe`:Redis命令行客户端,用于与Redis服务器交互,执行命令和查看数据。 3. `redis.windows.conf`:Redis的配置文件,可以自定义服务器的各项设置。 4. `redis-benchmark.exe`:性能测试工具,可以...

    Redis-7.0.5-x64 for Windows 64位版 Redis 7.0.5

    5. **redis-check-rdb.exe**: 这是一个实用工具,用于检查RDB持久化文件的完整性。RDB是Redis的一种持久化方式,定期将内存中的数据快照保存到磁盘,确保在重启后能恢复数据。 6. **redis-server.exe**: Redis...

    redis-windows-7.2.5.zip

    - 下载:从官方网站或者镜像站点获取最新版本的"redis-windows-7.2.5.zip"。 - 解压:将压缩包解压到任意目录,例如"C:\Program Files\Redis"。 - 运行服务:找到解压后的"redis-server.exe",双击启动,或在...

    redis-windows-Redis7.0.0.zip

    为了启动Redis服务器,只需运行`redis-server.exe`,并可以配置相应的配置文件`redis.windows.conf`来定制服务器的行为,如端口、数据库数量、日志级别等。 在Windows环境中,Redis可以通过配置文件开启守护进程...

    redis-64.3.0.503

    "redis-64.3.0.503"可能是一个特定版本的Redis二进制发行包,适用于64位操作系统。这个版本可能包含了优化的性能和一些新的特性和修复的bug。 Redis数据库的核心特性包括: 1. **键值存储**:Redis以键值对的形式...

Global site tag (gtag.js) - Google Analytics