欧美一级特黄大片做受成人-亚洲成人一区二区电影-激情熟女一区二区三区-日韩专区欧美专区国产专区

Redis常用的操作命令

本篇內(nèi)容主要講解“redis常用的操作命令”,感興趣的朋友不妨來(lái)看看。本文介紹的方法操作簡(jiǎn)單快捷,實(shí)用性強(qiáng)。下面就讓小編來(lái)帶大家學(xué)習(xí)“Redis常用的操作命令”吧!

創(chuàng)新互聯(lián)不只是一家網(wǎng)站建設(shè)的網(wǎng)絡(luò)公司;我們對(duì)營(yíng)銷、技術(shù)、服務(wù)都有自己獨(dú)特見解,公司采取“創(chuàng)意+綜合+營(yíng)銷”一體化的方式為您提供更專業(yè)的服務(wù)!我們經(jīng)歷的每一步也許不一定是最完美的,但每一步都有值得深思的意義。我們珍視每一份信任,關(guān)注我們的成都網(wǎng)站建設(shè)、成都做網(wǎng)站質(zhì)量和服務(wù)品質(zhì),在得到用戶滿意的同時(shí),也能得到同行業(yè)的專業(yè)認(rèn)可,能夠?yàn)樾袠I(yè)創(chuàng)新發(fā)展助力。未來(lái)將繼續(xù)專注于技術(shù)創(chuàng)新,服務(wù)升級(jí),滿足企業(yè)一站式成都全網(wǎng)營(yíng)銷推廣需求,讓再小的品牌網(wǎng)站制作也能產(chǎn)生價(jià)值!

一、key pattern 查詢相應(yīng)的key

(1)redis允許模糊查詢key

                keys 命令   有3個(gè)通配符  *、?、[]  和一個(gè)轉(zhuǎn)義

                            ?    匹配一個(gè)字符
                            *    匹配任意個(gè)(包括0個(gè))字符
                            []    匹配括號(hào)間的任一個(gè)字符,可以使用 "-" 符號(hào)表示一個(gè)范圍,如 a[b-d] 可以匹配 "ab","ac","ad"
                            \x    匹配字符x,用于轉(zhuǎn)義符號(hào),如果要匹配 "?" 就需要使用 \?

(2)randomkey:返回隨機(jī)key

(3)type key:返回key存儲(chǔ)的類型

                            返回值可能是 string(字符串類型) 、hash(散列類型) 、list(列表類型)、 set(集合類型)、 zset(有序集合類型)

(4)exists key:判斷某個(gè)key是否存在 【如果存在,返回整數(shù)類型 1 ,否則返回 0】

(5)del key:刪除key

                            del key [key.....]
                            可以刪除一個(gè)或多個(gè)鍵,返回值是刪除的鍵的個(gè)數(shù)
                            注意:不支持通配符刪除

(6)rename key newkey:改名

(7)renamenx key newkey:如果newkey不存在則修改成功

(8)move key 1:將key移動(dòng)到1數(shù)據(jù)庫(kù)

(9)ttl key:查詢key的生命周期(秒)

(10)expire key 整數(shù)值:設(shè)置key的生命周期以秒為單位

(11)pexpire key 整數(shù)值:設(shè)置key的生命周期以毫秒為單位

(12)pttl key:查詢key 的生命周期(毫秒)

(13)perisist key:把指定key設(shè)置為永久有效

二、字符串類型的操作

(1)set key value [ex 秒數(shù)] [px 毫秒數(shù)] [nx/xx]

如果ex和px同時(shí)寫,則以后面的有效期為準(zhǔn)

nx:如果key不存在則建立

xx:如果key存在則修改其值

(2)get key:取值

(3)mset key1 value1 key2 value2 一次設(shè)置多個(gè)值

(4)mget key1 key2 :一次獲取多個(gè)值

(5)setrange key offset value:把字符串的offset偏移字節(jié)改成value

       如果偏移量 > 字符串長(zhǎng)度,該字符自動(dòng)補(bǔ)0x00

(6)append key value :把value追加到key 的原值上,向尾部追加值
                        作用是向鍵值的末尾追加 value ,如果鍵不存在則將改鍵的值設(shè)置為 value,即相當(dāng)于 set key value。

                        返回值是追加后字符串的長(zhǎng)度        如:append foo " hello word!"

(7)getrange key start stop:獲取字符串中[start, stop]范圍的值

       對(duì)于字符串的下標(biāo),左數(shù)從0開始,右數(shù)從-1開始

       注意:當(dāng)start>length,則返回空字符串

          當(dāng)stop>=length,則截取至字符串尾

          如果start所處位置在stop右邊,則返回空字符串

(8)getset key nrevalue:獲取并返回舊值,在設(shè)置新值

(9)incr key:自增,返回新值,如果incr一個(gè)不是int的value則返回錯(cuò)誤,incr一個(gè)不存在的key,則設(shè)置key為1

                        incr key 當(dāng)存儲(chǔ)的字符串是整數(shù)形式時(shí),redis提供了一個(gè)使用的命令 incr 作用是讓當(dāng)前的鍵值遞增,

                        并返回遞增后的值
                        incr num 當(dāng)要操作的鍵不存在時(shí)會(huì)默認(rèn)鍵值為 0  ,所以第一次遞增后的結(jié)果是 1 ,

                        當(dāng)鍵值不是整數(shù)時(shí) redis會(huì)提示錯(cuò)誤

