最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

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

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

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

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

php-redis里面的sort函數(shù),在做web的時候取數(shù)據(jù)還是比較方便,有點關(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(因為MSET不可能失敗)

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 ) 
?>
 

排序取部分數(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進行排序

有時候你會希望使用外部的key作為權(quá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)文章

  • PHP實現(xiàn)基數(shù)排序的方法詳解

    PHP實現(xiàn)基數(shù)排序的方法詳解

    這篇文章主要介紹了PHP實現(xiàn)基數(shù)排序的方法,結(jié)合實例形式分析了基數(shù)排序的原理、實現(xiàn)方法與相關(guān)操作技巧,需要的朋友可以參考下
    2017-12-12
  • PHP獲取星期幾的常用方法小結(jié)

    PHP獲取星期幾的常用方法小結(jié)

    這篇文章主要介紹了PHP獲取星期幾的常用方法,結(jié)合實例形式分析了php使用date函數(shù)獲取指定日期星期幾的具體操作技巧與相關(guān)注意事項,需要的朋友可以參考下
    2018-12-12
  • php下批量掛馬和批量清馬代碼

    php下批量掛馬和批量清馬代碼

    批量掛馬和批量清馬程序PHP版,所以黑客工具的對立性,在黑客手里是破壞工具,在維護的站長來說是修正工具。
    2011-02-02
  • linux iconv方法的使用

    linux iconv方法的使用

    使用iconv方法進行編碼轉(zhuǎn)換。在windows平臺下面可以正常的工作(本地環(huán)境使用的win7),但是在linux環(huán)境下面iconv總是返回false(測試環(huán)境使用的linux)。
    2011-10-10
  • PHP對表單提交特殊字符的過濾和處理方法匯總

    PHP對表單提交特殊字符的過濾和處理方法匯總

    本篇文章主要是對PHP對表單提交特殊字符的過濾和處理方法進行了總結(jié)介紹,需要的朋友可以過來參考下,希望對大家有所幫助
    2014-02-02
  • PHP比較運算符的詳細介紹

    PHP比較運算符的詳細介紹

    運算符是告訴編譯程序執(zhí)行特定算術(shù)或邏輯操作的符號,通常與操作數(shù)一起構(gòu)成一個表達式,我們經(jīng)??吹剿鼤⑴c數(shù)學(xué)運算或邏輯運算。PHP也包涵了很多的運算符,這篇文章詳細解讀一下其中很重要的比較運算符。
    2015-09-09
  • PHP多線程之內(nèi)部多線程實例分析

    PHP多線程之內(nèi)部多線程實例分析

    這篇文章主要介紹了PHP多線程之內(nèi)部多線程,實例分析了php多線程的使用技巧,具有一定參考借鑒價值,需要的朋友可以參考下
    2015-03-03
  • PHP使用array_merge重新排列數(shù)組下標(biāo)的方法

    PHP使用array_merge重新排列數(shù)組下標(biāo)的方法

    這篇文章主要介紹了PHP使用array_merge重新排列數(shù)組下標(biāo)的方法,以實例形式較為詳細的分析了array_merge的功能,及針對數(shù)組下標(biāo)進行重新排列操作的實現(xiàn)技巧,需要的朋友可以參考下
    2015-07-07
  • PHP 頁面編碼聲明方法詳解(header或meta)

    PHP 頁面編碼聲明方法詳解(header或meta)

    PHP 頁面編碼聲明與用header或meta實現(xiàn)PHP頁面編碼的區(qū)別
    2010-03-03
  • php封裝的連接Mysql類及用法分析

    php封裝的連接Mysql類及用法分析

    這篇文章主要介紹了php封裝的連接Mysql類及用法,基于php封裝了簡單的MySQL數(shù)據(jù)庫的連接、查詢、遍歷等技巧,并附帶說明了其具體用法,需要的朋友可以參考下
    2015-12-12

最新評論

樟树市| 正阳县| 易门县| 法库县| 汝南县| 祁东县| 永德县| 治多县| 北安市| 太和县| 将乐县| 郯城县| 通城县| 资兴市| 东海县| 金门县| 扶余县| 洛浦县| 清涧县| 桂平市| 敦化市| 三江| 金川县| 布拖县| 建德市| 江阴市| 轮台县| 金乡县| 玉田县| 仁寿县| 桦南县| 彭阳县| 涡阳县| 拉萨市| 福建省| 罗城| 开封市| 巴青县| 博野县| 浙江省| 师宗县|