前言
redis是非關係型數據庫,本質是一個基於內存的數據庫,所有數據和結構都存儲在內存中,所以redis所有的操作都非常高速。它支持數據的備份,即master-slave模式的數據備份,支持數據的持久化,可以將內存中的數據保存在磁盤中,具有兩種持久化方式----RDB方式和AOF方式。具有客戶端和服務端兩部分,客戶端和服務端可以部署在不同的機器上,他們直接通過自定義的協議交互,平時說的redis通常指的是服務端。端口號默認爲6379,因爲 6379 在手機按鍵上 MERZ 對應的號碼,而據說 MERZ 取自意大利歌女 Alessia Merz 的名字
主要有多數據庫和事務兩個特性,默認支持16個數據庫,客戶端與Redis建立連接後會自動選擇0號數據庫;並且redis的事務和關係型的事務不一樣,傳統的數據庫事務一組操作單元,要麼全部成功,要麼全都失敗,而Redis在執行一個命令集合的時候,可能會出現集合的一些命令成功,一些命令失敗。
Redis有五種數據類型,分別是String、List、Set、Hash和Sorted Set(zset)
String 可以是字符串、整數或浮點,統稱爲元素,是 Redis 最基本的數據類型
List是一個序列集合(有序),且每個結點都包好了一個元素 ,按照插入順序排序
Set 各不相同(唯一)的元素,從集合中插入或刪除元素,集合是通過哈希表實現的
Hash是帶key-value 的散列組,其中Key是字符串,value是元素按照key進行增加刪除
Sorted Set(zset) 是帶分數的score-value有序集合,其中score爲浮點,value爲元素
應用場景有緩存、隊列、數據存儲、網站訪問統計和數據過期處理等
一、redis安裝
1、環境準備
yum -y install gcc
redis-4.0.9.tar.gz
CentOS 7.x
2、拷貝到Linux的/usr/local中,執行解壓操作
tar -zxvf redis-4.0.9.tar.gz
mv redis-4.0.9 redis #改名
2、編譯安裝
cd redis
make #編譯
make install #安裝
4、拷貝配置文件,方便管理
在redis目錄下創建bin和etc文件
mkdir etc bin
找到redis.conf,將其複製移動到 新建的etc 下
mv redis.conf /usr/local/redis/etc/
cd /usr/local/redis/src #進入src目錄,繼續拷貝以下文件
mv mkreleasehdr.sh redis-benchmark redis-check-aof redis-check-rdb redis-cli redis-server /usr/local/redis/bin/
5、啓動redis
在/usr/local/redis/bin/目錄下執行
./redis-server #啓動redis
這時redis已經成功啓動了,但是因爲是前臺啓動,我們不能做任何操作,關閉窗口,redis就關閉了
5、後臺啓動redis
vim /usr/local/redis/etc/redis.conf
將daemonize屬性改爲yes
然後再次進入usr/local/redis/bin目錄啓動redis
cd /usr/lcoal/redis/bin
./redis-server /usr/local/redis/etc/redis.conf #指明配置文件啓動redis
6、啓動客戶端
redis-cli #連接本地的redis服務
redis-cli -h host -p port -a password #客戶端連接遠程服務 指定主機IP和端口號,若有時出現中文亂碼 在 redis-cli 後面加上 --raw就可避免
redis-cli shutdown #停止redis服務,當然也可以強行殺死進程,但是這樣可能會造成持久化的數據丟失
二、ruby安裝
1、環境準備
Ruby是一種純粹的面向對象編程語言。
ruby-2.2.2.tar.gz
CentOS 7.x
2、拷貝到Linux的/usr/local中,執行解壓操作
tar zxvf ruby-2.2.2.tar.gz
mv ruby-2.2.2 ruby #改名
3、編譯安裝
cd ruby #進入ruby安裝目錄
./configure
make
make install
export PATH=/usr/local/ruby/bin:$PATH #環境變量設置
問題:ERROR: Loading command: install (LoadError) cannot load such file – zlib ERROR: While executing gem … (NoMethodError) undefined method `invoke_with_build_args’ for nil:NilClass
解決方法: yum -y install zlib zlib-devel
問題:ERROR: Loading command: install (LoadError) cannot load such file – openssl
解決方法:yum -y install openssl openssl-devel
4、檢測是否安裝好
ruby -v
三、rubygems安裝
1、環境準備
RubyGems 是 Ruby 的一個包管理器,它提供一個分發 Ruby 程序和庫的標準格式,還提供一個管理程序包安裝的工具
rubygems-3.0.6.tgz
CentOS7.x
2、拷貝到Linux的/usr/local中,執行解壓操作
tar -zxvf rubygems-3.0.6.tgz
3、進入解壓目錄,執行命令
cd rubygems-3.0.6
ruby setup.rb #若提示ruby命令沒找到 但是ruby已經安裝了 可能是因爲沒添加到環境變量
四、redis-3.2.1.gem安裝(redis和ruby的 接口程序)
1、將軟件上傳到/usr/local目錄下
2、執行命令
gem install -l redis-3.2.1.gem
五、redis單機多節點集羣搭建
1、創建節點
我們先在根目錄下創建一個redis_cluster目錄,因爲要搭建三主三從總共六個節點,在redis_cluster目錄下再創建六個節點目錄
mkdir /redis_cluster
cd /redis_cluster
mkdir redis_7001 redis_7002 redis_7003 redis_7004 redis_7005 redis_7006 #創建節點目錄
2、修改配置
分別複製redis安裝目錄下的redis.conf配置文件到/redis_cluster下的六個節點目錄中,如上圖
以redis_7001爲例
cp /usr/local/redis/etc/redis.conf /redis_cluster/redis_7001/
按照類似操作依次複製到redis_7002-7006節點目錄當中
接下來要分別修改這六個節點的配置文件
以redis_7001爲例:
port 7001 //六個節點配置文件端口分別是7001-7006
daemonize yes //redis後臺運行
pidfile /var/run/redis_7001.pid //pidfile文件對應7001-7006
cluster-enabled yes //開啓集羣
cluster-config-file nodes_7001.conf //保存節點配置,自動創建,自動更新對應7001-7006
cluster-node-timeout 5000 //集羣超時時間,節點超過這個時間沒反應就斷定是宕機
appendonly yes //存儲方式,aof,將寫操作記錄保存到日誌中
注意:根據不同的節點目錄按相應要求修改即可,上述操作的要去掉前面的# 否則被註釋,該行不起作用
3、啓動節點的redis
爲方便啓動,可以寫一個啓動腳本,以後每次啓動執行腳本即可
腳本內容如下:
#!/bin/bash
#redis server start
cd /usr/local/redis/bin/
./redis-server /redis_cluster/redis_7001/redis.conf
./redis-server /redis_cluster/redis_7002/redis.conf
./redis-server /redis_cluster/redis_7003/redis.conf
./redis-server /redis_cluster/redis_7004/redis.conf
./redis-server /redis_cluster/redis_7005/redis.conf
./redis-server /redis_cluster/redis_7006/redis.conf
執行腳本,啓動6個節點
sh openredis.sh #openredis.sh是我的腳本名
查看redis是否啓動
ps aux | grep redis
4、創建集羣
複製redis的src目錄下的redis-trib.rb文件到redis-cluster目錄
cp /usr/local/redis/src/redis-trib.rb /redis_cluster/
cd /redis_cluster
./redis-trib.rb create --replicas 1 127.0.0.1:7001 127.0.0.1:7002 127.0.0.1:7003 127.0.0.1:7004 127.0.0.1:7005 127.0.0.1:7006 #--replicas 1 表示爲每個主節點創建一個從節點
5、驗證
cd /usr/local/redis/bin #即redis-cli所在的目錄
./redis-cli -c -p 7001 #-c 代表集羣模式 -p 表示端口號-h表示主機地址
6、一些簡單操作
刪除從節點
./redis-trib.rb del-node 127.0.0.1:7001 97093dbf1f03d773400423feed29c24c8995284b
127.0.0.1:7001 從節點;97093dbf1f03d773400423feed29c24c8995284b 從節點ID
添加從節點
./redis-trib.rb add-node --slave --master-id be76239d591b88a5dd0c7fa686dc1c1792abdda4 127.0.0.1:7004 127.0.0.1:7005
–slave 表示添加的是從節點
-master-id be76239d591b88a5dd0c7fa686dc1c1792abdda4 主節點的node-id
127.0.0.1:7004 主節點
查看集羣節點
cluster nodes
查看key對應的slot
cluster keyslot key
查看slot和節點的對應關係
cluster slots
查看集羣信息
cluster info
(注:部分資料來源於網絡,如有侵權,請聯繫作者)