Redis的安装、使用,集群的搭建和介绍

目录

一,什么是Redis

二,下载和安装(linux版)

 安装过程:

 启动的过程:

三,基本命令 :

四,redis的五种数据类型

String:

 Hash:

List :

 Set:

Zset:

五,redis的多数据库实例 

六, 持久化

1、RDB持久化(默认)

2、AOF持久化

 七,主从复制

1、过程 

2、配置步骤

八,redis集群的介绍

 1,搭建集群


一,什么是Redis

Redis 是c语言开发的,完全开源的,遵守 BSD 协议,是一个高性能的 key-value 数据库。数据存储在内存中,由于内容存取速度快所以redis被广泛应用在互联网项目中。

二,下载和安装(linux版)

下载地址:http://download.redis.io/releases/redis-3.0.0.tar.gz

 安装过程:

1)安装c语言环境

yum install gcc-c++         #Redis是c语言开发的,所以需要c语言的环境。

 2)拷贝到/usr/upload下解压源码

cd /usr/upload
tar -zxvf redis-3.0.0.tar.gz  #解压源码

 3)编译并安装 

cd /usr/local/redis-3.0.7
make   #编译
make install PREFIX=/usr/local/redis   #安装到指定的位置

 启动的过程:

1.前端启动:直接运行bin/redis-server将以前端模式启动。ssh命令窗口关闭则redis-server程序结束,不推荐使用此方法

cd /usr/local/redis/bin
./redis-server

关闭:ctrl+c       

2.后端启动: 

1)拷贝并修改配置文件

cp /usr/upload/redis-3.0.7/redis.conf /usr/local/redis/bin  #把配置文件复制到指定的位置
vim /usr/local/redis/bin/redis.conf  #修改文件

 

  2)启动和关闭

启动:

./redis-server redis.conf

./redis-server -p 端口号 redis.conf

关闭:

./redis-cli shutdown

./redis-cli -p 端口号 shutdown 

测试:

  ./redis-cli

 ./redis-cli -h 127.0.0.1 -p 6379

三,基本命令 :

cd /usr/local/redis/bin  #进入启动文件

./redis-server redis.conf  #启动redis
./redis-cli   #进入命令模式

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

2、keys  *:查看所有key 

 

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

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

 5、incr和decr:自增和自减

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

四,redis的五种数据类型

k--key        v--value      k-v  键值对

redis的五种数据类型
数据类型 赋值 取值删除
stringset   vget  del  k
hashhset    k-vhget k  khdel k  k
list(linkedlist)lpush/rpush k v...lrange k  0  -1lrem k count  v
setsadd k v...smembers ksrem k v
zsetzadd k scores vzrange k 0  -1 withscoreszrem v

五种数据类型详细介绍:

String:

 Hash:

List :

 127.0.0.1:6379> lrange str3 0 -1   # 获取str3 的所有数据
 1) "a"  ----------------删掉
 2) "a"  ----------------删掉  

 3) "1"
 4) "3"
 5) "8"
 6) "g"
 7) "a"  ----------------删掉
 8) "r"
 9) "1"
10) "3"
11) "2"
12) "2"
13) "a"
14) "g"
15) "r"
16) "g"
17) "r"

  • count > 0 : 从表头开始向表尾搜索,移除与 VALUE 相等的元素,数量为 COUNT 。
  • count < 0 : 从表尾开始向表头搜索,移除与 VALUE 相等的元素,数量为 COUNT 的绝对值。
  • count = 0 : 移除表中所有与 VALUE 相等的值。

127.0.0.1:6379> lrem str3 3  a   #删除str3中的  “a”  三个   表头开始
(integer) 3
127.0.0.1:6379> lrange str3 0 -1
 1) "1"
 2) "3"
 3) "8"
 4) "g"
 5) "r"
 6) "1"
 7) "3"
 8) "2"
 9) "2"