(10)incrby key increment:  增加指定的整數(shù)【 incrby key 2:跳2自增】

                        incrby 命令與 incr 命令基本一樣,只不過前者可以通過 increment 參數(shù)指定一次增加的數(shù)值

                        如:incrby num 2        incrby num 3

(11)incrbyfloat by 0.7: 自增浮點(diǎn)數(shù) 注意: ( 受reids 版本限制,版本需要大于 2.6 版本)

       (12)減少指定的整數(shù)
                        decr key
                        decrby key increment
                        desc 命令與incr 命令用法相同,只不過是讓鍵值遞減
                        decrby 命令與 incrby命令用法相同

         位操作 : 一個(gè)字節(jié)由8個(gè)二進(jìn)制位組成,redis 提供了4個(gè)命令直接對(duì)二進(jìn)制位進(jìn)行操作

(13)setbit key offset value:設(shè)置offset對(duì)應(yīng)二進(jìn)制上的值,返回該位上的舊值

     【注意:如果offset過大,則會(huì)在中間填充0

         offset最大到多少?    2^32-1,即可推出最大的字符串為512M】

                        setbit 命令可以設(shè)置字符串類型鍵指定位置的二進(jìn)制位的值,返回值是該位置的舊值,

                        如果需要設(shè)置的位置超過了鍵值的二進(jìn)制位的長(zhǎng)度,setbit 命令會(huì)自動(dòng)將中間的二進(jìn)制位設(shè)置為0,

                        同理設(shè)置一個(gè)不存在的鍵的指定二進(jìn)制位的值會(huì)自動(dòng)將其前面的位賦值為 0

(14)getbit key offset value:

                         getbit 命令可以獲得一個(gè)字符串類型鍵指定位置的二進(jìn)制位的值(0 或 1),索引從 0 開始,

                        如果需要獲取的二進(jìn)制位的索引超出了鍵值的二進(jìn)制位的實(shí)際長(zhǎng)度則默認(rèn)位值是 0

        (15)bitcount key [strart] [end]

                        bitcount 命令可以獲得字符串類型鍵中值是1的二進(jìn)制位個(gè)數(shù),可以通過參數(shù)來(lái)限制統(tǒng)計(jì)的字節(jié)范圍,

                        如我們希望統(tǒng)計(jì)前兩個(gè)字節(jié)(即"aa")  命令:bitcount foo 0 1   

                        注意: ( 受reids 版本限制,版本需要大于 2.6 版本)

        (16)bitop operation destkey key1 [key2..]    對(duì)key1 key2做opecation并將結(jié)果保存在destkey上

                                                                                【opecation可以是AND OR NOT XOR】

                         bittop 命令可以對(duì)多個(gè)字符串類型鍵進(jìn)行位運(yùn)算,并將結(jié)果存儲(chǔ)在destkey參數(shù)指定的鍵中。

                         該命令支持的運(yùn)算操作有 AND、 OR、  XOR、 NOT,

                           例如我們對(duì)bar 和 aar 進(jìn)行 OR 運(yùn)算操作:
                            set foo1 bar
                            set foo2 aar
                            bitop OR res foo1 foo2
                            get res            
                           注: ( 受reids 版本限制,版本需要大于 2.6 版本)

(17)strlen key:取指定key的value值的長(zhǎng)度【返回鍵值的長(zhǎng)度,如果鍵不存在則返回0】

  (18)setex key time value:設(shè)置key對(duì)應(yīng)的值value,并設(shè)置有效期為time秒 

三、鏈表操作

Redis的list類型其實(shí)就是一個(gè)每個(gè)子元素都是string類型的雙向鏈表,鏈表的最大長(zhǎng)度是2^32。list既可以用做棧,也可以用做隊(duì)列。

list的pop操作還有阻塞版本,主要是為了避免輪詢

      (1) 向列表兩端增加元素
                lpush key value [ value ....... ]
                rpush key value [ value ....... ]
                lpush 命令用來(lái)向列表左邊增加元素,返回表示增加元素后列表的長(zhǎng)度
                rpush 命令用來(lái)向列表右邊增加元素,返回表示增加元素后列表的長(zhǎng)度
        
      (2)從列表兩端彈出元素
                lpop key
                rpop key
                lpop 命令可以從列表左邊彈出一個(gè)元素,lpop 命令執(zhí)行兩步操作,

                    1:將列表左邊的元素從列表中移除,

                    2:返回被移除元素值
                rpop 命令可以從列表右邊彈出一個(gè)元素
       (3)llen key:計(jì)算鏈表的元素個(gè)數(shù)  【當(dāng)鍵不存在時(shí),llen 返回 0】
       (4)lrange key start stop:返回鏈表中[start, stop]中的元素 
                    獲得列表中的某一片段,返回索引從 start 到 stop 之間的所有元素(包括兩端的元素) 索引開始為 0
                    注:lrange 與很多語(yǔ)言中用來(lái)截取數(shù)組片段的方法有一點(diǎn)區(qū)別是 lrange 返回的值包含最右邊的元素
                    lrange 命令也支持負(fù)索引,表是從右邊開始計(jì)算序數(shù),

                        如 ' -1 ' 表示最右邊第一個(gè)元素, ' -2 ' 表示最右邊第二個(gè)元素,一次類推
 

