1. 程式人生 > >Redis之路

Redis之路

前言:資料庫是一切資料的源頭,因此我們沒有逃避的理由

(一) 什麼是redis?

  redis是nosql(not noly sql)產品中最為出色的一種非關係型的資料庫,主要包括以下幾種儲存結構:String,list,set,hash,sorted set,為高併發而生,其中讀的速度為110000次/秒,寫的速度是81000次/秒,

 

(二) 安裝方式

  Linux : yum install epel-release(如果錯誤應該執行這個步驟,沒有就跳過)  ----->   yum -y install redis ----->啟動服務同時執行redis-cli

  Windows: https://pecl.php.net/package/redis 下載擴充套件包放入到PHP中開啟擴充套件就行(注意要檢視是不是nts/ts)下載相應的版本

(三) 資料型別的詳解 

  1.String(字元資料型別)

get 鍵名      //獲取對應鍵名的值 如果不存在返回null
set 鍵名 值 //設定對應鍵名的值
set 鍵名 值 [過期時間/秒]   //設定超時的時間

  2.hash(雜湊表)資料型別

hset 雜湊表名的名稱  欄位(key) 欄位值(value) [超時時間/s]    //設定一個值

hget 雜湊表的名稱 欄位名稱(key name) //獲取一個值

hmset 雜湊表的名稱 欄位(key) 欄位值(value)..... //一次性設定多個值也可以用這個修改資料

hgetall 欄位(key) //獲取這個鍵名的所有值即這一條資料

  3.list(連結串列資料型別)

lpush 連結串列的名稱(棧名稱) 值   //這個和入棧的模式相關,先進看不出,後進先出

rpush 連結串列的名稱(佇列) 值 //這個和佇列相關,先進先出,後進後出

lrange 連結串列的名稱 索引開始位置 索引結束位置(-1 代表獲取到全部) //這個是查詢相關的操作

lpop 連結串列名稱 //彈出(棧或者佇列)頭部的元素,並且刪除,常用這個進行秒殺的功能

rpop 連結串列名稱  //彈出(棧或者佇列)尾部的元素,並且刪除,常用這個進行秒殺的功能

ltrim 連結串列名稱 開始的位置 結束的位置 //讓列表只保留指定區間內的元素,不在指定區間之內的元素都將被刪除

  4.set 集合資料型別(無序 )

 

sadd 集合的名稱   集合的元素1....    //新增集合元素

smembers 無序集合的名稱 //獲取集合中的值

sdiff 作為標準的集合名稱 求差集的集合名稱 //求兩個集合之間的差集

sinter 集合名稱1 集合名稱2 //求兩個集合的交集

sunion 集合名稱1 集合名稱2 ... //求兩個集合的並集

scard 集合名稱 //求集合的元素的個數

srem 集合名稱 元素名稱 //用於刪除無序集合中的元素,在社交網路開發中用於黑名單功能

 

 

 

    5.zset集合資料型別(有序集合)

zadd 集合名   序號 元素      // 向有序集合中新增元素。如果該元素存在,則更新其順序。

zrange 集合名稱 開始位置(索引) 結束位置(索引)(-1 獲取全部) //按序號升序(由小到大)獲取有集合中的內容

zrevrange 集合名稱 開始位置(索引) 結束位置(索引)(-1 獲取全部) //按序號降序(由大到小)獲取有序集合中的內容


 

(四) 通用操作

  

keys *    //獲取資料庫中的所有的資料 

exists 鍵名 //判斷鍵名是否存在

select index(0-9) //選擇資料庫的空間段

del 鍵名 //刪除指定的鍵名

type 鍵名 //查詢鍵名對應的資料型別

expire 鍵名 有效期(秒數) //設定超時的時間

ttl 鍵名 //檢視一個 key 的過期剩餘時間

 

(五) redis中的密碼登入設定

  

1. 開啟redis.conf 

2.查詢到foobared 
設定成requirepass 密碼 

3.登入
redis-cli -a 密碼

 

(六) redis持久化設定

  分類:rdb(預設,在間隔固定時間進行儲存),aof(修改就儲存)

  設定成aof模式:

1.開啟redis.conf

2.修改
    appendonly no 變成yes

3.儲存資料的檔名
    appendfilename "檔案路徑"

 

(七) PHP中使用redis操作

  使用前必須確認開啟了redis擴充套件為php

 

1.php連線redis資料庫
    $redis = new Redis();
    $redis->connect(ip地址,埠);
    $redis->auth(密碼);
2.操作字元資料型別
  $redis->set(key,value) //設定值
  $redis->set(key) //獲取值

3.操作hash型別
  $redis->hSet(key,欄位名,value); //設定值
  $redis->hGet(key,欄位名); //獲取值
4.操作set無序集合
  $redis->sAdd(key,value); //設定值
  $redis->sMembers(key) //獲取值

5.操作zset有序集合
  $redis->zAdd(key,index,value); //設定值
  $redis->zRange(key,0,-1) // 升序排序
  $redis->zRange(key,0,-1,true) // 讓鍵與值互換
6.操作連結串列list
  $reids->lpush(key,value) //設定按照棧的方式入列
  $reids->rpush(key,value) //設定按照佇列的方式入列
  $redis->lpop() //從頭部出列並且刪除
  $redis->rpop() //從尾部出列並且刪除
  $redis->lRange(key,start,end) //讀取連結串列的值