Redis安裝與操作

Redis

Redis的安裝

Redis 是 c 語言開發的。

安裝 redis 需要 c 語言的編譯環境。如果沒有 gcc 需要在線安裝。yum install gcc-c++

 

安裝步驟:

第一步:redis 的源碼包上傳到 linux 系統。

 

第二步:解壓縮 redis。

tar –zxvf redis-3.0.0.tar.gz

 

第三步:編譯。進入 redis 源碼目錄。make  

cd redis-3.0.0

make

第四步:安裝。make install PREFIX=/usr/local/redis

PREFIX 參數指定 redis 的安裝目錄。

 

Redis的配置文件conf複製修改到對應的位置

 

 

 

 

 

 

 

 

 

 

連接 redis

redis 的啓動:

第一種前端

 

連接redis

退出:

 

redis 的第二種後端啓動修改redis.conf配置文件:

因爲redis.conf不是原始的配置文件,需要我們指定使用redis.conf作爲配置文件

./redis-server ../conf/redis.conf

 

Redis五種數據類型

1、String:key-value(做緩存)

Redis 中所有的數據都是字符串。命令不區分大小寫,key是區分大小寫的。Redis 是單線程

的。Redis 中不適合保存內容大的數據。

get、set、

 

 

incr:加一(生成 id) 

 

decr:減一

 

Keys *: 所有的 key

 

 

2、Hash:key-fields-values(做緩存)

相當於一個 key 對於一個 map,map 中還有 key-value

使用 hash 對 key 進行歸類。

Hset:向 hash 中添加內容

hset setName field value

 

Hkeys:查看 hash 中的 key:

 

Hvals:查看 hash 中的 value

 

Hget:從 hash 中取內容

 

Hgetall:查看所有的 key 和 value 

 

 

 

Hdel:刪除 hash 中的 key

 

 

3、List:有順序可重複

Lpush:添加一個 list,從左邊開始添加

 

Rpush:從右邊開始添加

 

Lpop 彈出元素

 

Rpop 彈出元素

 

 

4、Set:元素無順序,不能重複 

 

Srem:刪除元素

 

 

還有集合運算命令,自學。

sdiff: 差集

sinter:交集

sunion:並集

5、SortedSet(zset):有順序,不能重複 

 

 

Key 命令

設置 key 的過期時間。

Expire key second:設置 key 的過期時間

Ttl key:查看 key 的有效期

Persist key:清除 key 的過期時間。Key 持久化。

 

Redis的持久化方案

Redis 的所有數據都是保存到內存中的。

Rdb:快照形式,定期把內存中當前時刻的數據保存到磁盤。Redis 默認支持的持久化方案。

aof 形式:append only file。把所有對 redis 數據庫操作的命令,增刪改操作的命令。保存到

文件中。數據庫恢復時把所有的命令執行一遍即可。

 

在 redis.conf 配置文件中配置。

Rdb:

Aof 的配置:

兩種持久化方案同時開啓使用 aof 文件來恢復數據庫。

 

Redis集羣的搭建

redis-cluster 架構圖

redis-cluster 投票:容錯

架構細節:

(1)所有的 redis 節點彼此互聯(PING-PONG機制),內部使用二進制協議優化傳輸速度和帶

寬.

(2)節點的 fail 是通過集羣中超過半數的節點檢測失效時才生效.

(3)客戶端與 redis 節點直連,不需要中間 proxy 層.客戶端不需要連接集羣所有節點,連接集羣

中任何一個可用節點即可

(4)redis-cluster 把所有的物理節點映射到[0-16383]slot上,cluster 負責維護

node<->slot<->value

Redis 集羣中內置了 16384 個哈希槽,當需要在Redis 集羣中放置一個 key-value 時,

redis 先對 key 使用 crc16 算法算出一個結果,然後把結果對 16384 求餘數,這樣每個

key 都會對應一個編號在 0-16383 之間的哈希槽,redis 會根據節點數量大致均等的將哈

希槽映射到不同的節點

Redis 集羣的搭建

Redis 集羣中至少應該有三個節點。要保證集羣的高可用,需要每個節點有一個備份機。

Redis 集羣至少需要 6 臺服務器。