10) "a"
11) "g"  ----------------删掉
12) "r"
13) "g"  ----------------删掉
14) "r"
127.0.0.1:6379> lrem str3 -2 g     #删除str3中的  “g” 二个  从表尾开始
(integer) 2
127.0.0.1:6379> lrange str3 0 -1   
 1) "1"
 2) "3"
 3) "8"
 4) "g"
 5) "r" ----------------删掉
 6) "1"
 7) "3"
 8) "2"
 9) "2"
10) "a"
11) "r" ----------------删掉
12) "r"127.0.0.1:6379> lrem str3  0  r    #删除str3中的  “r”   全部
(integer) 3
127.0.0.1:6379> lrange str3 0 -1
1) "1"
2) "3"
3) "8"
4) "g"
5) "1"
6) "3"
7) "2"
8) "2"
9) "a"
127.0.0.1:6379> 

 Set:

127.0.0.1:6379> sadd str4 aaa bbb ccc ddd                    #无序   数据唯一,不重复
(integer) 4
127.0.0.1:6379> smembers str4
1) "ccc"
2) "bbb"
3) "aaa"
4) "ddd"
127.0.0.1:6379> sadd str4 aaa     # 数据唯一,不重复
(integer) 0
127.0.0.1:6379> smembers str4
1) "ccc"
2) "bbb"
3) "aaa"
4) "ddd"
127.0.0.1:6379> srem str4 aaa
(integer) 1
127.0.0.1:6379> smembers str4
1) "bbb"
2) "ddd"
3) "ccc"
127.0.0.1:6379>

Zset:

有序集合的成员是唯一的,但分数(score)却可以重复。

redis 正是通过分数来为集合中的成员进行从小到大的排序。

127.0.0.1:6379> zadd str5 1 s1 2 s2     #赋值str5 
(integer) 2
127.0.0.1:6379> zrange str5 0 -1 withscores    #获取str5的字段值 
1) "s1"
2) "1"
3) "s2"
4) "2"
127.0.0.1:6379> zadd str5 2 s3 2 s4    #赋值   scores(分数)相同的情况
(integer) 2
127.0.0.1:6379> zrange str5 0 -1 withscores   #可以赋值添加
1) "s1"
2) "1"
3) "s2"
4) "2"
5) "s3"
6) "2"
7) "s4"
8) "2"
127.0.0.1:6379> zadd str5 3 s1    #元素相同时,不被允许添加,只会覆盖原有的
(integer) 0
127.0.0.1:6379> zrange str5 0 -1 withscores
1) "s2"
2) "2"
3) "s3"
4) "2"
5) "s4"
6) "2"
7) "s1"
8) "3"
127.0.0.1:6379> zrem str5 s1 s2 s4      #删除 s1 s2 s4
(integer) 3
127.0.0.1:6379> zrange str5 0 -1 withscores
1) "s3"
2) "2"
127.0.0.1:6379> 

五,redis的多数据库实例 

1、一个redis实例可以包括多个数据库,客户端可以指定连接某个redis实例的哪个数据库,一个redis实例最多可提供16个数据库,下标从0到15,不能修改下标,客户端默认连接第0号数据库,也可以通过select选择连接哪个数据库。不同节点的数据查询不到。

 2、清空数据库的命令:

flushdb:清空当前数据库的数据
flushall:清空所有数据库的数据

六, 持久化

 查看进程:ps -ef | grep redis    或 ps -aux | grep redis

1、RDB持久化(默认)

RDB是Redis用来进行持久化的一种方式,是把当前内存中的数据集快照写入磁盘,也就是 Snapshot 快照(数据库中所有键值对数据)。恢复时是将快照文件直接读到内存里。

  策略:在redis.conf配置文件中默认有此下配置:

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

  优点:不影响性能
  缺点:不能保证数据的完整性

测试:存的是数据

1.删除dump.rdb
2.set str abc
3../redis-cli shutdown--->dump.rdb       存的是数据

2、AOF持久化

