中文字幕av专区_日韩电影在线播放_精品国产精品久久一区免费式_av在线免费观看网站

溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

利用php怎么對redis中的sort進行排序

發布時間:2020-12-11 16:15:08 來源:億速云 閱讀:174 作者:Leah 欄目:開發技術

利用php怎么對redis中的sort進行排序?針對這個問題,這篇文章詳細介紹了相對應的分析和解答,希望可以幫助更多想解決這個問題的小伙伴找到更簡單易行的方法。

很多人把redis當成一種數據庫,其實是利用redis來構造數據庫的模型,有那種數據庫的味道。但是在怎么構建還是key和value的關系,與真正的關系型數據庫還是不一樣的。

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

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

 1) keys

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

2) mset

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

3) mget

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

示例:

<?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*'));        // 結果:Array ( [0] => test )  
    print_r($redis->keys('y???'));       // 結果:Array ( [0] => ying )  
    print_r($redis->keys('t[e]*'));  // 結果:Array ( [0] => test )  
    print_r($redis->keys('*'));      // 結果:Array ( [0] => ying [1] => test [2] => zhang [3] => tank )   
       
    print_r($redis->mget(array("tank","ying")));     // 結果:Array ( [0] => 1 [1] => 3 )  
?>

4) sort

描述:按條件取得數據
參數:

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


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

一般排序

<?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')); //結果:Array ( [0] => 1 [1] => 8 [2] => 10 )  
?>

字母排序

<?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')); //結果:Array ( [0] => b [1] => d [2] => a )  
    print_r($redis->sort('test',array('ALPHA'=>TRUE))); //結果:Array ( [0] => a [1] => b [2] => d )  
?>


 

排序取部分數據

<?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));  //結果:Array ( [0] => 31 [1] => 23 [2] => 5 )  
?>

使用外部key進行排序

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

假設現在有用戶(user)表數據如下:

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

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

<?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)); //結果: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)); //結果: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));      /**      *結果: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));      /**      * 結果: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             )      */ ?>

關于利用php怎么對redis中的sort進行排序問題的解答就分享到這里了,希望以上內容可以對大家有一定的幫助,如果你還有很多疑惑沒有解開,可以關注億速云行業資訊頻道了解更多相關知識。

向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

AI

额尔古纳市| 铜川市| 开封县| 江源县| 甘洛县| 攀枝花市| 永嘉县| 汤原县| 胶南市| 滨州市| 衢州市| 陈巴尔虎旗| 珲春市| 安丘市| 二连浩特市| 临洮县| 台前县| 南宫市| 万州区| 辽阳市| 海南省| 滦平县| 清丰县| 靖边县| 长子县| 利辛县| 衡阳县| 江孜县| 台南县| 屯留县| 宁河县| 武清区| 乌兰县| 乐都县| 华阴市| 阿合奇县| 新闻| 共和县| 东兰县| 赤城县| 习水县|