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
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章