欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

php-redis中的sort排序函數(shù)總結(jié)

 更新時間:2015年07月08日 11:10:22   投稿:junjie  
這篇文章主要介紹了php-redis中的sort排序函數(shù)總結(jié),本文講解了了按字母排序、排序取部分?jǐn)?shù)據(jù)、使用外部key進(jìn)行排序等排序方法,同時給出代碼實(shí)例,需要的朋友可以參考下

很多人把redis當(dāng)成一種數(shù)據(jù)庫,其實(shí)是利用redis來構(gòu)造數(shù)據(jù)庫的模型,有那種數(shù)據(jù)庫的味道。但是在怎么構(gòu)建還是key和value的關(guān)系,與真正的關(guān)系型數(shù)據(jù)庫還是不一樣的。

效率高,不方便;方便的,效率不高;又方便,效率又高的要花錢。

php-redis里面的sort函數(shù),在做web的時候取數(shù)據(jù)還是比較方便,有點(diǎn)關(guān)系型數(shù)據(jù)庫的味道。在說sort前,先說一下前面漏的幾個比較常用的函數(shù)。

 1) keys

描述:查找符合給定模式的key
參數(shù):匹配模式
返回值:符合給定模式的key列表

2) mset

描述:同時設(shè)置一個或多個key-value對。當(dāng)發(fā)現(xiàn)同名的key存在時,MSET會用新值覆蓋舊值,如果你不希望覆蓋同名key,請使用MSETNX命令。MSET是一個原子性(atomic)操作,所有給定key都在同一時間內(nèi)被設(shè)置,某些給定key被更新而另一些給定key沒有改變的情況,不可能發(fā)生。
參數(shù):數(shù)組
返回值:總是返回OK(因?yàn)镸SET不可能失敗)

3) mget

描述:返回所有(一個或多個)給定key的值。如果某個指定key不存在,那么返回特殊值nil。因此,該命令永不失敗。
參數(shù):key的數(shù)組
返回值:一個包含所有給定key的值的列表

示例:

復(fù)制代碼 代碼如下:

<?php 
    $redis = new redis(); 
    $redis->connect('192.168.1.108', 6379); 
    $redis->flushall();  
      
    $array=array('tank'=>'1', 
              'zhang'=>'2', 
              'ying'=>'3', 
              'test'=>'4'); 
    $redis->mset($array); 
    print_r($redis->keys('*s*'));        // 結(jié)果:Array ( [0] => test ) 
    print_r($redis->keys('y???'));       // 結(jié)果:Array ( [0] => ying ) 
    print_r($redis->keys('t[e]*'));  // 結(jié)果:Array ( [0] => test ) 
    print_r($redis->keys('*'));      // 結(jié)果:Array ( [0] => ying [1] => test [2] => zhang [3] => tank )  
      
    print_r($redis->mget(array("tank","ying")));     // 結(jié)果:Array ( [0] => 1 [1] => 3 ) 
?>

4) sort

描述:按條件取得數(shù)據(jù)
參數(shù):

復(fù)制代碼 代碼如下:

array(
    'by' => 'pattern', //匹配模式
    'limit' => array(0, 1),
    'get' => 'pattern'
    'sort' => 'asc' or 'desc',
    'alpha' => TRUE,
    'store' => 'external-key'
)

返回或保存給定列表、集合、有序集合key中經(jīng)過排序的元素。

一般排序

復(fù)制代碼 代碼如下:

<?php 
    $redis = new redis(); 
    $redis->connect('192.168.1.108', 6379); 
    $redis->flushall(); 
    $redis->lpush('test', 1); 
    $redis->lpush('test', 10); 
    $redis->lpush('test', 8); 
      
    print_r($redis->sort('test')); //結(jié)果:Array ( [0] => 1 [1] => 8 [2] => 10 ) 
?>

字母排序

復(fù)制代碼 代碼如下:

