使用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]- 'REDIS_HOST'=>'192.168.0.2',
- 'REDIS_PORT'=>6379,
- 'REDIS_AUTH'=>123456,
- 'REDIS_DB_PREFIX'=>'',
- 'REDIS_HOST'=>'192.168.0.2',
- 'REDIS_PORT'=>6379,
- 'REDIS_AUTH'=>123456,
- 'REDIS_DB_PREFIX'=>'',
讀者可根據實際環境填寫即可。通過前面步驟,至此就完成了在ThinkPHP中進行Redis開發的前期準備,接下來將結合示例程式碼,詳細演示Redis的CURD操作。
1、增加資料
這裡的增加資料包括Redis五大資料型別的資料新增。由於篇幅所限,這裡不再詳細介紹操作的實現原理,將通過程式碼演示操作方式。如以下程式碼所示。
[html] view plain copy- <?php
- /**
- * redis新增資料
- * Enter description here ...
- * @author Administrator
- *
- */
- class AddAction extends Action{
- /**
- * list型別
- * Enter description here ...
- */
- public function lists(){
- $Redis=new RedisModel("list11");
- //一次只能推送一條
- echo $Redis->add("ceiba");
- }
- /**
- * 字串型別
- * Enter description here ...
- */
- public function string(){
- $Redis=new RedisModel();
- $data=array(
- "str1"=>"ceiba", //一個key,對應一個值
- "str2"=>"李開湧",
- "str3"=>"李明",
- );
- echo $Redis->type("string")->add($data);
- }
- /**
- * HASH型別
- * Enter description here ...
- */
- public function hash(){
- $Redis=new RedisModel("user:1");
- $data=array(
- "field1"=>"ceiba", //一個key,對應一個值
- "field2"=>"李開湧",
- "field3"=>"李明",
- );
- //支援批量新增
- echo $Redis->type("hash")->add($data);
- }
- /**
- * 集合型別
- * Enter description here ...
- */
- public function sets(){
- $Redis=new RedisModel("sets:1");
- //一次只能推送一條
- echo $Redis->type("sets")->add("ceiba");
- }
- /**
- * 有序集合
- * Enter description here ...
- */
- public function zset(){
- $Redis=new RedisModel("zset:1");
- //支援批量新增
- $data=array(
- //排序=>值
- "10"=>"ceiba",
- "11"=>"李開湧",
- "12"=>"李明"
- );
- echo $Redis->type("zset")->add($data);
- }
- }
- ?>
- <?php
- /**
- * redis新增資料
- * Enter description here ...
- * @author Administrator
- *
- */
- class AddAction extends Action{
- /**
- * list型別
- * Enter description here ...
- */
- public function lists(){
- $Redis=new RedisModel("list11");
- //一次只能推送一條
- echo $Redis->add("ceiba");
- }
- /**
- * 字串型別
- * Enter description here ...
- */
- public function string(){
- $Redis=new RedisModel();
- $data=array(
- "str1"=>"ceiba", //一個key,對應一個值
- "str2"=>"李開湧",
- "str3"=>"李明",
- );
- echo $Redis->type("string")->add($data);
- }
- /**
- * HASH型別
- * Enter description here ...
- */
- public function hash(){
- $Redis=new RedisModel("user:1");
- $data=array(
- "field1"=>"ceiba", //一個key,對應一個值
- "field2"=>"李開湧",
- "field3"=>"李明",
- );
- //支援批量新增
- echo $Redis->type("hash")->add($data);
- }
- /**
- * 集合型別
- * Enter description here ...
- */
- public function sets(){
- $
相關推薦
使用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;"&
假設你有一個各位數字互不相同的四位數,把所有的數字從大到小排序後得到a,從小到大後得到b,然後用a-b替換原來這個數,並且繼續操作。例如,從1234出發,依次可以得到4321-1234=3087、87
#include<stdio.h>int main(){int n;while(~scanf("%d",&n)){int i,j=0,k,s;int a[300],b[300],c[300];for(i=0; i<n; i++){s=0;scanf
計算機二級-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請求獲取到數據,然後插