1. 程式人生 > >使用ThinkPHP擴充套件,實現Redis的CURD操作。

使用ThinkPHP擴充套件,實現Redis的CURD操作。

一、概述

Redis是一個NoSQL資料庫,由於其資料型別的差異,所以要在MVC框架中實現CURD操作,比較繁鎖。事實上在ThinkPHP框架中,只能實現簡單的快取應用。而不像MongoDB那樣能夠實現常見資料庫的CURD操作。本文章將通過擴充套件的方式,實現Redis的CURD操作,這樣我們就可以像操作普通的Mysql資料庫那樣實現Redis的程式設計了。


二、實現過程

接下為將以ThinkPHP作為MVC開發框架,詳細介紹Redis的CURD操作。需要說明的是,在ThinkPHP中本身並不支援Redis開發環境,只支援使用Redis開發簡單的資料快取功能。所以我們必須要通過擴充套件功能,實現Redis的程式設計支援。為了方便讀者學習,筆者臨時開發了相應的模組擴充套件及資料庫擴充套件。

下載址為  http://beauty-soft.net/book/php_mvc/code/thinkphp_redis.html

解壓下載後的壓縮包,將得到DbRedis.class.php檔案及RedisModel.class.php檔案。將DbRedis.class.php檔案複製到ThinkPHP/Extend/Driver/Db目錄;將RedisModel.class.php檔案複製到ThinkPHP/Extend/Model目錄。然後在專案配置檔案中加入Redis資料庫連線資訊,如以下程式碼所示。

[html]  
view plain
copy
  1. 'REDIS_HOST'=>'192.168.0.2', 
  2. 'REDIS_PORT'=>6379, 
  3. 'REDIS_AUTH'=>123456, 
  4. 'REDIS_DB_PREFIX'=>'', 
[html]   view plain copy
  1. 'REDIS_HOST'=>'192.168.0.2',  
  2. 'REDIS_PORT'=>6379,  
  3. 'REDIS_AUTH'=>123456,  
  4. 'REDIS_DB_PREFIX'=>'',  

讀者可根據實際環境填寫即可。通過前面步驟,至此就完成了在ThinkPHP中進行Redis開發的前期準備,接下來將結合示例程式碼,詳細演示Redis的CURD操作。

1、增加資料

這裡的增加資料包括Redis五大資料型別的資料新增。由於篇幅所限,這裡不再詳細介紹操作的實現原理,將通過程式碼演示操作方式。如以下程式碼所示。

[html]   view plain copy
  1. <?php 
  2. /** 
  3. * redis新增資料 
  4. * Enter description here ... 
  5. * @author Administrator 
  6. */ 
  7. class AddAction extends Action{ 
  8.     /** 
  9.      * list型別 
  10.      * Enter description here ... 
  11.      */ 
  12.     public function lists(){ 
  13.         $Redis=new RedisModel("list11"); 
  14.         //一次只能推送一條       
  15.         echo $Redis->add("ceiba"); 
  16.     } 
  17.      /** 
  18.      * 字串型別 
  19.      * Enter description here ... 
  20.      */ 
  21.     public function string(){ 
  22.         $Redis=new RedisModel(); 
  23.         $data=array
  24.             "str1"=>"ceiba", //一個key,對應一個值 
  25.             "str2"=>"李開湧", 
  26.             "str3"=>"李明", 
  27.         ); 
  28.         echo $Redis->type("string")->add($data); 
  29.     } 
  30.     /** 
  31.      * HASH型別 
  32.      * Enter description here ... 
  33.      */ 
  34.     public function hash(){ 
  35.         $Redis=new RedisModel("user:1"); 
  36.              $data=array
  37.                "field1"=>"ceiba", //一個key,對應一個值 
  38.                "field2"=>"李開湧", 
  39.                "field3"=>"李明", 
  40.              ); 
  41.              //支援批量新增 
  42.              echo $Redis->type("hash")->add($data);        
  43.     } 
  44.      /** 
  45.      * 集合型別 
  46.      * Enter description here ... 
  47.      */ 
  48.     public function sets(){ 
  49.              $Redis=new RedisModel("sets:1"); 
  50.         //一次只能推送一條       
  51.         echo $Redis->type("sets")->add("ceiba"); 
  52.     } 
  53.       /** 
  54.      * 有序集合 
  55.      * Enter description here ... 
  56.      */ 
  57.     public function zset(){  
  58.         $Redis=new RedisModel("zset:1"); 
  59.         //支援批量新增 
  60.         $data=array
  61.             //排序=>值 
  62.             "10"=>"ceiba", 
  63.             "11"=>"李開湧", 
  64.             "12"=>"李明" 
  65.         );       
  66.         echo $Redis->type("zset")->add($data); 
  67.     } 
  68. ?> 