(5)lrem key count value:從鏈表中刪除value值,刪除count的絕對(duì)值個(gè)value后結(jié)束

     count > 0 從表頭刪除  count < 0 從表尾刪除  count=0 全部刪除

  
                    lrem 命令會(huì)刪除列表中前 count 個(gè)值為 value 的元素,返回值是實(shí)際刪除的元素個(gè)數(shù)。

                    根據(jù)count 值的不同,lrem 命令執(zhí)行的方式會(huì)略有差異
                        當(dāng) count > 0 時(shí),lrem 命令會(huì)從列表左邊開始刪除前 count 個(gè)值為 value 的元素
                        當(dāng) count < 0 時(shí),lrem 命令會(huì)從列表右邊開始刪除前count 個(gè)值為 value 的元素
                        當(dāng) count = 0 時(shí),lrem 命令會(huì)刪除所有值為value的元素
 

(6)lindex key index:返回index索引上的值

                    lindex 命令用來(lái)返回指定索引的元素,索引從 0 開始 ,如果 index 是負(fù)數(shù)則表示從右邊開始計(jì)算的索引,

                    最右邊元素的索引是 -1        
        (7)lset key index value:設(shè)置index索引上的值
                    lset 是通過索引操作列表的命令,它會(huì)將索引為 index 的元素賦值為 value
 

(8)ltrim key start stop:只保留列表指定片段,剪切key對(duì)應(yīng)的鏈接,切[start, stop]一段并把該值重新賦給key,
                    ltrim 命令可以刪除指定索引范圍之外的所有元素,其指定列表范圍的方法和 lrange 命令相同
                    ltrim 命令常和 lpush 命令一起使用來(lái)限制列表中元素的數(shù)量,

                        比如記錄日志時(shí)我們希望只保留最近的 100 條日志,則每次加入新元素時(shí)調(diào)用一次ltrim 命令即可;

(9)linsert key after | before search value:向列表中插入元素,

                    在key 鏈表中尋找search,并在search值之前|之后插入value
                    linsert 命令首先會(huì)在列表中從左到右查找值為 search 的元素,

                  然后根據(jù)第二個(gè)參數(shù)是 before 還是 after 來(lái)決定將 value 插入到該元素的前面還是后面,如果命令執(zhí)行成功,

                  返回插入操作完成之后列表的長(zhǎng)度。如果沒有找到 search 返回 -1 如果key 不存在或?yàn)榭?,返?0

(10)rpoplpush source destination:將元素從一個(gè)列表轉(zhuǎn)到另一個(gè)列表R

                    把source 的末尾拿出,放到destination頭部,并返回單元值

應(yīng)用場(chǎng)景: task + bak 雙鏈表完成安全隊(duì)列

Redis常用的操作命令

業(yè)務(wù)邏輯: rpoplpush task bak

接收返回值并做業(yè)務(wù)處理

如果成功則rpop bak清除任務(wù),如果不成功,下次從bak表取任務(wù)

 

               rpoplpush 先執(zhí)行 rpop 命令再執(zhí)行 lpush 命令。rpoplpush 命令先會(huì)從source 列表類型鍵的右邊彈出一個(gè)元素,

                然后將其加入到 destination 列表類型鍵的左邊,并返回這個(gè)元素的值,整個(gè)過程是原子的

(11)brpop,blpop key timeout:等待彈出key的尾/頭元素

     timeout為等待超時(shí)時(shí)間,如果timeout為0則一直等待下去

應(yīng)用場(chǎng)景:長(zhǎng)輪詢ajax,在線聊天時(shí)能用到

四、hashes類型及操作

Redis hash 是一個(gè)string類型的field和value的映射表,它的添加、刪除操作都是O(1)(平均)。hash特別適用于存儲(chǔ)對(duì)象,將一個(gè)對(duì)象存儲(chǔ)在hash類型中會(huì)占用更少的內(nèi)存,并且可以方便的存取整個(gè)對(duì)象。

配置: hash_max_zipmap_entries 64 #配置字段最多64個(gè)

hash_max_zipmap_value 512 #配置value最大為512字節(jié)

(1)hset key field value   用來(lái)給字段賦值

                【hset myhash field value:設(shè)置myhash的field為value】

                    hset 命令的方便之處在于不區(qū)分插入和更新操作,這意味著修改數(shù)據(jù)時(shí)不用事先判斷字段是否存

                    在來(lái)決定要執(zhí)行的是插入操作還是更新操作,當(dāng)執(zhí)行的是插入操作時(shí), hset 命令返回 1 ,

                    當(dāng)執(zhí)行的是更新操作時(shí),hset 命令返回的是 0,當(dāng)鍵本身不存在時(shí), hset 命令還會(huì)自動(dòng)建立他

(2)hmset key field value [ field value ...... ] 設(shè)置多個(gè)鍵值 

               【hmset myhash field1 value1 field2 value2:同時(shí)設(shè)置多個(gè)field】

(3)hget key field  命令用來(lái)獲得字段的值

                【hget myhash field:獲取指定的hash field】

(4)hmget key field [ field ...... ] 獲得多個(gè)鍵值 

                【hmget myhash field1 field2:一次獲取多個(gè)field】

