Redis--集群

  redis集群是一个无中心的分布式Redis存储架构,可以在多个节点之间进行数据共享,解决了Redis高可用、可扩展等问题。redis集群提供了以下两个好处:

  1. 将数据自动切分(split)到多个节点
  2. 当集群中的某一个节点故障时,redis还可以继续处理客户端的请求。
  3. 一个 Redis 集群包含 16384 个哈希槽(hash slot),数据库中的每个数据都属于这16384个哈希槽中的一个。集群使用公式 CRC16(key) % 16384 来计算键 key 属于哪个槽。集群中的每一个节点负责处理一部分哈希槽
  • 集群中的主从复制:
    集群中的每个节点都有1个至N个复制品,其中一个为主节点,其余的为从节点如果主节点下线了,集群就会把这个主节点的一个从节点设置为新的主节点,继续工作这样集群就不会因为一个主节点的下线而无法正常工作

  • 注意:
    如果某一个主节点和他所有的从节点都下线的话,redis集群就会停止工作了
    redis集群不保证数据的强一致性,在特定的情况下redis集群会丢失已经被执行过的写命令使用异步复制(asynchronous replication)是 Redis 集群可能会丢失写命令的其中一个原因,有时候由于网络原因,如果网络断开时间太长,redis集群就会启用新的主节点,之前发给主节点的数据就会丢失

Redis--主从复制

  redis的复制功能是支持多个数据库之间的数据同步。一类是主数据库(master)一类是从数据库(slave),主数据库可以进行读写操作,当发生写操作的时候自动将数据同步到从数据库,而从数据库一般是只读的,并接收主数据库同步过来的数据,一个主数据库可以有多个从数据库,而一个从数据库只能有一个主数据库

  • 通过redis的复制功能可以很好的实现数据库的读写分离,提高服务器的负载能力主数据库主要进行写操作,而从数据库负责读操作

redis主从复制

Redis--安全策略

  可信环境下的可信用户才可访问redis。这意味着,将redis服务器直接暴露在Internet或者不可信用户可直接访问Redis的tcp端口或Unix套接字的环境,是不安全的。redis着重于高性能和简单易用,在安全方面做得并不好。

网络安全

bind参数(在redis.conf配置文件,添加bind可以让数据库只能在指定IP下访问)。
bind 127.0.0.1 [192.168.3.1 ……]
注意:bind后面指定的ip只能是本机的ip。

认证

设置数据库密码

  1. 修改配置requirepass password
  2. 验证密码auth password
  • 实例 : 修改密码为xiaoxiaomo
    1
    2
    3
    4
    #requirepass foobared
    requirepass xiaoxiaomo

    # Command renaming.

Redis--持久化方案及备份

  redis支持两种方式的持久化,可以单独使用或者结合起来使用。第一种:RDB方式redis默认的持久化方式,第二种:AOF方式,需要手动修改配置。下面我们来看一下两种持久化方式以及持久化中所注意的一些问题。

持久化之RDB

rdb方式的持久化是通过快照完成的,当符合一定条件时redis会自动将内存中的所有数据执行快照操作并存储到硬盘上。默认存储在dump.rdb文件中(文件名在配置文件中dbfilename),默认打开可以到启动的目录去查看,注意: dump.rdb是在哪儿启动redis,就会在哪儿生成rdb文件

  • dump.rdb
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    [root@momo1 ~]# cd /usr/local/redis/
    [root@momo1 redis]# ll
    总用量 156
    -rw-rw-r--. 1 root root 34339 12月 18 23:19 00-RELEASENOTES
    -rw-rw-r--. 1 root root 53 12月 18 23:19 BUGS
    -rw-rw-r--. 1 root root 1805 12月 18 23:19 CONTRIBUTING
    -rw-rw-r--. 1 root root 1487 12月 18 23:19 COPYING
    drwxrwxr-x. 6 root root 4096 4月 27 19:40 deps
    -rw-r--r--. 1 root root 36 4月 29 01:20 dump.rdb ##dump.rdb
    -rw-rw-r--. 1 root root 11 12月 18 23:19 INSTALL
    -rw-rw-r--. 1 root root 151 12月 18 23:19 Makefile
    -rw-rw-r--. 1 root root 4223 12月 18 23:19 MANIFESTO
    -rw-rw-r--. 1 root root 5201 12月 18 23:19 README
    -rw-rw-r--. 1 root root 41561 4月 27 19:53 redis.conf
    -rwxrwxr-x. 1 root root 271 12月 18 23:19 runtest
    -rwxrwxr-x. 1 root root 280 12月 18 23:19 runtest-cluster
    -rwxrwxr-x. 1 root root 281 12月 18 23:19 runtest-sentinel
    -rw-rw-r--. 1 root root 7113 4月 29 00:26 sentinel.conf
    drwxrwxr-x. 2 root root 4096 4月 27 19:41 src
    drwxrwxr-x. 10 root root 4096 12月 18 23:19 tests
    drwxrwxr-x. 5 root root 4096 12月 18 23:19 utils
  1. redis进行快照的时机(在配置文件redis.conf中)

    1. save 900 1:表示900秒内至少一个键被更改则进行快照。
    2. save 300 10
    3. save 60 10000
  2. redis实现快照的过程

    1. redis使用fork函数复制一份当前进程的副本(子进程)
    2. 父进程继续接收并处理客户端发来的命令,而子进程开始将内存中的数据写入硬盘中的临时文件
    3. 当子进程写入完所有数据后会用该临时文件替换旧的RDB文件,至此,一次快照操作完成。
  3. 手动执行save或者bgsave命令让redis执行快照

    1. save是由主进程进行快照操作,会阻塞其它请求。
    2. bgsave是由redis执行fork函数复制出一个子进程来进行快照操作。
  4. 文件修复:redis-check-dump

    1
    2
    3
    [root@iZ94r8hgrjcZ /]# redis-check-dump dump.rdb 
    ==== Processed 5 valid opcodes (in 45 bytes) ===================================
    CRC64 checksum is OK

Redis--基本命令及Java操作

  本篇博文主要讲解,Redis的基本使用基本命令数据类型以及通过java操作Redis数据库(Jredis)。内容命令过多,不会一一演示,建议读者联想记忆。如果还没有搭建好环境请参考上篇博文:http://blog.xiaoxiaomo.com/2016/02/23/Linux-软件安装之Redis/

redis基础命令

  1. 获得符合规则的键名称
    keys 表达式(?,* ,[],\?)

  2. 判断一个键是否存在
    exists key

  3. 删除键
    del key
    del key1 key2

  4. 获得键值的数据类型type
    返回值可能是这五种类型(string,hash,list,set,zset)

注意:redis的命令不区分大小写

当前网速较慢或者你使用的浏览器不支持博客特定功能,请尝试刷新或换用Chrome、Firefox等现代浏览器