搭建僞分佈式。可以使用一臺虛擬機運行 6 個 redis 實例。需要修改 redis 的端口號 7001-7006

集羣搭建環境

1、使用 ruby 腳本搭建集羣。需要ruby 的運行環境。

安裝 ruby

yum install ruby

yum install rubygems

 

2、安裝 ruby 腳本運行使用的包。

將 redis-3.0.0.gem.tar.gz 上傳到根目錄

安裝

gem install redis-3.0.0.gem

 

 

創建redis-cluster文件

複製腳本

複製redis

注意:複製的redis必須是最原始的,裏面不許有數據

修改redis7001、redis7002、redis7003、redis7004、redis7005、redis7006的端口號以及取消註釋允許搭建集羣

 

 

 

 



啓動:

cd redis7001/bin

./redis-server  ../conf/redis.conf

cd ../../

cd redis7002/bin

./redis-server  ../conf/redis.conf

cd ../../

cd redis7003/bin

./redis-server  ../conf/redis.conf

cd ../../

cd redis7004/bin

./redis-server  ../conf/redis.conf

cd ../../

cd redis7004/bin

./redis-server  ../conf/redis.conf

cd ../../

cd redis7006/bin

./redis-server  ../conf/redis.conf

cd ../../

 

 

 

創建批量關閉

cd redis7001/bin

./redis-cli -p 7001 shutdown

./redis-cli -p 7002 shutdown

./redis-cli -p 7003 shutdown

./redis-cli -p 7004 shutdown

./redis-cli -p 7005 shutdown

./redis-cli -p 7006 shutdown

cd ../../

使用ruby腳本搭建集羣

./redis-trib.rb create --replicas 1 192.168.243.137:7001 192.168.243.137:7002 192.168.243.137:7003 192.168.243.137:7004 192.168.243.137:7005 192.168.243.137:7006

集羣使用的方法

cd redis7001/bin

./redis-cli -p 7001 –c

解釋:./redis-cli -p 7001 –c 通過端口號7001redis連接集羣裏的所有redis   

 ./redis-cli -p 7001

通過端口號7001redis

–c

集羣裏的所有的redis

Eclipse操作jedis

使用工具類

Jedis與spring整合

<!-- 配置單機版的jiedis -->

    <bean id="jedisClientPool" class="com.igeek.common.util.jedis.JedisClientPool"/>

   

    <!-- 配置一個jedisPool對象 -->

    <bean id="jedisPool" class="redis.clients.jedis.JedisPool">

       <constructor-arg name="host" value="192.168.8.111"/>

       <constructor-arg name="port" value="6379"/>

    </bean>

    <!-- 配置集羣版的jedis -->

    <bean id="jedisClientCluster" class="com.igeek.common.util.jedis.JedisClientCluster"/>

    <!-- 配置一個jedisCluster對象 -->

    <bean id="jedisCluster" class="redis.clients.jedis.JedisCluster">

       <constructor-arg name="nodes">

           <set>

              <bean class="redis.clients.jedis.HostAndPort">

                  <constructor-arg name="host" value="192.168.8.111"/>

                  <constructor-arg name="port" value="7001"/>

              </bean>

              <bean class="redis.clients.jedis.HostAndPort">

                  <constructor-arg name="host" value="192.168.8.111"/>

                  <constructor-arg name="port" value="7002"/>

              </bean>

              <bean class="redis.clients.jedis.HostAndPort">

                  <constructor-arg name="host" value="192.168.8.111"/>

                  <constructor-arg name="port" value="7003"/>

              </bean>

              <bean class="redis.clients.jedis.HostAndPort">

                  <constructor-arg name="host" value="192.168.8.111"/>

                  <constructor-arg name="port" value="7004"/>

              </bean>

              <bean class="redis.clients.jedis.HostAndPort">

                  <constructor-arg name="host" value="192.168.8.111"/>

                  <constructor-arg name="port" value="7005"/>

              </bean>

              <bean class="redis.clients.jedis.HostAndPort">

                  <constructor-arg name="host" value="192.168.8.111"/>

                  <constructor-arg name="port" value="7006"/>

              </bean>

           </set>

       </constructor-arg>

    </bean>

 

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