[html]   view plain copy 在CODE上檢視程式碼片 派生到我的程式碼片
  1. <?php  
  2. /**  
  3.  * redis新增資料  
  4.  * Enter description here ...  
  5.  * @author Administrator  
  6.  *  
  7.  */  
  8. class AddAction extends Action{  
  9.     /**  
  10.      * list型別  
  11.      * Enter description here ...  
  12.      */  
  13.     public function lists(){  
  14.         $Redis=new RedisModel("list11");  
  15.         //一次只能推送一條        
  16.         echo $Redis->add("ceiba");  
  17.     }  
  18.      /**  
  19.      * 字串型別  
  20.      * Enter description here ...  
  21.      */  
  22.     public function string(){  
  23.         $Redis=new RedisModel();  
  24.         $data=array(  
  25.             "str1"=>"ceiba", //一個key,對應一個值  
  26.             "str2"=>"李開湧",  
  27.             "str3"=>"李明",  
  28.         );  
  29.         echo $Redis->type("string")->add($data);  
  30.     }  
  31.     /**  
  32.      * HASH型別  
  33.      * Enter description here ...  
  34.      */  
  35.     public function hash(){  
  36.         $Redis=new RedisModel("user:1");  
  37.              $data=array(  
  38.                "field1"=>"ceiba", //一個key,對應一個值  
  39.                "field2"=>"李開湧",  
  40.                "field3"=>"李明",  
  41.              );  
  42.              //支援批量新增  
  43.              echo $Redis->type("hash")->add($data);         
  44.     }  
  45.      /**  
  46.      * 集合型別  
  47.      * Enter description here ...  
  48.      */  
  49.     public function sets(){  
  50.              $

    相關推薦

    使用ThinkPHP擴充套件實現Redis的CURD操作

    一、概述 Redis是一個NoSQL資料庫,由於其資料型別的差異,所以要在MVC框架中實現CURD操作,比較繁鎖。事實上在ThinkPHP框架中,只能實現簡單的快取應用。而不像MongoDB那樣能夠實現常見資料庫的CURD操作。本文章將通過擴充套件的方式,實現Redis的CURD操作,這樣我們就

    封裝read、write、accept、connect函式實現超時操作

    學習linux網路程式設計的時候,看視訊學習,封裝了一些可以直接拿來用的函式,方便以後查詢。 /**  * read_timeout - 讀超時檢測函式,不含讀操作  *@fd: 檔案描述符  *@wait_seconds: 等待超時秒數,如果為0表示不檢測超時  * 成功

    【十七】Spring Boot 之 多資料來源(擴充套件AbstractRoutingDataSource類實現動態資料來源使用AOP註解動態切換資料來源)

    在一個專案中操作多個不同的資料來源時,需要用到多資料來源的配置。 pom.xml <?xml version="1.0" encoding="UTF-8"?> <project xmlns="http://maven.apache.org/POM/4.0

    Canvas組件:畫布可以實現動畫操作

    級聯 註意 超過 運算 pen 變量 menu 計算器 單選 Module 10 Canvas組件:畫布,可以實現動畫操作。 TextArea:文本域。 在單行文本域中回車會激發ActionEvent。 用CheckBoxGroup實現單選框功能。 Java中,

    配置不同網段靜態路由實現互聯互通

    靜態 blog 分享圖片 界面 alt tools CA ping通 默認 1.首先開啟GNS3,向試驗區拖取4個模擬路由器,3個模擬PC機,並標好後續需要給各個接口設置的IP網段地址:2.開啟所有的設備然後在GNS3工具欄/Tools/打開VPCS命令字符界面,並設置3臺

    SSM:物件資料實現基本操作

    上期 基本配置   package com.cn.model; public class User { private int userId; private String userName; private int userSum; pub

    Linq 多個DataTable表關聯查詢實現考勤統計

    最近在做考勤系統時,由於不同的分公司的資料來源在不同的伺服器上,關聯查詢比較麻煩,因此想到了用Linq實現關聯查詢。 思路:查詢各個考勤資訊的dataTable,然後用Linq實現DataTable的多張表左關聯查詢。貼出來,與大家分享。 程式碼實現如下: 1.View顯示:

    MVC路由配置實現偽靜態

    前段時間,研究了一下mvc路由配置偽靜態,在網上扒了很多最後還是行不通,所以我現在把這些心得整理出來,供大家分享: 1、mvc中預設路由配置是:http://localhost:24409/Home/Index routes.MapRoute( name: "Default", url: "{contr

    使用Struts2 開發一個簡易的《B2C電子商務網站》 個人自擬題目選擇一大類商品實現此網站比如圖書、電子圖書、運動鞋、嬰兒用品、家電、手機、電腦等等

    必須使用struts2、Hibernate,網站主要包括以下功能: 主頁:以文字與圖片的形式介紹此商務網站,並內含使用者登陸入口及新使用者的註冊超鏈。 使用者註冊:輸入使用者郵箱地址或手機號碼,完成使用者註冊。要求(1)使用struts2相關技術對郵箱地址和手機號碼進行合

    Android ListView功能擴充套件實現高效能的瀑布流佈局

    經過前面兩篇文章的學習,我們已經對ListView進行了非常深層次的剖析,不僅瞭解了ListView的原始碼和它的工作原理,同時也將ListView中常見的一些問題進行了歸納和總結。那麼本篇文章是我們ListView系列三部曲的最後一篇,在這篇文章當中我們將對ListView

    HTML 固定div於頁面固定位置實現懸浮按鈕

    一個小需求,頁面過長,業務希望將按鈕懸浮於頁面上,不要一下拉就蓋掉操作按鈕。 程式碼如下: <div id="dg" style="z-index: 9999; position: fixed ! important; right: 0px; top: 0px;"&

    計算機二級-C語言-程式填空題-190112記錄-結構體的遍歷和結構體的資料的交換處理檔案的操作

    //程式設計題:學生的記錄由學號和成績組成,N名學生的資料已在主函式中放入結構體陣列s中,請編寫函式fun,它的功能是:把分數低的學生資料放在b所指的陣列中,注意:分數最低的學生可能不止一個,函式返回分數最低的學生人數。 //重難點:結構體的定義。結構體的使用。檔案指標的定義。對檔案的操作。輸出格式‘%4d

    mysql學習一:基礎語法對庫操作對錶操作

    一,mysql安裝內容 1、mysql.exe表示客戶端程式。 2、mysqld.exe表示伺服器端程式。 3、windows命令視窗打services.msc可以開啟檢視所有的服務程式。 二、mysql的開啟,關閉 mysql分文mysql伺服器和mysql客戶端,使用my

    Hibernate增加一條記錄級聯操作

    在增加一條資訊時,沒有設定級聯操作,於是在資料庫裡每次都會新生成一個model_Id,沒有新增進指定的模組裡。 報錯:object references an unsaved transient instance - save the transient instance

    單鏈表的建立實現操作

    #include<cstdio> #include<algorithm> #include<stack> #include<iostream> #include<malloc.h> using namespace std; typedef struc

    iOS 通過textfield的代理方法實現不進入編輯實現別的操作

    有時候需要展示一個搜尋框,但是並不是在當前頁面進行輸入,而是跳轉至下一個頁面。這時候不想要自定義一個控制元件,然後通過textfield實現。一開始想的太過複雜,想要在上面覆蓋一個按鈕來實現,不過太麻

    spring配置日誌切面實現系統操作日誌記錄

    //做系統是經常會遇到的情況之一,對系統操作日誌存表記錄 下面給出下例子 需要注意的是,日誌通常資料量會很大,建議已每個人月一張表,或者其他方式分表 例如:logs_2012_1             logs_2012_2             logs_2012_

    jsp登入頁面捕獲enter鍵實現登入操作

    1、應瞭解,實現方式,即只要鍵盤按鍵按下並釋放,就會進行判斷是否為enter鍵。 2、瞭解如何捕獲enter鍵。 *******************************************jsp**********************************

    通過http實現調接口實現將遠程的數據庫數據插入到本地的數據當中的操作

    使用 nco 靜態頁面 sta 底層 stat user pac end 今天同事給我一個接口,讓我實現將遠程的數據的信息通過http的形式獲取到插入到本地的數據庫當中。 (1)簡單的方法是通過ajax傳遞參數,然後在後臺請求數據。 (2)通過http請求獲取到數據,然後插