(5)hgetall key :獲取鍵中所有字段和字段值卻不知道鍵中有哪些字段時(shí)使用,返回的結(jié)果是字段和字段值組成的列表

                【hgetall myhash:獲取某個(gè)hash中全部的field及value】 

(6)hsetnx key field value:當(dāng)字段不存在時(shí)賦值

                【hsetnx myhash field value:不存在的情況下設(shè)置myhash的field為value】

                hsetnx 命令與hset 命令類似,區(qū)別在于如果字段已經(jīng)存在,hsetnx 命令將不執(zhí)行任何操作

        (7)hexists key field 判斷字段是否存在【存在返回 1 ,否則返回 0】

                【hexists myhash field:測(cè)試指定的field是否存在】

    

(8)hincrby key field increment   使字段值增加指定的整數(shù)
                 【hincrby myhash field 5:指定的hash field加上給定的值】

(9)hlen key 獲得字段數(shù)量  【hlen myhash:返回hash的field數(shù)量】

(10)hdel key field [ field .....]   刪除一個(gè)或多個(gè)字段,返回值是被刪除的字段個(gè)數(shù)

                【hdel myhash field:刪除指定的field】

(11)hkeys key 獲取所有字段的名字  【 hkeys myhash:返回hash所有的field】

(12)hvals key 獲得鍵中所有字段的值  【hvals myhash:返回hash所有的value】


 

五、集合結(jié)構(gòu)操作

特點(diǎn):無(wú)序性、確定性、唯一性

       (1)sadd key member [ member .... ]  :往集合里面添加元素

                 sadd 命令用來(lái)向集合中增加一個(gè)或多個(gè)元素,如果鍵不存在則會(huì)自動(dòng)創(chuàng)建。

                因?yàn)樵谝粋€(gè)集合中不能有相同的元素,所以如果要加入的元素已經(jīng)存在與集合中就會(huì)忽略這個(gè)元素。

                返回值是成功加入的元素?cái)?shù)量(忽略的元素不計(jì)算在內(nèi))

       (2)srem key member [ member .... ] :刪除集合某個(gè)元素  
                 srem 命令用來(lái)從集合中刪除一個(gè)或多個(gè)元素,并返回刪除成功的個(gè)數(shù)

(3)smembers key:獲取集合所有的元素

(4)spop key:返回并刪除集合中1個(gè)隨機(jī)元素(可以做抽獎(jiǎng),不會(huì)重復(fù)抽到某人) 

         由于集合類型的元素是無(wú)序的,所以 spop 命令會(huì)從集合中隨機(jī)選擇一個(gè)元素彈出,

                返回值為被移除的隨機(jī)元素,如果 key 不存在或者key 為空集時(shí),返回 nil

(5)sismember key value:判斷集合是否有某個(gè)值

                判斷一個(gè)元素是否在集合中,是一個(gè)時(shí)間復(fù)雜度為 0(1) 的操作,

                無(wú)論集合中有多少個(gè)元素,sismember 命令始終可以極快的返回結(jié)果。

                當(dāng)值存在時(shí) sismember 命令返回 1 ,當(dāng)值不存在或者鍵不存在時(shí)返回 0

(6)scard key:返回集合元素的個(gè)數(shù)

(7)smove source dest value:把source的value移動(dòng)到dest集合中

(8)srandmember key [ count ]        隨機(jī)獲得集合中的元素
                  該命令用來(lái)隨機(jī)從集合中獲取一個(gè)元素
                  還可以傳遞 count 參數(shù)來(lái)一次隨機(jī)獲得多個(gè)元素,根據(jù) count 的正負(fù)不同,具體表現(xiàn)也不同
                  當(dāng)count為正數(shù)時(shí),srandmember 會(huì)隨機(jī)獲取從集合里獲得count個(gè)不重復(fù)的元素。

                  如果count的值大于集合中的元素個(gè)數(shù),則srandmember 會(huì)返回集合中的全部元素
                  當(dāng)count為負(fù)數(shù)時(shí),srandmember 會(huì)隨機(jī)從集合中獲得count個(gè)的元素,這些元素有可能相同
                    【注:當(dāng)傳遞count 參數(shù)時(shí),在windows環(huán)境下提示命令參數(shù)錯(cuò)誤】

    集合間運(yùn)算
(9) sdiff key [ key ...... ]  【sdiff key1 key2:求key1 key2的差集】
                    sdiff 命令用來(lái)對(duì)多個(gè)集合執(zhí)行差集運(yùn)算。集合 A 與集合 B 的差集表示為 A- B ,

                    代表所有屬于 A 且不屬于 B 的元素構(gòu)成的集合,即 A - B = { x| x∈A  且 x ∈/B }
            
                    命令使用方法:
                            sadd seta 1 2 3 4 6 7 8
                            sadd setb 2 3 4
                            sdiff seta setb
                    該命令支持同時(shí)傳入多個(gè)鍵, 計(jì)算順序是先計(jì)算 seta 和 setb 在計(jì)算結(jié)果與 setc 的差集
                            sadd setc 2 3 4
                            sdiff seta setb setc
        
