Redis SORT排序命令使用方法詳解_MySQL教程
推薦:mysql多表隨機(jī)查詢優(yōu)化方案我以前介紹過(guò)最多的就是單表隨機(jī)查詢時(shí)的優(yōu)化了,今天 看到一站長(zhǎng)分享了一個(gè)多表隨機(jī)查詢優(yōu)化的一些方法與方案,下面我們就一起來(lái)看看吧. 本文主要談?wù)撊绾螌?shí)現(xiàn)Mysql的隨機(jī)查詢,多表隨機(jī)查詢。在Mysql中隨機(jī)取出一條記錄的實(shí)現(xiàn)方法。 我們通常的查詢是沒(méi)有where或者wh
對(duì)于Redis SORT排序命令 我相信大家都不怎么了解了,因此小編整理了一些Redis SORT排序命令使用方法與例子,希望例子可以對(duì)各位玩家?guī)?lái)幫助哦.
Redis SORT是由Redis提供的一個(gè)排序命令。集合中的標(biāo)簽是無(wú)序的,可以使用SORT排序。如:
redis>SADD jihe 5
(integer) 1
redis>SADD jihe 1
(integer) 1
redis>SADD jihe 2
(integer) 1
redis>SADD jihe 8
(integer) 1
redis>SORT jihe
1) "1"
2) "2"
3) "5"
4) "8"
如果使用Redis SORT排序的不是數(shù)字,是字母,將他們按照字典的順序排名,則需要使用
SORT jihe ALPHA
如果不加ALPHA參數(shù),則會(huì)報(bào)錯(cuò),提示:(error) ERR One or more scores can't be converted into double。我們還可以使用關(guān)系型數(shù)據(jù)庫(kù)的DESC進(jìn)行倒序排序和LIMIT offset count來(lái)限定獲取的條數(shù)
SORT jihe DESC LIMIT 0 2
還可以對(duì)Redis SORT命令添加BY參數(shù)。一條語(yǔ)句只能有一個(gè)BY參數(shù)。這時(shí),SORT不會(huì)根據(jù)自身的值排序,比如(1,5,2,8和a,A,g,B),而是根據(jù)指定的另一個(gè)鍵中的字段來(lái)排序。如:
SORT tag:redis:article BY article:*->time DESC
解釋:根據(jù)tag:redis:article中的值(tag是redis的文章ID),來(lái)組合成一個(gè)新的key就是article:(ag:redis:article中的一個(gè)值):time。獲取到tag是redis的文章ID列表,然后根據(jù)他們的發(fā)布時(shí)間來(lái)排序。
Redis SORT命令還有個(gè)GET參數(shù),GET參數(shù)類似在關(guān)系型數(shù)據(jù)庫(kù)中的關(guān)聯(lián)查詢。比如查詢tag是redis的文章ID列表,將列表根據(jù)發(fā)布時(shí)間倒序排序,然后獲取每個(gè)文章的標(biāo)題。GET可以有多個(gè):
SORT tag:redis:article BY article:*->time DESC GET article:*->title GET article:*->time GET #
GET #的意思是,將文章ID返回回來(lái),你可以寫(xiě)GET article:*->id,也可以寫(xiě)GET #。
Redis SORT命令還有個(gè)參數(shù)是STORE,是將排序后的內(nèi)容存儲(chǔ)到一個(gè)新的key中。新key的類型是列表類型,如果存在則會(huì)覆蓋。這個(gè)時(shí)候可以用EXPIRE來(lái)設(shè)置緩存:
SORT tag:redis:article BY article:*->time DESC GET article:*->title GET article:*->time GET # STORE resultKey
Redis的SORT命令是Redis最復(fù)雜最強(qiáng)大的命令之一,時(shí)間復(fù)雜度是O(n+mLOGm)。n是待排序的列表長(zhǎng)度,m是返回的元素個(gè)數(shù)。減少n和m會(huì)提高SORT的性能。
補(bǔ)充:
1,適合全體類型的命令
EXISTS key 判斷一個(gè)鍵是否存在;存在返回 1;否則返回0;
DEL key 刪除某個(gè)key,或是一系列key;DEL key1 key2 key3 key4
TYPE key 返回某個(gè)key元素的數(shù)據(jù)類型 ( none:不存在,string:字符,list,set,zset,hash)
KEYS pattern 返回匹配的key列表 (KEYS foo*:查找foo開(kāi)頭的keys)
RANDOMKEY 隨機(jī)獲得一個(gè)已經(jīng)存在的key,如果當(dāng)前數(shù)據(jù)庫(kù)為空,則返回空字符串
RENAME oldname newname更改key的名字,新鍵如果存在將被覆蓋
RENAMENX oldname newname 更改key的名字,如果名字存在則更改失敗
DBSIZE返回當(dāng)前數(shù)據(jù)庫(kù)的key的總數(shù)
EXPIRE設(shè)置某個(gè)key的過(guò)期時(shí)間(秒),(EXPIRE bruce 1000:設(shè)置bruce這個(gè)key1000秒后系統(tǒng)自動(dòng)刪除)注意:如果在還沒(méi)有過(guò)期的時(shí)候,對(duì)值進(jìn)行了改變,那么那個(gè)值會(huì)被清除。
TTL查找某個(gè)key還有多長(zhǎng)時(shí)間過(guò)期,返回時(shí)間秒
SELECT index 選擇數(shù)據(jù)庫(kù)
MOVE key dbindex 將指定鍵從當(dāng)前數(shù)據(jù)庫(kù)移到目標(biāo)數(shù)據(jù)庫(kù) dbindex。成功返回 1;否則返回0(源數(shù)據(jù)庫(kù)不存在key或目標(biāo)數(shù)據(jù)庫(kù)已存在同名key);
FLUSHDB 清空當(dāng)前數(shù)據(jù)庫(kù)中的所有鍵
FLUSHALL 清空所有數(shù)據(jù)庫(kù)中的所有鍵
2,處理字符串的命令
SET key value 給一個(gè)鍵設(shè)置字符串值。SET keyname datalength data (SET bruce 10 paitoubing:保存key為burce,字符串長(zhǎng)度為10的一個(gè)字符串paitoubing到數(shù)據(jù)庫(kù)),data最大不可超過(guò)1G。
GET key獲取某個(gè)key 的value值。如key不存在,則返回字符串”nil”;如key的值不為字符串類型,則返回一個(gè)錯(cuò)誤。
GETSET key value可以理解成獲得的key的值然后SET這個(gè)值,更加方便的操作 (SET bruce 10 paitoubing,這個(gè)時(shí)候需要修改bruce變成1234567890并獲取這個(gè)以前的數(shù)據(jù)paitoubing,GETSET bruce 10 1234567890)
MGET key1 key2 … keyN 一次性返回多個(gè)鍵的值
SETNX key value SETNX與SET的區(qū)別是SET可以創(chuàng)建與更新key的value,而SETNX是如果key不存在,則創(chuàng)建key與value數(shù)據(jù)
MSET key1 value1 key2 value2 … keyN valueN 在一次原子操作下一次性設(shè)置多個(gè)鍵和值
MSETNX key1 value1 key2 value2 … keyN valueN 在一次原子操作下一次性設(shè)置多個(gè)鍵和值(目標(biāo)鍵不存在情況下,如果有一個(gè)以上的key已存在,則失敗)
INCR key 自增鍵值
INCRBY key integer 令鍵值自增指定數(shù)值
DECR key 自減鍵值
DECRBY key integer 令鍵值自減指定數(shù)值
3,處理 lists 的命令
RPUSH key value 從 List 尾部添加一個(gè)元素(如序列不存在,則先創(chuàng)建,如已存在同名Key而非序列,則返回錯(cuò)誤)
LPUSH key value 從 List 頭部添加一個(gè)元素
LLEN key 返回一個(gè) List 的長(zhǎng)度
LRANGE key start end從自定的范圍內(nèi)返回序列的元素 (LRANGE testlist 0 2;返回序列testlist前0 1 2元素)
LTRIM key start end修剪某個(gè)范圍之外的數(shù)據(jù) (LTRIM testlist 0 2;保留0 1 2元素,其余的刪除)
LINDEX key index返回某個(gè)位置的序列值(LINDEX testlist 0;返回序列testlist位置為0的元素)
LSET key index value更新某個(gè)位置元素的值
LREM key count value 從 List 的頭部(count正數(shù))或尾部(count負(fù)數(shù))刪除一定數(shù)量(count)匹配value的元素,返回刪除的元素?cái)?shù)量。
LPOP key 彈出 List 的第一個(gè)元素
RPOP key 彈出 List 的最后一個(gè)元素
RPOPLPUSH srckey dstkey 彈出 _srckey_ 中最后一個(gè)元素并將其壓入 _dstkey_頭部,key不存在或序列為空則返回”nil”
4,處理集合(sets)的命令(有索引無(wú)序序列)
SADD key member增加元素到SETS序列,如果元素(membe)不存在則添加成功 1,否則失敗 0;(SADD testlist 3 n one)
SREM key member 刪除SETS序列的某個(gè)元素,如果元素不存在則失敗0,否則成功 1(SREM testlist 3 N one)
SPOP key 從集合中隨機(jī)彈出一個(gè)成員
SMOVE srckey dstkey member 把一個(gè)SETS序列的某個(gè)元素移動(dòng)到另外一個(gè)SETS序列 (SMOVE testlist test 3n two;從序列testlist移動(dòng)元素two到 test中,testlist中將不存在two元素)
SCARD key 統(tǒng)計(jì)某個(gè)SETS的序列的元素?cái)?shù)量
SISMEMBER key member 獲知指定成員是否存在于集合中
SINTER key1 key2 … keyN 返回 key1, key2, …, keyN 中的交集
SINTERSTORE dstkey key1 key2 … keyN 將 key1, key2, …, keyN 中的交集存入 dstkey
SUNION key1 key2 … keyN 返回 key1, key2, …, keyN 的并集
SUNIONSTORE dstkey key1 key2 … keyN 將 key1, key2, …, keyN 的并集存入 dstkey
SDIFF key1 key2 … keyN 依據(jù) key2, …, keyN 求 key1 的差集。官方例子:
key1 = x,a,b,c
key2 = c
key3 = a,d
SDIFF key1,key2,key3 => x,b
SDIFFSTORE dstkey key1 key2 … keyN 依據(jù) key2, …, keyN 求 key1 的差集并存入 dstkey
SMEMBERS key 返回某個(gè)序列的所有元素
SRANDMEMBER key 隨機(jī)返回某個(gè)序列的元素
5,處理有序集合(sorted sets)的命令 (zsets)
ZADD key score member 添加指定成員到有序集合中,如果目標(biāo)存在則更新score(分值,排序用)
ZREM key member 從有序集合刪除指定成員
ZINCRBY key increment member 如果成員存在則將其增加_increment_,否則將設(shè)置一個(gè)score為_(kāi)increment_的成員
ZRANGE key start end 返回升序排序后的指定范圍的成員
ZREVRANGE key start end 返回降序排序后的指定范圍的成員
分享:通過(guò)frm&ibd 恢復(fù) Mysql ibdata 丟失或損壞的數(shù)據(jù)教程有時(shí)候mysql沒(méi)有做好數(shù)據(jù)備份,或者被數(shù)據(jù)管理員誤刪,或者ibdata損壞了我們?nèi)绾位謴?fù)呢?別怕,只要有部分frm、ibd存在,下面就是恢復(fù)教程。 mysql存儲(chǔ)在磁盤(pán)中,各種天災(zāi)人禍都會(huì)導(dǎo)致數(shù)據(jù)丟失。大公司的時(shí)候我們常常需要做好數(shù)據(jù)冷熱備,對(duì)于小公司來(lái)說(shuō)要做好所有數(shù)據(jù)
- mysql多表隨機(jī)查詢優(yōu)化方案
- 通過(guò)frm&ibd 恢復(fù) Mysql ibdata 丟失或損壞的數(shù)據(jù)教程
- mysql數(shù)據(jù)庫(kù)ROOT賬號(hào)權(quán)限丟失問(wèn)題解決方法
- hash和solr在海量數(shù)據(jù)分布式搜索引擎中的應(yīng)用教程
- 23道安全門加鑄MySQL數(shù)據(jù)庫(kù)
- MySQL 5.0 數(shù)據(jù)庫(kù)新特性的存儲(chǔ)過(guò)程
- MySql管理的一點(diǎn)心得
- mysql導(dǎo)入數(shù)據(jù)庫(kù)文件最大限制的修改方法
- Mysql存儲(chǔ)引擎InnoDB和Myisam的六大區(qū)別
- Mysql運(yùn)行環(huán)境優(yōu)化(Linux系統(tǒng))
- MySQL查詢的性能優(yōu)化基礎(chǔ)教程
- MySQL 在windows上的安裝詳細(xì)介紹
MySQL教程Rss訂閱編程教程搜索
MySQL教程推薦
- 關(guān)于數(shù)據(jù)庫(kù)中保留小數(shù)位的問(wèn)題
- 深入探討:MySQL數(shù)據(jù)庫(kù)MyISAM與InnoDB存儲(chǔ)引擎的比較
- MySQL筆記之運(yùn)算符使用詳解
- MySQL自增列插入0值的解決方案
- mysql中text與varchar與char的區(qū)別
- MySQL筆記之?dāng)?shù)據(jù)備份與還原的使用詳解
- MySQL筆記之?dāng)?shù)據(jù)類型詳解
- mysql常用設(shè)置:字符集編碼、自動(dòng)完成(自動(dòng)提示)、監(jiān)聽(tīng)外網(wǎng)ip
- PHP mysqli擴(kuò)展庫(kù) 預(yù)處理技術(shù)的使用分析
- 通過(guò)frm&ibd 恢復(fù) Mysql ibdata 丟失或損壞的數(shù)據(jù)教程
猜你也喜歡看這些
- 解析SQL Server數(shù)據(jù)庫(kù)系統(tǒng)的編譯
- sql server 2005用戶權(quán)限設(shè)置深入分析
- 解讀常規(guī)數(shù)據(jù)庫(kù)維護(hù)涉及的5項(xiàng)工作
- Mssql數(shù)據(jù)庫(kù)教程之--SQL Server 2008:傳遞表值參數(shù)
- 如何查看并導(dǎo)出數(shù)據(jù)表中字段的注釋信息
- SQL Server 游標(biāo)語(yǔ)句 聲明/打開(kāi)/循環(huán)實(shí)例
- sql server多行數(shù)據(jù)拼接的實(shí)例方法
- 查詢表中某字段有重復(fù)記錄個(gè)數(shù)的方法
- 解析SqlServer2000獲取當(dāng)前日期及格式
- 怎樣制定自己的SQL Server 2000觸發(fā)器
- 相關(guān)鏈接:
- 教程說(shuō)明:
MySQL教程-Redis SORT排序命令使用方法詳解
。