redis缓存的使用

来源:互联网 发布:2015国内旅游数据 编辑:程序博客网 时间:2024/05/21 07:02

redis缓存的使用

使用redis做缓存

1.1 安装redis

n 版本说明

本教程使用redis3.0版本。3.0版本主要增加了redis集群功能。

安装的前提条件:

需要安装gccyum install gcc-c++

 

1、下载redis的源码包。

2、把源码包上传到linux服务器

3、解压源码包

tar -zxvf redis-3.0.0.tar.gz

4、Make

5、Make install

[root@bogon redis-3.0.0]# make install PREFIX=/usr/local/redis

 

1.2 启动redis

1、前端启动模式

/usr/local/redis/bin/redis-server

默认是前端启动模式,端口是6379

2、后端启动

1)redis的源码目录中复制redis.confredis的安装目录。

2)修改配置文件

 

3)[root@bogon bin]# ./redis-server redis.conf

 

1.3 Redis常用命令

127.0.0.1:6379> set a 10

OK

127.0.0.1:6379> get a

"10"

 

1.4 常用数据类型

String

Hash

List

Set

SortedSet

 

Redis集群的搭建

2.1 Redis集群相关概念

2.1.1 redis-cluster架构图

 

redis-cluster把所有的物理节点映射到[0-16383]slot,cluster负责维护node<->slot<->value

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

 

Key:a

计算ahash值,例如值为100100这个槽在server1上,所以a应该放到server1.

 

Key:hello

Hash值:10032,此槽在server2上。Hell可以应该存在server2.


2.1.2 redis-cluster投票:容错

 

(1)领着投票过程是集群中所有master参与,如果半数以上master节点与master节点通信超过(cluster-node-timeout),认为当前master节点挂掉.

(2):什么时候整个集群不可用(cluster_state:fail)? 

    a:如果集群任意master挂掉,且当前master没有slave.集群进入fail状态,也可以理解成集群的slot映射[0-16383]不完成时进入fail状态. ps : redis-3.0.0.rc1加入cluster-require-full-coverage参数,默认关闭,打开集群兼容部分失败.

    b:如果集群超过半数以上master挂掉,无论是否有slave集群进入fail状态.

  ps:当集群不可用时,所有对集群的操作做都不可用,收到((error) CLUSTERDOWN The cluster is down)错误

 

2.2 我们的集群结构

集群中有三个节点的集群,每个节点有一主一备。需要6台虚拟机。

搭建一个伪分布式的集群,使用6redis实例来模拟。

 

2.3 搭建集群需要的环境

搭建集群需要使用到官方提供的ruby脚本。

需要安装ruby的环境。

安装rubyyum install rubyyum install rubygems redis集群管理工具redis-trib.rb[root@bogon ~]# cd redis-3.0.0[root@bogon redis-3.0.0]# cd src[root@bogon src]# ll *.rb-rwxrwxr-x. 1 root root 48141 Apr  1 07:01 redis-trib.rb[root@bogon src]#


脚本需要的ruby包:

需要上传到linux服务。

安装ruby的包:


gem install redis-3.0.0.gem[root@bogon ~]# gem install redis-3.0.0.gemSuccessfully installed redis-3.0.01 gem installedInstalling ri documentation for redis-3.0.0...Installing RDoc documentation for redis-3.0.0... 


2.4 集群的搭建

第一步:创建6redis实例,端口号从7001~7006

第二步:修改redis的配置文件

1、修改端口号

 

2打开cluster-enable前面的注释。

 

第三步:把创建集群的ruby脚本复制到redis-cluster目录下。

第四步:启动6redis实例

第五步:创建集群。

