Summary of the sort sorting function in php-redis, php-redissort

Source: Internet
Author: User

Summary of the sort sorting function in php-redis, php-redissort

Many people regard redis as a database. In fact, redis is used to construct the database model, which has the taste of the database. However, the relationship between key and value is still different from that of a real relational database.

High efficiency, inconvenient; convenient, low efficiency; convenient, high efficiency requires money.

The sort function in php-redis is easy to retrieve data while making the web. It is a bit of a relational database. Before talking about sort, let's first talk about some of the frequently used functions leaked earlier.

1) keys

Description: searches for keys that match the specified mode.
Parameter: matching mode
Returned value: the list of keys that match the specified mode.

2) mset

Description: one or more key-value pairs are set at the same time. If a key with the same name exists, MSET overwrites the old value with the new value. If you do not want to overwrite the key with the same name, use the MSETNX command. MSET is an atomic operation. All given keys are set at the same time. Some given keys are updated while others are not changed.
Parameters: Array
Returned value: Always Returns OK (because MSET cannot fail)

3) mget

Description: return the values of all (one or more) given keys. If a specified key does not exist, a special value nil is returned. Therefore, this command never fails.
Parameter: array of keys
Returned value: a list containing the values of all given keys

Example:
Copy codeThe Code is as follows:
<? Php
$ Redis = new redis ();
$ Redis-> connect ('192. 168.1.108 ', 192 );
$ Redis-> flushall ();

$ Array = array ('tank' => '1 ',
'Zhang '=> '2 ',
'In' => '3 ',
'Test' => '4 ');
$ Redis-> mset ($ array );
Print_r ($ redis-> keys ('* s *'); // result: Array ([0] => test)
Print_r ($ redis-> keys ('y ??? '); // Result: Array ([0] => ying)
Print_r ($ redis-> keys ('t [e] * '); // result: Array ([0] => test)
Print_r ($ redis-> keys ('*'); // result: array ([0] => ying [1] => test [2] => zhang [3] => tank)

Print_r ($ redis-> mget (array ("tank", "ying"); // result: Array ([0] => 1 [1] => 3)
?>

4) sort

Description: data is obtained based on conditions.
Parameters:
Copy codeThe Code is as follows:
Array (
'By' => 'pattern', // matching mode
'Limit' => array (0, 1 ),
'Get' => 'pattern'
'Sort '=> 'asc' or 'desc ',
'Alpha' => TRUE,
'Store' => 'external-key'
)

Returns or stores the sorted elements in the given list, set, and sorted set key.

General sorting
Copy codeThe Code is as follows:
<? Php
$ Redis = new redis ();
$ Redis-> connect ('192. 168.1.108 ', 192 );
$ Redis-> flushall ();
$ Redis-> lpush ('test', 1 );
$ Redis-> lpush ('test', 10 );
$ Redis-> lpush ('test', 8 );

Print_r ($ redis-> sort ('test'); // result: Array ([0] => 1 [1] => 8 [2] => 10)
?>

Letter Sorting

Copy codeThe Code is as follows:
<? Php
$ Redis = new redis ();
$ Redis-> connect ('192. 168.1.108 ', 192 );
$ Redis-> flushall ();
$ Redis-> lpush ('test', 'A ');
$ Redis-> lpush ('test', 'D ');
$ Redis-> lpush ('test', 'B ');

Print_r ($ redis-> sort ('test'); // result: Array ([0] => B [1] => d [2] =>)
Print_r ($ redis-> sort ('test', array ('alpha' => TRUE); // result: array ([0] => a [1] => B [2] => d)
?>
 

Sort part of data

Copy codeThe Code is as follows:
<? Php
$ Redis = new redis ();
$ Redis-> connect ('192. 168.1.108 ', 192 );
$ Redis-> flushall ();
$ Redis-> lpush ('test', 31 );
$ Redis-> lpush ('test', 5 );
$ Redis-> lpush ('test', 2 );
$ Redis-> lpush ('test', 23 );

$ Array = array ('limit' => array (), "SORT" => 'desc ');
Print_r ($ redis-> sort ('test', $ array); // result: array ([0] => 31 [1] => 23 [2] => 5)
?>

Sort by external key

Sometimes you want to use an external key as the weight to compare elements, instead of the default comparison method.

Assume that the user table data is as follows:

Copy codeThe Code is as follows:
Id name score
-------------------------------
1 tank 89
2 zhang 40
4 ying 70
3 fXXK 90

Id data is saved in the list with the key name id.
Name Data is saved in the list of key names: name _ {id}
Score data is stored in the key of score _ {id.

Copy codeThe Code is as follows:
<? Php
$ Redis = new redis ();
$ Redis-> connect ('192. 168.1.108 ', 192 );
$ 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 );

/**
* Sort by score in ascending order and obtain the id.
*/
$ Sort = array ('by' => 'score _*',
'Sort '=> 'desc'
);
Print_r ($ redis-> sort ('id', $ sort); // result: array ([0] => 3 [1] => 1 [2] => 4 [3] => 2)

/**
* Sort by score in ascending order and obtain the name
*/
$ Sort = array ('by' => 'score _*',
'Sort '=> 'desc ',
'Get' => 'name _*'
);
Print_r ($ redis-> sort ('id', $ sort); // result: array ([0] => fXXK [1] => tank [2] => ying [3] => zhang)

/**
* Sort by score from small to large to get name and score
*/
$ Sort = array ('by' => 'score _*',
'Sort '=> 'desc ',
'Get' => array ('name _ * ', 'score _*')
);
Print_r ($ redis-> sort ('id', $ sort ));
/**
* Result: Array
(
[0] => fXXK
[1] => 90
[2] => tank
[3] => 89
[4] => ying
[5] => 70
[6] => zhang
[7] => 40
))
*/

/**
* Sort by score from small to large to get id, name, score
*/
$ Sort = array ('by' => 'score _*',
'Sort '=> 'desc ',
'Get' => array ('#', 'name _ * ', 'score _*')
);
Print_r ($ redis-> sort ('id', $ sort ));
/**
* Result: 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
)
*/
?>

Contact Us

The content source of this page is from Internet, which doesn't represent Alibaba Cloud's opinion; products and services mentioned on that page don't have any relationship with Alibaba Cloud. If the content of the page makes you feel confusing, please write us an email, we will handle the problem within 5 days after receiving your email.

If you find any instances of plagiarism from the community, please send an email to: info-contact@alibabacloud.com and provide relevant evidence. A staff member will contact you within 5 working days.

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.