(10)sinter key [ key ..... ]  【sinter key1 key2 key3:求key1 key2 key3的交集】
                    該命令用來(lái)對(duì)多個(gè)集合執(zhí)行交集運(yùn)算。集合 A 與集合 B 的交集表示為 A∩B,

                    代表所有屬于 A 且屬于 B 的元素構(gòu)成的集合即 A∩B = { x| x∈A  且 x ∈B }
            
                    命令使用方法:
                            sinter seta setb
                    該命令同樣支持同時(shí)傳入多個(gè)鍵
 
(11)sunion key [ key ...... ]【sunion key1 key2:求key1 key2 的并集】
                    該命令用來(lái)對(duì)多個(gè)集合執(zhí)行并集運(yùn)算。集合 A 與集合 B的并集表示為 A∪B ,

                    代表所有屬于A或所有屬于B的元素構(gòu)成的集合即  A∪B = { x| x∈A  或 x ∈B }
            
                    命令使用方法:
                            sunion seta setb
                    該命令同樣支持同時(shí)傳入多個(gè)鍵

        進(jìn)行集合運(yùn)算并將結(jié)果存儲(chǔ)
        (12)sdiffstore destination key [ key ...... ]

                    sdiffstore 命令和 sdiff 命令功能一樣,唯一的區(qū)別就是前者不會(huì)直接返回運(yùn)算的結(jié)果,

                    而是將結(jié)果存在 destination 鍵中

        (13) sinterstore destination key [ key ...... ]  【sinterstore res key1 key2:求key1 key2的交集并存在res里 】

                    sinterstore 這個(gè)命令類似于 sinter 命令,

                    但它將結(jié)果保存到 destination 集合,而不是簡(jiǎn)單地返回結(jié)果集

        (14)sunionstore destination key [ key ...... ]
                    sunionstore 這個(gè)命令類似于 sunion 命令,

                    但它將結(jié)果保存到 destination 集合,而不是簡(jiǎn)單地返回結(jié)果集。

六、有序集合

概念:它是在set的基礎(chǔ)上增加了一個(gè)順序?qū)傩?,這一屬性在添加修改元素的時(shí)候可以指定,每次指定后,zset會(huì)自動(dòng)按新的值調(diào)整順序??梢岳斫鉃橛袃闪械腗ySQL表,一列存儲(chǔ)value,一列存儲(chǔ)順序,操作中key理解為zset的名字。

和set一樣sorted,sets也是string類型元素的集合,不同的是每個(gè)元素都會(huì)關(guān)聯(lián)一個(gè)double型的score。sorted set的實(shí)現(xiàn)是skip list和hash table的混合體。

當(dāng)元素被添加到集合中時(shí),一個(gè)元素到score的映射被添加到hash table中,所以給定一個(gè)元素獲取score的開銷是O(1)。另一個(gè)score到元素的映射被添加的skip list,并按照score排序,所以就可以有序地獲取集合中的元素。添加、刪除操作開銷都是O(logN)和skip list的開銷一致,redis的skip list 實(shí)現(xiàn)是雙向鏈表,這樣就可以逆序從尾部去元素。sorted set最經(jīng)常使用方式應(yīng)該就是作為索引來(lái)使用,我們可以把要排序的字段作為score存儲(chǔ),對(duì)象的ID當(dāng)元素存儲(chǔ)。

(1)zadd key score member [ score member ...... ]:添加元素

                zadd 命令用來(lái)向有序集合中加入一個(gè)元素和該元素的分?jǐn)?shù),

                如果該元素已經(jīng)存在,則會(huì)用新的分?jǐn)?shù)替換原有的分?jǐn)?shù)。zadd命令的返回值是新加入到集合中的元素個(gè)數(shù)

                (不包含之前已經(jīng)存在的元素)

        獲得排名在某個(gè)范圍的元素列表

(2) zrange key start stop [withscore]:把集合排序后,返回名次[start,stop]的元素 

                        默認(rèn)是升續(xù)排列  withscores 是把score也打印出來(lái)
                        zrange 命令會(huì)按照元素分?jǐn)?shù)從小到大的順序返回索引從 start 到 stop 之間的所有元素

                        (包含兩端的元素)。zrange 命令和 lrange 命令十分相似,如索引都是從0開始,

                        負(fù)數(shù)代表從后向前查找(-1 表示最后一個(gè)元素)。

                        如果需要同時(shí)獲得元素的分?jǐn)?shù)的話,可以在zrange 命令的尾部加上 widthscores 參數(shù)。
                        注:如果兩個(gè)元素的分?jǐn)?shù)相同,redis會(huì)按照字典順序(即 0<9<A<Z<a<z 這樣的順序)來(lái)進(jìn)行排列。

                        如果元素的值是中文,則取決于,中文的編碼方式,

         (3)zrevrange key start stop [ withscores ]

                        zrevrange 命令和 zrange 的唯一不同在于 zrevrange 是按照元素分?jǐn)?shù)從大到小的順序給定結(jié)果的

        獲得元素的排名
         (4) zrank key member:查詢member的排名(升序0名開始)

         (5) zrevrank key member:查詢member排名(降序 0名開始)

                    zrank 命令會(huì)按照元素分?jǐn)?shù)從小到大的順序獲得指定的元素排名(從 0 開始,即分?jǐn)?shù)最小的元素排名為0)
                    zrebrank 命令則正好相反,分?jǐn)?shù)最大的元素排名為0

        (3)zscore key member:獲得元素的分?jǐn)?shù)       