配置修改:

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

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

  策略:在redis.conf配置文件中默认有此下配置:

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

 

   缺点:影响性能
   优点:保证数据的完整性

测试:存的是命令

1.设置appendonly为yes
2.set str1 abc
3.等待1秒观察appendonly.aop

 

 

 七,主从复制

1、过程 

  1. 从往主发送sync命令
  2. 主往从发送rdb文件
  3. 往从发送写命令

2、配置步骤

        主:无需配置
        从:slaveof 主ip 主port

实验

  1. 往主写数据,观察从是否同步 :
    把主和从的appendonly.aof文件删除
    往主写数据,查看从是否有appendonly.aof文件和里面的数据是否和主一样
  2. 关闭主,往从写数据(主死类从只能读)
    把主的redis关掉:./redis-cli  -p 6379 shutdown

八,redis集群的介绍

1、redis集群是多少台?
        投票容错超过半数:3台     高可用:3台
2、为什么集群中有一个节点挂了,则整个集群都挂类?
        redis集群中有16384个槽分给了3个节点,存取数据时:crc16(key)%16384=[0~16383]

为了保证集群的高可用,每个master节点下面还需要添加至少1个slave节点,这样当某个master节点发生故障后,可以从它的slave节点中选举一个作为新的master节点继续提供服务。

 1,搭建集群

1)安装ruby环境

cd /usr/upload   #
yum install ruby
yum install rubygems
gem install redis-3.0.0.gem

2) 搭建伪分布式。可以使用一台虚拟机运行6个redis实例。需要修改redis的端口号7001-7006

注意:必须删除dump.rdb和appendonly.aof文件

cd /usr/local
mkdir redis-cluster
cp -r redis redis-cluster/redis-7001

....

cp -r redis redis-cluster/redis-7006

3)修改redis.conf配置文件。把cluster-enabled yes前的注释去掉。 

4)创建启动脚本:shutdown-all.sh,放在/usr/local/redis-cluster目录下。

cd /usr/local/redis-cluster/redis-7001/bin
./redis-server redis.conf
cd /usr/local/redis-cluster/redis-7002/bin
./redis-server redis.conf
cd /usr/local/redis-cluster/redis-7003/bin
./redis-server redis.conf
cd /usr/local/redis-cluster/redis-7004/bin
./redis-server redis.conf
cd /usr/local/redis-cluster/redis-7005/bin
./redis-server redis.conf
cd /usr/local/redis-cluster/redis-7006/bin
./redis-server redis.conf

 5)使用ruby脚本创建redis集群

cd /usr/upload/redis-3.0.0/src
./redis-trib.rb create --replicas 1 192.168.122.133:7001 192.168.122.133:7002 192.168.122.133:7003 192.168.122.133:7004 192.168.122.133:7005 192.168.122.133:70066

 6)测试

./redis-cli -c -p 7001
cluster info
cluster nodes

127.0.0.1:7001> cluster info
cluster_state:ok           #状态表示集群可以正常接受查询请求
cluster_slots_assigned:16384   #已分配到集群节点的哈希槽数量
cluster_slots_ok:16384            #哈希槽状态不是FAIL 和 PFAIL 的数量
cluster_slots_pfail:0
cluster_slots_fail:0
cluster_known_nodes:6  #集群中节点数量,包括握手状态还没有成为集群正式成员的节点
cluster_size:3           #至少包含一个哈希槽且能够提供服务的master节点数量
cluster_current_epoch:6     #集群本地Current Epoch变量的值
cluster_my_epoch:1       #当前正在使用的节点的Config Epoch
cluster_stats_messages_sent:579   # 通过node-to-node二进制总线发送的消息数量
cluster_stats_messages_received:579   #通过node-to-node二进制总线接收的消息数量

每行的组成结构如下

<id> <ip:port> <flags> <master> <ping-sent> <pong-recv> <config-epoch> <link-state> <slot> <slot> ... <slot>
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值