Redis的简介及主从复制、Redis集群的介绍

目录

概要

1、redis

1.1、什么是redis

1.2、redis下载

1.3、redis的基本命令

1.4、多数据库测试

1.5、redis五种数据类型

1.5.1、string

1.5.2、hash

1.5.3、list

1.5.4、set

1.6、持久化

1.6.1、RDB持久化

1.6.2、实验

1.7.1、AOF持久化

1.7.2、实验

2、主从复制(了解)

2.1、什么是主从复制

2.2、主从配置

2.2.1、主redis配置

2.2.1、从redis配置

2.2.2、主从复制过程

3、redis集群简介

3.1、reids-cluster架构图


概要

目前缓存的主流技术:

1、 Redis

2、 Memcached

3、 ehcache

二者的区别是什么?

1、  Memcache是多线程

2、  Redis是单线程

1、redis

1.1、什么是redis

Redis(Remote Directory Server,远程字典服务器),是一个用C语言编写的、开源的、基于内存运行并支持持久化的(redis中的数据大部分时间都是存储在内存中的,访问效率高,适合存储简单、少量、经常访问的数据)、高性能键值对(key-value)的NoSQL数据库,也是当前热门的NoSQL数据库之一。Redis又被当成“缓存数据库”,但会定期持久化。

Redis的特点:
1.支持数据持久化
Redis可以将内存中的数据保存在磁盘中,重启的时候可以再次加载进行使用。
2.支持多种数据库
Redis不仅仅支持简单的key-value类型的数据,同时还提供list,set,zset,hash等数据结构的存储。
3.支持数据备份
Redis支持数据的备份,即master-slave模式的数据备份。

什么时候使用Redis?

redis一般用在访问量大,数据量小的时候,用来做缓存使用。

1.2、redis下载

redis的下载

1.3、redis的基本命令

redis-cli连上redis服务后,可以在命令行发送命令:

./redis-cli -h 127.0.0.1 -p 6379

1、setget:使用set和get可以向redis设置数据、获取数据

 2、keys *:查看当前库中所有的key值

 3、exists:判断key值是否存在

 4、expirettl:expire设置key的过期时间,ttl查看key的有效期

 5、clear:可以使用clear命令对redis-cli终端屏幕清屏。

1.4、多数据库测试

  一个redis实例可以包括多个数据库,客户端可以指定连接某个redis实例的哪个数据库,就好比一个mysql中创建多个数据库,客户端连接时指定连接哪个数据库。

​         一个redis实例最多可提供16个数据库,下标从015,客户端默认连接第0号数据库,也可以通过select选择连接哪个数据库,如下连接1号库:

 在1号库中查询上节设置的数据,结果查询不到:

 重新选择第0号数据库,查询数据:

 如果选择一个不存在数据库则会报错:

注意:

  1. redis不支持修改数据库的名称,只能通过select 0、select 1...选择数据库。

  2. FLUSHALL --清空所有数据库的所有数据

  3. FLUSHDB --清空当前所在数据库的数据

1.5、redis五种数据类型

1.5.1、string

String:key-value

赋值:set key value

127.0.0.1:6379> set test 123 ​

OK

 取值:get key

127.0.0.1:6379> get test

"123“

删除:del key

127.0.0.1:6379>del test

(integer) 1

自增自减:incr key decr key

127.0.0.1:6379> incr num
(integer) 1

127.0.0.1:6379> incr num
(integer) 2

127.0.0.1:6379> incr num
(integer) 3

1.5.2、hash

Hash:key-field-value

​             key:map

赋值:HSET key field value

127.0.0.1:6379> hset user name zhangsan
(integer) 1

取值:HGET key field

127.0.0.1:6379> hget user name
"zhangsan“

删除:HDEL key field

127.0.0.1:6379> hdel user name
(integer) 1

1.5.3、list

List:有顺序可重复,内部是使用双向链表实现的

192.168.25.153:6379> lpush list a b c d

(integer) 4

192.168.25.153:6379> lrange list 0 -1

1) "d"

2) "c"

3) "b"

4) "a"

192.168.25.153:6379> rpush list 1 2 3 4

(integer) 8

192.168.25.153:6379> lrange list 0 -1

1) "d"

2) "c"

3) "b"

4) "a"

5) "1"

6) "2"

7) "3"

8) "4"

192.168.25.153:6379> lrem list 0 d 

(integer) 1

192.168.25.153:6379> lrange list1 0 -1

1) "c"

2) "b"

3) "a"

4) "1"

5) "2"

6) "3"

7) "4"

1.5.4、set

Set:元素无顺序,不能重复

192.168.25.153:6379> sadd set1 a b c c c d

(integer) 4

192.168.25.153:6379> smembers set1

1) "b"

2) "c"

3) "d"

4) "a"

192.168.25.153:6379> srem set1 a

(integer) 1

192.168.25.153:6379> smembers set1

1) "b"

2) "c"

3) "d"

1.5.5、zset

SortedSet(zset):有顺序,不能重复

192.168.25.153:6379> zadd zset1 2 a 5 b 1 c 6 d