(4)zrangebyscore key min max [ withscores ] [ limit offset count ]:獲得指定分?jǐn)?shù)范圍內(nèi)的元素

                 【zrangebyscore key min max [withscores] limit offset N:

                                    集合(升序)排序后取score在[min, max]內(nèi)的元素,并跳過offset個(gè),取出N個(gè)】

                    該命令按照元素分?jǐn)?shù)從小到大的順序返回分?jǐn)?shù)在 min 到 max 之間(包含 min 和max 的元素)
                    如果希望分?jǐn)?shù)范圍不包含端點(diǎn)值,可以在分?jǐn)?shù)前加上 "(" 符號(hào),

                    例如:希望返回80分到100分的的數(shù)據(jù),可以包含80分單不包含100分
                    命令:zrangebyscore scoreboard 80 (100 widthscores min 和 max 還支持無(wú)窮大,

                                同 zadd 命令一樣,-inf 和 +inf 分別表示負(fù)無(wú)窮大和正無(wú)窮大。

                                比如希望得到所有分?jǐn)?shù)高于 80分(不包含80分)的人的名單,但是卻不知道最高分是多少,

                                這是就可以使用 +inf zrangebyscore scoreboard (80 +inf 命令 limit offset count

                                與 SQL 中的用法基本相同,即在獲得的元素列表的基礎(chǔ)上向后偏移 offset 個(gè)元素

                                并且只獲取前count個(gè)元素 zrevrangebyscore 不僅是按照元素分?jǐn)?shù)從大往小的順序給出結(jié)果,

                                而且他的 min 和max 的參數(shù)的順序和 zrangebyscore 命令是相反的

       
         (5)zincrby key increment member:增加某個(gè)元素的分?jǐn)?shù)

                  zincrby 命令可以增加一個(gè)元素的分?jǐn)?shù),返回值是更改后的分?jǐn)?shù), 例如想給peter 加 4 分 ,

                  zincrby scoreborder 4 peter,  increment  也可以是負(fù)數(shù)表示減分, zincrby scoreborder -4 peter
                  如果指定元素不存在,redis 在執(zhí)行命令前會(huì)先建立它并將他的值賦為0在執(zhí)行操作    

       刪除元素

  (6)zrem key value1 value2:刪除集合中的元素,刪除一個(gè)或多個(gè)元素

                   zrem 命令的返回值是成功刪除的元素?cái)?shù)量(不包含本來(lái)就不存在的元素)

         (7)zremrangebyrank key start end:按排名范圍刪除元素,刪除名次在[start, end]之間的

                 按照元素分?jǐn)?shù)從小到大的順序(即索引 0 表示最小的值)刪除在指定排名范圍內(nèi)的所有元素,

                 并返回刪除元素的數(shù)量     

         (8)zremrangebyscore key min max:按照score來(lái)刪除元素,刪除score在[min, max]之間

                    zremrangebyscore 命令刪除指定分?jǐn)?shù)范圍內(nèi)的所有元素,

                    參數(shù) min 和 max 的特性和 zrangebyscore 命令中的一樣,返回值是刪除元素的個(gè)數(shù)  

  (9)zcard key:返回集合元素的個(gè)數(shù)

   (10)zcount key min max:返回[min, max]區(qū)間內(nèi)元素?cái)?shù)量

                    zcount 命令的 min max 參數(shù)的特性與 zrangebyscore 命令中的一樣  

       計(jì)算有序集合的交集
         (11)zinterstore destination numkeys key [ key ... ] [ weights weight [ weight ... ] ] [ aggregate SUM | MIN | MAX ]

                    zinterstore 命令用來(lái)計(jì)算多個(gè)有序集合的交集并將結(jié)果存儲(chǔ)在 destination 鍵中(同樣以有序集合類型存儲(chǔ)),

                    返回值為 destination 鍵中元素的個(gè)數(shù),destination 鍵中元素的分?jǐn)?shù)是由 aggregate 參數(shù)決定的
                  【zinterstore dest numkeys key1[key2..] [WEIGHTS weight1 [weight2...]] [AGGREGATE   SUM | MIN | MAX]

求key1,key2的交集,key1,key2的權(quán)值分別是weight1,weight2

聚合方法用 sum | min | max

聚合結(jié)果 保存子dest集合內(nèi)

                    】
                1. 當(dāng) aggregate 是 SUM (也就是默認(rèn)值),destination 鍵中元素的分?jǐn)?shù)是每個(gè)參與計(jì)算的集合中該元素分?jǐn)?shù)的和
                
                2.當(dāng) aggregate 是 MIN 時(shí),destination 鍵中元素的分?jǐn)?shù)是參與計(jì)算的集合中該元素分?jǐn)?shù)最小值
                
                3.當(dāng) aggregate 是 MAX 是,destination 鍵中元素的分?jǐn)?shù)是參與計(jì)算的集合中該元素分?jǐn)?shù)最大值

                    zinterstore 命令還能通過 weights 參數(shù)設(shè)置每個(gè)集合的權(quán)重,

                    每個(gè)集合在參與計(jì)算時(shí)元素的分?jǐn)?shù)會(huì)被乘上該集合的權(quán)重

