《PHP編程:php-redis中的sort排序函數總結》要點:
本文介紹了PHP編程:php-redis中的sort排序函數總結,希望對您有用。如果有疑問,可以聯系我們。
PHP教程很多人把redis當成一種數據庫,其實是利用redis來構造數據庫的模型,有那種數據庫的味道.但是在怎么構建還是key和value的關系,與真正的關系型數據庫還是紛歧樣的.
PHP教程效率高,不便利;便利的,效率不高;又便利,效率又高的要花錢.
PHP教程php-redis里面的sort函數,在做web的時候取數據還是比擬方便,有點關系型數據庫的味道.在說sort前,先說一下前面漏的幾個比擬常用的函數.
PHP教程?1) keys
PHP教程描述:查找符合給定模式的key
參數:匹配模式
返回值:符合給定模式的key列表
PHP教程2) mset
PHP教程描述:同時設置一個或多個key-value對.當發現同名的key存在時,MSET會用新值覆蓋舊值,如果你不希望覆蓋同名key,請使用MSETNX命令.MSET是一個原子性(atomic)操作,所有給定key都在同一時間內被設置,某些給定key被更新而另一些給定key沒有改變的情況,弗成能發生.
參數:數組
返回值:總是返回OK(因為MSET弗成能失敗)
PHP教程3) mget
PHP教程描述:返回所有(一個或多個)給定key的值.如果某個指定key不存在,那么返回特殊值nil.因此,該命令永不失敗.
參數:key的數組
返回值:一個包括所有給定key的值的列表
PHP教程示例:
代碼如下:
<?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 )?
?>
PHP教程4) sort
PHP教程描述:按條件取得數據
參數:
代碼如下:
array(
??? 'by' => 'pattern', //匹配模式
??? 'limit' => array(0, 1),
??? 'get' => 'pattern'
??? 'sort' => 'asc' or 'desc',
??? 'alpha' => TRUE,
??? 'store' => 'external-key'
)
返回或保留給定列表、集合、有序集合key中經過排序的元素.
PHP教程一般排序
代碼如下:
<?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教程字母排序
代碼如下:
<?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教程排序取部門數據
代碼如下:
<?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 )?
?>
PHP教程使用外部key進行排序
PHP教程有時候你會希望使用外部的key作為權重來比較元素,代替默認的對比辦法.
PHP教程假設現在有用戶(user)表數據如下:
代碼如下:
id ? name score?
-------------------------------?
1 tank ?? 89?
2 zhang ? 40?
4 ???? ying ? 70?
3 ?? fXXK ??? 90
PHP教程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編程:php-redis中的sort排序函數總結》是否對您有啟發,歡迎查看更多與《PHP編程:php-redis中的sort排序函數總結》相關教程,學精學透。維易PHP學院為您提供精彩教程。
轉載請注明本頁網址:
http://www.snjht.com/jiaocheng/9726.html