(integer) 4

192.168.25.153:6379> zrange zset1 0 -1

1) "c"

2) "a"

3) "b"

4) "d"

192.168.25.153:6379> zrem zset1 a

(integer) 1

192.168.25.153:6379> zrange zset1 0 -1

1) "c"

2) "b"

3) "d"

192.168.25.153:6379> zrevrange zset1 0 -1

1) "d"

2) "b"

3) "c"

192.168.25.153:6379> zrange zset1 0 -1 withscores

1) "c"

2) "1"

3) "b"

4) "5"

5) "d"

6) "6"

192.168.25.153:6379> zrevrange zset1 0 -1 withscores

1) "d"

2) "6"

3) "b"

4) "5"

5) "c"

6) "1"

1.6、持久化

Redis的高性能是由于其将所有数据都存储在了内存中,为了使Redis在重启之后仍能保证数据不丢失,需要将数据从内存中同步到硬盘中,这一过程就是持久化。

Redis支持两种方式的持久化,一种是RDB方式,一种是AOF方式。可以单独使用其中一种或将二者结合用。

1.6.1、RDB持久化

RDB方式的持久化是通过快照(snapshotting)完成的,当符合一定条件时Redis会自动将内存中的数据进行快照并持久化到硬盘。

RDB是Redis默认采用的持久化方式,在redis.conf配置文件中默认有此下配置:

save 900 1  #900秒内容如果超过1个key被修改,则发起快照保存
save 300 10 #300秒内容如超过10个key被修改,则发起快照保存
save 60 10000 #表示60秒内如果超过10000个key被修改,则发起快照保存

在redis.conf中:

配置dir指定rdb快照文件的位置

配置dbfilenam指定rdb快照文件的名称

Redis启动后会读取RDB快照文件,将数据从硬盘载入到内存。

1.6.2、实验

1、删除dump.rdb

2、set test abc

3、关闭服务端并观察bin目录的变化

总结:

​         优点:让redis的数据存取速度变快

​         缺点:服务器断电时会丢失部分数据(数据的完整性得不到保证)

1.7.1、AOF持久化

默认情况下Redis没有开启AOF(append onlyfile)方式的持久化,可以通过appendonly参数开启:
appendonly yes

AOF文件的保存位置和RDB文件的位置相同,都是通过dir参数设置的,默认的文件名是appendonly.aof,可以通过appendfilename参数修改:

appendfilename appendonly.aof

AOF持久化策略如下:

#appendfsync always   #每次有数据修改发生时都会写入AOF文件。
appendfsync everysec  #每秒钟同步一次,该策略为AOF的缺省策略。
#appendfsync no        #从不同步。高效但是数据不会被持久化。

1.7.2、实验

1、设置appendonly为yes

2、设置一个key

3、观察appendonly.aof

总结:

​         优点:持久化良好,能包证数据的完整性

​         缺点:大大降低了redis系统的存取速度

2、主从复制(了解)

2.1、什么是主从复制

持久化保证了即使redis服务重启也会丢失数据,因为redis服务重启后会将硬盘上持久化的数据恢复到内存中,但是当redis服务器的硬盘损坏了可能会导致数据丢失,如果通过redis的主从复制机制就可以避免这种单点故障,如下图:

说明:

  • 主redis中的数据有两个副本(replication)即从redis1和从redis2,即使一台redis服务器宕机其它两台redis服务也可以继续提供服务。

  • 主redis中的数据和从redis上的数据保持实时同步,当主redis写入数据时通过主从复制机制会复制到两个从redis服务上。

  • 只有一个主redis,可以有多个从redis。

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

  • 一个redis可以即是主又是从,如下图:

2.2、主从配置

2.2.1、主redis配置

无需特殊配置。

2.2.1、从redis配置

修改从redis服务器上的redis.conf文件,添加slaveof主redis ip主redis端口

 上边的配置说明当前该从redis服务器所对应的主redis是192.168.101.3,端口是6379

2.2.2、主从复制过程

主从复制过程如下图:

 复制过程说明:

1、  slave 服务启动,slave 会建立和master 的连接,发送sync 命令。

2、master启动一个后台进程将数据库快照保存到RDB文件中

3、master 就发送RDB文件给slave

4、slave 将文件保存到磁盘上,然后加载到内存恢复

5、master把缓存的命令转发给slave

注意:主死了,从只能读

3、redis集群简介

3.1、reids-cluster架构图

架构细节:

(1)所有的redis节点彼此互联(PING-PONG机制),节点的fail是通过集群中超过半数的节点检测失效时才生效.

 (2)存取数据时连接任一节点都可以,但集群中有一个节点fail整个集群都会fail

Redis 集群中内置了 16384 个哈希槽,当需要在Redis 集群中放置一个 key-value 时,redis 先对 key 使用 crc16 算法算出一个结果,然后把结果对 16384 求余数,这样每个 key 都会对应一个编号在 0-16383 之间的哈希槽,redis 会根据节点数量大致均等的将哈希槽映射到不同的节点

 注:redis的安装、主从复制的搭建、redis集群的搭建

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值