<?php 
    $redis = new redis(); 
    $redis->connect('192.168.1.108', 6379); 
    $redis->flushall(); 
    $redis->lpush('test', 'a'); 
    $redis->lpush('test', 'd'); 
    $redis->lpush('test', 'b'); 
      
    print_r($redis->sort('test')); //結(jié)果:Array ( [0] => b [1] => d [2] => a ) 
    print_r($redis->sort('test',array('ALPHA'=>TRUE))); //結(jié)果:Array ( [0] => a [1] => b [2] => d ) 
?>
 

排序取部分?jǐn)?shù)據(jù)

復(fù)制代碼 代碼如下:

<?php 
    $redis = new redis(); 
    $redis->connect('192.168.1.108', 6379); 
    $redis->flushall(); 
    $redis->lpush('test', 31); 
    $redis->lpush('test', 5); 
    $redis->lpush('test', 2); 
    $redis->lpush('test', 23);   
      
    $array = array('LIMIT'=>array(0,3),"SORT"=>'DESC'); 
    print_r($redis->sort('test',$array));  //結(jié)果:Array ( [0] => 31 [1] => 23 [2] => 5 ) 
?>

使用外部key進(jìn)行排序

有時候你會希望使用外部的key作為權(quán)重來比較元素,代替默認(rèn)的對比方法。

假設(shè)現(xiàn)在有用戶(user)表數(shù)據(jù)如下:

復(fù)制代碼 代碼如下:

id     name    score 
------------------------------- 
1     tank      89 
2     zhang     40 
4       ying      70 
3      fXXK       90

id數(shù)據(jù)保存在key名為id的列表中。
name數(shù)據(jù)保存在key名為name_{id}的列表中
score數(shù)據(jù)保存在score_{id}的key中。

復(fù)制代碼 代碼如下:

<?php 
    $redis = new redis(); 
    $redis->connect('192.168.1.108', 6379); 
    $redis->flushall();  
      
    $redis->lpush('id', 1); 
    $redis->set('name_1', 'tank'); 
    $redis->set('score_1',89); 
      
    $redis->lpush('id', 2); 
    $redis->set('name_2', 'zhang'); 
    $redis->set('score_2', 40); 
      
    $redis->lpush('id', 4); 
    $redis->set('name_4','ying'); 
    $redis->set('score_4', 70); 
      
    $redis->lpush('id', 3); 
    $redis->set('name_3', 'fXXK'); 
    $redis->set('score_3', 90); 
      
    /**
     * 按score從大到小排序,取得id
     */
    $sort=array('BY'=>'score_*', 
                'SORT'=>'DESC'
                ); 
    print_r($redis->sort('id',$sort)); //結(jié)果:Array ( [0] => 3 [1] => 1 [2] => 4 [3] => 2 )  
      
    /**
     * 按score從大到小排序,取得name
     */
    $sort=array('BY'=>'score_*', 
                'SORT'=>'DESC', 
                'GET'=>'name_*'
                ); 
    print_r($redis->sort('id',$sort)); //結(jié)果:Array ( [0] => fXXK [1] => tank [2] => ying [3] => zhang )   
      
    /**
     * 按score從小到大排序,取得name,score
     */
    $sort=array('BY'=>'score_*', 
                'SORT'=>'DESC', 
                'GET'=>array('name_*','score_*') 
                ); 
    print_r($redis->sort('id',$sort)); 
    /**
     *結(jié)果:Array
            (
                [0] => fXXK
                [1] => 90
                [2] => tank
                [3] => 89
                [4] => ying
                [5] => 70
                [6] => zhang
                [7] => 40
            ))
     */
      
    /**
     * 按score從小到大排序,取得id,name,score
     */
    $sort=array('BY'=>'score_*', 
                'SORT'=>'DESC', 
                'GET'=>array('#','name_*','score_*') 
                ); 
    print_r($redis->sort('id',$sort)); 
    /**
     * 結(jié)果:Array
            (
                [0] => 3
                [1] => fXXK
                [2] => 90
                [3] => 1
                [4] => tank
                [5] => 89
                [6] => 4
                [7] => ying
                [8] => 70
                [9] => 2
                [10] => zhang
                [11] => 40
            )
     */
