Redis 與其餘 key - value 緩存產品有如下三個特色:linux
- Redis支持數據的持久化,能夠將內存中的數據保存在磁盤中,重啓的時候能夠再次加載進行使用。
- Redis不單單支持簡單的key-value類型的數據,同時還提供list,set,zset,hash等數據結構的存儲。
- Redis支持數據的備份,即master-slave模式的數據備份。
redis-cli
複製代碼
![]()
- 設置遠程訪問
![]()
![]()
##2.linux安裝redis
#輸入命令
make
#完畢以後在當前窗口輸入新的命令
sudo make install
複製代碼
#啓動redis服務
./redis-server redis.conf
#查看redis服務進程 是否啓動成功
ps -ef | grep redis
ps -A | grep redis
#redis客戶端啓動
redis-cli
#關閉redis服務
ps -A | grep redis
複製代碼
#3.redis常見配置數據庫
- 常見配置項
- bind 127.0.0.1 [綁定ip地址,遠程訪問請註釋]
- port 6379 [默認訪問地址 6379]
- daemonize yes [是否之後臺進程<守護進程>運行]
- dbfilename dump.rdb [存儲數據的文件]
- dir ./. [存儲數據的文件所在路徑]
- **redis的數據存儲:**key=value 鍵值對
- **key<鍵>的數據類型:**字符串
- value<值的類型>:
- string字符串
- hash哈希
- list列表
- set集合
- zset有序集合
#4.redis數據操做windows
**set key value :**給一個key賦值value **setex key seconds value:**給一個key設置值value,過時時間seconds **mset key value [key value]:**設置多個鍵值對緩存
**get key:**根據key獲取一個值 **mget key [key]:**根據多個key獲取多個值bash
**incr key :**將key對應的值+1 **incrby key increment:**將key對應的值+increment **decr key:**將key對應的值-1 **decrby key increment:**將key對應的值-increment服務器
**append key value:**將value的值拼接到x後面 **strlen key:**獲取key對應的值的長度網絡
**keys pattern:**查找鍵,支持正則 **exists key:**查找鍵是否存在,存在返回1,不然返回0 **type key:**查看鍵對應的值的類型 **del key:**根據key刪除鍵值對 **expire key seconds:**給key設置過時時間 **ttl key:**查看鍵的有效時間(顯示結果爲-2 的話表示過時,-1表示永不過時)數據結構
**hset key field value:**設置單個屬性 **hmset key field value [field value]:**設置多個屬性架構
**hget key field :**獲取key對應的值 **hmget key field [field]:**獲取多個key對應的value值 **hgetall key:**獲取全部屬性和值 **hkeys key:**獲取全部的屬性 **hlen key:**獲取包含屬性的個數 **hvals key:**獲取全部的值 **hexists key field:**判斷屬性是否存在 **hdel key field [field]:**根據屬性名稱刪除屬性及值 **hstrlen key field:**返回值的字符串長度
**lpush key value [value]:**列表頭部增長多個數據 **rpush key value [value]:**列表尾部增長多個數據 **linsert key before | after privot value:**在一個元素錢/後插入數據 **lset key index value:**設置指定索引的元素的值
**lpop key:**刪除而且獲取key對應的list第一個元素 **rpop key:**刪除而且獲取key對應的list最後一個元素 **lrange key start stop:**返回存在在key的list中指定範圍的數據
**llen key:**獲取列表的長度 **lindex key index:**獲取列表中索引對應的元素 **ltrim key start stop:**獲取列表中start~stop組成的新的列表
**sadd key value [value]:**添加多個數據到key集合中 **smembers key:**獲取key集合中全部的數據 **sismember key value:**判斷value是否在key集合中存在 **scard key:**獲取key集合中元素的個數
**sinter key [key]:**獲取多個集合 交集 **sdiff key [key]:**獲取多個集合的差集 **sunion key [key]:**獲取多個集合的並集
- sorted set,有序集合
- 元素爲string類型
- 元素具備惟一性,不重複
- 每一個元素都會關聯一個double類型的score,表示權重,經過權重將元素從小到大排序
- 元素的score能夠相同
**zadd key score value [ score value]:**添加多個帶權重的數據到key集合中 **zrange key start stop:**獲取指定範圍中全部的元素 **zcard key:**返回元素的個數 **zcount key min max :**返回score值在min和max之間的數據 **zscore key member:**返回集合中member元素的score值
#5.redis發佈訂閱
- 發佈者不是計劃發送消息給特定的接收者(訂閱者),而是發佈的消息分到不一樣的頻道,不須要知道什麼樣的訂閱者訂閱
- 訂閱者對一個或多個頻道感興趣,只需接收感興趣的消息,不須要知道什麼樣的發佈者發佈的
- 發佈者和訂閱者的解耦合能夠帶來更大的擴展性和更加動態的網絡拓撲
- 客戶端發到頻道的消息,將會被推送到全部訂閱此頻道的客戶端
- 客戶端不須要主動去獲取消息,只須要訂閱頻道,這個頻道的內容就會被推送過來
推送消息的格式包含三部分
part1:消息類型,包含三種類型
- subscribe,表示訂閱成功
- unsubscribe,表示取消訂閱成功
- message,表示其它終端發佈消息
若是第一部分的值爲subscribe,則第二部分是頻道,第三部分是如今訂閱的頻道的數量
若是第一部分的值爲unsubscribe,則第二部分是頻道,第三部分是如今訂閱的頻道的數量,若是爲0則表示當前沒有訂閱任何頻道,當在Pub/Sub之外狀態,客戶端能夠發出任何redis命令
若是第一部分的值爲message,則第二部分是來源頻道的名稱,第三部分是消息的內容
subscribe 頻道名稱 [頻道名稱]:訂閱多個頻道
unsubscribe 頻道名稱 [頻道名稱]:取消多個頻道的訂閱
publish 頻道 消息:向指定的頻道推送消息
複製代碼
###打開多個命令窗口:
輸入命令:
#啓動redis redis-cli #選擇數據庫 select 0 #訂閱頻道 subscribe zhiji 複製代碼
輸入命令
#啓動redis redis-cli #選擇數據庫 select 1 #發佈消息 publish zhiji 'hellow' 複製代碼
#6.主從雙備
主從配置 一個master能夠擁有多個slave,一個slave又能夠擁有多個slave,如此下去,造成了強大的多級服務器集羣架構 好比,將ip爲192.168.1.10的機器做爲主服務器,將ip爲192.168.1.11的機器做爲從服務器
設置主服務器的配置 bind 192.168.1.10 設置從服務器的配置 注意:在slaveof後面寫主機ip,再寫端口,並且端口必須寫
經過redis.**.conf配置完成主從雙備
bind配置主數據庫服務器
slaveof配置從數據庫服務器
bind 192.168.1.11 slaveof 192.168.1.10 6379 在master和slave分別執行info命令,查看輸出信息
在master上寫數據
set hello world 在slave上讀數據
get hello
複製代碼