注意:weights,aggregate如何理解?

  答:如果有交集,交集元素又有score,score怎么處理?aggregate num->score相加,

                        min最小score,max最大score,另外可以通過weights設(shè)置不同的key的權(quán)重,交集時(shí)  score*weight

       
          (12) zunionstore 計(jì)算多個(gè)有序集合的并集并將結(jié)果存儲(chǔ)在 destination 鍵中,用法與 zinterstore 命令的用法一樣

七、事務(wù)

                事務(wù)的原理是先將屬于一個(gè)事務(wù)的命令發(fā)送給redis ,然后再讓 redis 依次執(zhí)行這些命令
                   
                錯(cuò)誤處理
                    (1)語(yǔ)法錯(cuò)誤。語(yǔ)法錯(cuò)誤指命令不存在或者命令參數(shù)個(gè)數(shù)不對(duì)。

                              這種情況下,事務(wù)中只要有一個(gè)命令有語(yǔ)法錯(cuò)誤,執(zhí)行exec命令后redis就會(huì)直接返回錯(cuò)誤,

                              連語(yǔ)法正確的命令也不會(huì)執(zhí)行。注:redis 2.6.5 之前的版本會(huì)忽略有語(yǔ)法錯(cuò)誤的命令,

                              然后執(zhí)行事務(wù)中其他語(yǔ)法正確的命令。
                    (2)運(yùn)行錯(cuò)誤。運(yùn)行錯(cuò)誤指在命令執(zhí)行時(shí)出現(xiàn)的錯(cuò)誤。

                              比如使用散列類型的命令操作集合類型的鍵,這種錯(cuò)誤在實(shí)際執(zhí)行之前redis是無(wú)法發(fā)現(xiàn)的,

                              所以在事務(wù)里這樣的命令是會(huì)被redis接受并執(zhí)行的,如果事務(wù)里的一條命令出現(xiàn)運(yùn)行錯(cuò)誤,

                              事務(wù)里其他的命令依然會(huì)繼續(xù)執(zhí)行(包含出錯(cuò)命令之后的命令)
 
                reids的事務(wù)沒有關(guān)系數(shù)據(jù)庫(kù)事務(wù)提供的回滾功能,為此開發(fā)者必須在事務(wù)執(zhí)行出錯(cuò)之后自己收拾剩下的攤子
        
  (1) watch 命令
                        watch key [ key ... ]
                        監(jiān)視一個(gè)或多個(gè) key ,如果在事務(wù)執(zhí)行之前這個(gè)或這些 key 被其他命令所改動(dòng),

                        那么事務(wù)將被打斷,監(jiān)控一直持續(xù)到exec命令
        
  (2) unwatch:取消 watch 命令對(duì)所有 key 的監(jiān)視
    
  (3)生存時(shí)間
           expire key seconds  :其中 seconds 參數(shù)表示鍵的生存時(shí)間,單位是秒,該參數(shù)必須是整數(shù)       
                        命令返回 1表示設(shè)置成功,返回 0 則表示鍵不存在或設(shè)置失敗
                        如果想知道一個(gè)鍵還有多久會(huì)被刪除,可以使用 ttl 命令。返回值是鍵的剩余時(shí)間(單位是秒),       
                        如果想取消鍵的生存時(shí)間設(shè)置(即將鍵恢復(fù)成為永久的),可以使用 persist 命令。

                        如果生存時(shí)間被成功清除則返回 1 。否則返回 0
               
            除了 persist 命令之外,使用 set 、getset 命令為鍵賦值也同時(shí)會(huì)清楚鍵的生存時(shí)間
            注: incr 、lpush、hset、zrem 命令均不會(huì)影像鍵的生存時(shí)間
 
                精確控制鍵的生存時(shí)間應(yīng)該使用 pexpire 命令。該命令的單位是毫秒
                可以使用 pttl 命令以毫秒為單位返回鍵的剩余時(shí)間
                另外不太常用命令:expireat 和 pexpireat,該命令第二個(gè)參數(shù)表示鍵的生存時(shí)間的截至?xí)r間,

                expireat 單位秒 pexpireat 單位毫秒
  

  (4)sort:該命令可以對(duì)列表類型,集合類型,和有序集合類型鍵進(jìn)行排序
                    列表類型,有序集合類型排序時(shí),會(huì)忽略元素的分?jǐn)?shù),只針對(duì)元素的自身的值進(jìn)行排序           
                    除了可以排列數(shù)字外,sort 命令還可以通過 alpha 參數(shù)實(shí)現(xiàn)按照字典順序排列非數(shù)字元素
     
             sort 命令的 desc 參數(shù)可以實(shí)現(xiàn)將元素按照從大到小的順序排列
             sort 命令還支持 limit 參數(shù)來(lái)返回指定范圍的結(jié)果,用法和sql 語(yǔ)句一樣 limit offset count ,

                    表示跳過前 offset 個(gè)元素并獲取之后的 count 個(gè)元素
      
            sort 命令 by 參數(shù),默認(rèn)情況下, sort uid 直接按照 uid 中的值排序,通過 by 參數(shù),

                    可以讓 uid 按照其他鍵的元素來(lái)排序
        
             user_level_* 是一個(gè)占位符,他先取出 uid 中的值,然后在用這個(gè)值來(lái)查找相應(yīng)的鍵
                    比如在對(duì) uid 列表進(jìn)行排序時(shí), 程序就會(huì)先取出 uid 的值 1 、 2 、 3 、 4 ,

                    然后使用 user_level_1 、 user_level_2 、 user_level_3 和   user_level_4 的值作為排序 uid 的權(quán)重。
 
            使用 get 選項(xiàng),可以根據(jù)排序的結(jié)果來(lái)取出相應(yīng)的鍵值 

                    一個(gè)sort 命令中可以有多個(gè) get 參數(shù)(而 by 參數(shù)只能有一個(gè))       
 
             默認(rèn)情況下 sort 命令會(huì)直接返回排序結(jié)果,如果希望保存排序結(jié)果,可以使用 store 參數(shù),保存后鍵的類型為列表類型

