Redis 详解

redis 介绍部署

官网:http://www.redis.io/
http://www.redis.cn/
http://blog.nosqlfan.com/

1、redis 简介

Remote Dictionary Server(Redis)是一个基于key-value键值对的持久化数据库存储系统,redis和大名鼎鼎的memcached缓存服务很像,但是redis支持的数据类型更加丰富,包括string(字符串)、list(链表)、set(集合)和zset(有序集合)等。
这些数据类型都是支持push/php、add/remove及取交集、并集和差集以及更加丰富的操作,而且这些操作都是原子性的,在此基础上,redis还支持各种不同的排序,与memcached缓存服务一样,为了保证效率,数据都是缓存在内存中提供服务,和memcached不同的是,redis持久化缓存服务还会周期性把更新的数据写到磁盘已经把修改的操作记录追加到文件里记录,比memcached更有优势的是,redis还支持主从同步,这点很类似关系型数据库mysql。
redis的出现在一定程度上弥补了memcached这类key-value内存缓存服务不足,在部分场合上可以对关系型数据库起到很好的补充作用。

1.redis优点
性能很高:redis能支持超过10万每秒的读写评论
丰富的数据类型:redis支持二进制的strings,lists,hashes,set已经ordered set等数据类型操作
原子:redis的所有操作都是原子性的,同时redis还支持对几个操作全并后的原子性操作
丰富的特性:
主从复制:redis支持异机主从复制
2.数据类型:
string 字符串类型
list(链表)
set(集合)
zset(有序集合
hash 哈希

3.redis的应用场景
传统的mysql+memcached的网站架构遇到的问题
mysql数据库实际上是合适进行海量数据存储的,加上通过memcached将热点数据存放到内存cache里,达到加速数据访问的目的,绝大部分公司都曾经使用过这样的架构,但随着业务数量的不断增加,和访问量的持续增加,很多问题就会暴露出来

  • 需要不断对mysql进行拆库拆表,memcached也需要不断跟着扩容,扩容和维护需要大量开发和运维时间
  • memcached和mysql数据库数据一致性问题也是个大难题
  • memcached数据命中率低或宕机,会导致大量的访问直接穿透数据库,导致mysql数据库无法支撑访问
  • 跨机房cache同步一致性问题
    所以就有了下面redis的应用场景:
  • redis最佳试用场景是全部数据in-memory
  • redis更多场合作为memcached的代替品来使用
  • 当需要除了key-value之外的更多数据类型支撑时,使用redis更加合适
  • 支持持久化
  • 需要负债均衡的场景

2、安装redis

1.安装gcc环境
yum install gcc-c++

2.下载源码包并解压
wget http://download.redis.io/releases/redis-3.2.9.tar.gz
tar -zxvf redis-3.2.9.tar.gz
cd redis-3.2.9

3.安装ruby2.4.1并编译(一定要安装大于2.2.2的ruby,要不然redis在make的时候会报错)
wget http://ftp.ruby-lang.org/pub/ruby/2.4/ruby-2.4.1.tar.gz
tar -zxvf ruby-2.4.1.tar.gz
cd ruby-2.4.1
mkdir -p /usr/local/ruby
./configure --prefix=/usr/local/ruby
make && make install
ln -s /usr/local/ruby/bin/ruby /usr/bin/ruby

4.安装
make
make install PREFIX=/usr/local/redis
cp redis.conf /usr/local/redis/bin/redis.conf
chmod /usr/local/redis/bin/redis.conf

5.启动redis
./redis-server redis.conf

6.验证
./redis-cli -p 6379
127.0.0.1:6379> set ab 123
OK
127.0.0.1:6379> get ab
"123"

3、搭建redis集群

1.在/usr/local/下面创建redis-cluster目录
mkdir -p /usr/local/redis-cluster

2.复制/usr/local/redis/bin目录到redis-cluster里面并重命名为redis1
cd /usr/local
cp -r redis/bin redis-cluster/redis1

3.redis1,redis2,redis3,redis4,redis5,redis6(必须6个节点以上才能创建集群)
分别修改为redis-7001.conf,redis-7002.conf 依次到redis-7006.conf

以redis-7001为例:
daemonize yes
port 7001
logfile "./redis-7001.log"
protected-mode no
pidfile /var/run/redis_7001.pid
cluster-enabled yes
appendonly yes

4.将redis-trib.rb复到制redis-cluster目录里面
cp /root/redis-3.2.4/src/redis-trib.rb ./redis-cluster

5.安装gem
yum install rubygems -y

6.安装ruby的redis包
gem install redis

7.分别进入redis1,redis2,redis3,redis4,redis5,redis6里面执行
./redis-server redis-7001.conf

8.用redis-trib.rb构建集群
cd /usr/local/redis-cluster/
./redis-trib.rb create --replicas 1 172.16.0.100:7001 172.16.0.100:7002 172.16.0.100:7003 172.16.0.100:7004 172.16.0.100:7005 172.16.0.100:7006

9.验证集群是否成功
./redis-cli -h 172.16.0.100 -c -p 7002

> set hello helloword
> get hello
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章