./redis-trib.rb create --replicas 1 192.168.25.153:7001 192.168.25.153:7002 192.168.25.153:7003 192.168.25.153:7004 192.168.25.153:7005  192.168.25.153:7006[root@bogon redis-cluster]# ./redis-trib.rb create --replicas 1 192.168.25.153:7001 192.168.25.153:7002 192.168.25.153:7003 192.168.25.153:7004 192.168.25.153:7005  192.168.25.153:7006>>> Creating clusterConnecting to node 192.168.25.153:7001: OKConnecting to node 192.168.25.153:7002: OKConnecting to node 192.168.25.153:7003: OKConnecting to node 192.168.25.153:7004: OKConnecting to node 192.168.25.153:7005: OKConnecting to node 192.168.25.153:7006: OK>>> Performing hash slots allocation on 6 nodes...Using 3 masters:192.168.25.153:7001192.168.25.153:7002192.168.25.153:7003Adding replica 192.168.25.153:7004 to 192.168.25.153:7001Adding replica 192.168.25.153:7005 to 192.168.25.153:7002Adding replica 192.168.25.153:7006 to 192.168.25.153:7003M: 5a8523db7e12ca600dc82901ced06741b3010076 192.168.25.153:7001   slots:0-5460 (5461 slots) masterM: bf6f0929044db485dea9b565bb51e0c917d20a53 192.168.25.153:7002   slots:5461-10922 (5462 slots) masterM: c5e334dc4a53f655cb98fa3c3bdef8a808a693ca 192.168.25.153:7003   slots:10923-16383 (5461 slots) masterS: 2a61b87b49e5b1c84092918fa2467dd70fec115f 192.168.25.153:7004   replicates 5a8523db7e12ca600dc82901ced06741b3010076S: 14848b8c813766387cfd77229bd2d1ffd6ac8d65 192.168.25.153:7005   replicates bf6f0929044db485dea9b565bb51e0c917d20a53S: 3192cbe437fe67bbde9062f59d5a77dabcd0d632 192.168.25.153:7006   replicates c5e334dc4a53f655cb98fa3c3bdef8a808a693caCan I set the above configuration? (type 'yes' to accept): yes>>> Nodes configuration updated>>> Assign a different config epoch to each node>>> Sending CLUSTER MEET messages to join the clusterWaiting for the cluster to join.....>>> Performing Cluster Check (using node 192.168.25.153:7001)M: 5a8523db7e12ca600dc82901ced06741b3010076 192.168.25.153:7001   slots:0-5460 (5461 slots) masterM: bf6f0929044db485dea9b565bb51e0c917d20a53 192.168.25.153:7002   slots:5461-10922 (5462 slots) masterM: c5e334dc4a53f655cb98fa3c3bdef8a808a693ca 192.168.25.153:7003   slots:10923-16383 (5461 slots) masterM: 2a61b87b49e5b1c84092918fa2467dd70fec115f 192.168.25.153:7004   slots: (0 slots) master   replicates 5a8523db7e12ca600dc82901ced06741b3010076M: 14848b8c813766387cfd77229bd2d1ffd6ac8d65 192.168.25.153:7005   slots: (0 slots) master   replicates bf6f0929044db485dea9b565bb51e0c917d20a53M: 3192cbe437fe67bbde9062f59d5a77dabcd0d632 192.168.25.153:7006   slots: (0 slots) master   replicates c5e334dc4a53f655cb98fa3c3bdef8a808a693ca[OK] All nodes agree about slots configuration.>>> Check for open slots...>>> Check slots coverage...[OK] All 16384 slots covered.[root@bogon redis-cluster]#


2.5 测试集群

[root@bogon redis-cluster]# redis01/redis-cli -h 192.168.25.153 -p 7002 -c  [root@bogon redis-cluster]# redis01/redis-cli -h 192.168.25.153 -p 7002192.168.25.153:7002> set a 100(error) MOVED 15495 192.168.25.153:7003192.168.25.153:7002>[root@bogon redis-cluster]# redis01/redis-cli -h 192.168.25.153 -p 7002 -c192.168.25.153:7002> set a 100-> Redirected to slot [15495] located at 192.168.25.153:7003OK192.168.25.153:7003>


2.6 关闭redis

redis01/redis-cli -p 7001 shutdown


0 0
原创粉丝点击