?>

相關(guān)文章

  • pdo中使用參數(shù)化查詢sql

    pdo中使用參數(shù)化查詢sql

    在使用參數(shù)化查詢的情況下,數(shù)據(jù)庫服務(wù)器不會將參數(shù)的內(nèi)容視為SQL指令的一部份來處理,而是在數(shù)據(jù)庫完成 SQL 指令的編譯后,才套用參數(shù)運(yùn)行,因此就算參數(shù)中含有具破壞性的指令,也不會被數(shù)據(jù)庫所運(yùn)行。
    2011-08-08
  • PHP中的多種加密技術(shù)及代碼示例解析

    PHP中的多種加密技術(shù)及代碼示例解析

    php的加密技術(shù)有很多種,很多人一不小心就會搞混,所以今天就花點(diǎn)時間說說PHP中的信息加密技術(shù).有需要的朋友可以了解一下。
    2016-10-10
  • 通過PHP設(shè)置BugFree獲取郵箱通知

    通過PHP設(shè)置BugFree獲取郵箱通知

    在本篇文章里小編給大家分享了關(guān)于通過PHP設(shè)置BugFree獲取郵箱通知的相關(guān)知識點(diǎn)內(nèi)容,需要的朋友們跟著學(xué)習(xí)下。
    2019-04-04
  • Linux平臺PHP5.4設(shè)置FPM線程數(shù)量的方法

    Linux平臺PHP5.4設(shè)置FPM線程數(shù)量的方法

    這篇文章主要介紹了Linux平臺PHP5.4設(shè)置FPM線程數(shù)量的方法,較為詳細(xì)的分析了Linux平臺php5.4設(shè)置FPM的相關(guān)參數(shù)、功能及使用技巧,需要的朋友可以參考下
    2016-11-11
  • linux系統(tǒng)上支持php的 iconv()函數(shù)的方法

    linux系統(tǒng)上支持php的 iconv()函數(shù)的方法

    iconv函數(shù)庫能夠完成各種字符集間的轉(zhuǎn)換,是php編程中不可缺少的基礎(chǔ)函數(shù)庫。
    2011-10-10
  • php中10個不同等級壓縮優(yōu)化圖片操作示例

    php中10個不同等級壓縮優(yōu)化圖片操作示例

    這篇文章主要介紹了php中10個不同等級壓縮優(yōu)化圖片操作方法,結(jié)合實(shí)例形式分析了php中imagepng函數(shù)進(jìn)行圖片壓縮操作過程中不同壓縮等級的使用技巧與相關(guān)注意事項(xiàng),需要的朋友可以參考下
    2016-11-11
  • php常用表單驗(yàn)證類用法實(shí)例

    php常用表單驗(yàn)證類用法實(shí)例

    這篇文章主要介紹了php常用表單驗(yàn)證類用法,實(shí)例分析了php針對表單元素常用驗(yàn)證技巧,需要的朋友可以參考下
    2015-06-06
  • Swoole 5將移除自動添加Event::wait()特性詳解

    Swoole 5將移除自動添加Event::wait()特性詳解

    這篇文章主要給大家介紹了關(guān)于Swoole 5將移除自動添加Event::wait()特性的相關(guān)資料,文中通過示例代碼介紹的非常詳細(xì),對大家學(xué)習(xí)或者使用Swoole5具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面來一起學(xué)習(xí)學(xué)習(xí)吧
    2019-07-07
  • 生成靜態(tài)頁面的php函數(shù),php愛好者站推薦

    生成靜態(tài)頁面的php函數(shù),php愛好者站推薦

    生成靜態(tài)頁面的php函數(shù),php愛好者站推薦...
    2007-03-03
  • 淺談PHP強(qiáng)制類型轉(zhuǎn)換,慎用!

    淺談PHP強(qiáng)制類型轉(zhuǎn)換,慎用!

    本篇文章是對PHP強(qiáng)制類型轉(zhuǎn)換慎用進(jìn)行了詳細(xì)的分析介紹,需要的朋友參考下
    2013-06-06

最新評論