八、服務(wù)器相關(guān)命令

(1)ping:測(cè)定連接是否存活

(2)echo:在命令行打印一些內(nèi)容

(3)select:選擇數(shù)據(jù)庫(kù)

(4)quit:退出連接

(5)dbsize:返回當(dāng)前數(shù)據(jù)庫(kù)中key的數(shù)目

(6)info:獲取服務(wù)器的信息和統(tǒng)計(jì)

(7)monitor:實(shí)時(shí)轉(zhuǎn)儲(chǔ)收到的請(qǐng)求

(8)config get 配置項(xiàng):獲取服務(wù)器配置的信息

config set 配置項(xiàng)  值:設(shè)置配置項(xiàng)信息

(9)flushdb:刪除當(dāng)前選擇數(shù)據(jù)庫(kù)中所有的key

(10)flushall:刪除所有數(shù)據(jù)庫(kù)中的所有的key

(11)time:顯示服務(wù)器時(shí)間,時(shí)間戳(秒),微秒數(shù)

(12)bgrewriteaof:后臺(tái)保存rdb快照

(13)bgsave:后臺(tái)保存rdb快照

(14)save:保存rdb快照

(15)lastsave:上次保存時(shí)間

(16)shutdown [save/nosave]

注意:如果不小心運(yùn)行了flushall,立即shutdown nosave,關(guān)閉服務(wù)器,然后手工編輯aof文件,去掉文件中的flushall相關(guān)行,然后開啟服務(wù)器,就可以倒回原來(lái)是數(shù)據(jù)。如果flushall之后,系統(tǒng)恰好bgwriteaof了,那么aof就清空了,數(shù)據(jù)丟失。

(17)showlog:顯示慢查詢

問:多慢才叫慢?

答:由slowlog-log-slower-than 10000,來(lái)指定(單位為微秒)

問:服務(wù)器存儲(chǔ)多少條慢查詢記錄

答:由slowlog-max-len 128,來(lái)做限制     

到此,相信大家對(duì)“Redis常用的操作命令”有了更深的了解,不妨來(lái)實(shí)際操作一番吧!這里是創(chuàng)新互聯(lián)網(wǎng)站,更多相關(guān)內(nèi)容可以進(jìn)入相關(guān)頻道進(jìn)行查詢,關(guān)注我們,繼續(xù)學(xué)習(xí)!

當(dāng)前名稱:Redis常用的操作命令
地址分享:http://aaarwkj.com/article0/psoooo.html

成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供手機(jī)網(wǎng)站建設(shè)、小程序開發(fā)、標(biāo)簽優(yōu)化網(wǎng)站設(shè)計(jì)公司、移動(dòng)網(wǎng)站建設(shè)電子商務(wù)

廣告

聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請(qǐng)盡快告知,我們將會(huì)在第一時(shí)間刪除。文章觀點(diǎn)不代表本網(wǎng)站立場(chǎng),如需處理請(qǐng)聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時(shí)需注明來(lái)源: 創(chuàng)新互聯(lián)

外貿(mào)網(wǎng)站建設(shè)
在线观看国产一区二区不卡| 亚洲国产日韩欧美综合久久| 97视频在线中文字幕| 人妻丰满熟妇九九久久| 国产精品麻豆色哟哟av| 麻豆人妻少妇精品系列| 亚洲精品隔壁傲慢人妻| 白天躁晚上躁天天躁在线| 国产男女乱淫一区二区三区| 亚洲综合一区二区三区四区在线 | 秒播视频午夜福利在线观看| 美女丝袜诱惑国产91| 97视频免费观看在线| 乱色熟女一区二区三区| 久久精品一品二品三品| 久久婷婷欧美激情综合| 久久久久久精品国产毛片| 91国产在线视频免费观看| 日韩精品一区二区视频大全| 久久伊人亚洲中文字幕| 国产熟女一区二区三区正在| 最新亚洲国产高清激情| 国产成人av三级在线观看| 日本中文字幕免费一区| 日本高清不卡中文字幕| 最美是你免费视频观看| 综合久久—本道中文字幕| 99热成人精品热久久| 欧美精品欧美精品一区二区| 欧美日韩在线视频一区| 夜福利国产视频大屁股| 国产日韩熟女中文字幕| 国产免费很黄很色视频| 久久香蕉香蕉公开视频| 国产高清学生三级一区二区| 日本不卡在线观看欧美精品| 国产精品中文字幕欧美日韩| 中出亚洲精品日韩在线视频| 国产一区二区三区不卡av| 亚洲国产中日韩精品综合| 婷婷不卡中文字幕三区|