免费A级毛片无码专区网站-成人国产精品视频一区二区-啊 日出水了 用力乖乖在线-国产黑色丝袜在线观看下-天天操美女夜夜操美女-日韩网站在线观看中文字幕-AV高清hd片XXX国产-亚洲av中文字字幕乱码综合-搬开女人下面使劲插视频

Redis 02: redis基礎(chǔ)知識(shí) + 5種數(shù)據(jù)結(jié)構(gòu) + 基礎(chǔ)操作命令

Redis基礎(chǔ)知識(shí)1)、測(cè)試redis服務(wù)的性能:redis-benchmark2)、查看redis服務(wù)是否正常運(yùn)行:ping如果正常---pong3)、查看redis服務(wù)器的統(tǒng)計(jì)信息:info查看redis服務(wù)的所有統(tǒng)計(jì)信息info [信息段] 查看redis服務(wù)器的指定的統(tǒng)計(jì)信息,如:info Replication4)、redis的數(shù)據(jù)庫(kù)實(shí)例:作用類(lèi)似于mysql的數(shù)據(jù)庫(kù)實(shí)例,redis中的數(shù)據(jù)庫(kù)實(shí)例只能由redis服務(wù)來(lái)創(chuàng)建和維護(hù),開(kāi)發(fā)人員不能修改和自行創(chuàng)建數(shù)據(jù)庫(kù)實(shí)例;默認(rèn)情況下,redis會(huì)自動(dòng)創(chuàng)建16個(gè)數(shù)據(jù)庫(kù)實(shí)例,并且給這些數(shù)據(jù)庫(kù)實(shí)例進(jìn)行編號(hào),從0開(kāi)始,一直到15,使用時(shí)通過(guò)編號(hào)來(lái)使用數(shù)據(jù)庫(kù);可以通過(guò)配置文件,指定redis自動(dòng)創(chuàng)建的數(shù)據(jù)庫(kù)個(gè)數(shù);redis的每一個(gè)數(shù)據(jù)庫(kù)實(shí)例本身占用的存儲(chǔ)空間是很少的,所以也不造成存儲(chǔ)空間的太多浪費(fèi) 。默認(rèn)情況下,redis客戶端連接的是編號(hào)是0的數(shù)據(jù)庫(kù)實(shí)例;可以使用select index切換數(shù)據(jù)庫(kù)實(shí)例 。5)、查看當(dāng)前數(shù)據(jù)庫(kù)實(shí)例中所有key的數(shù)量:dbsize6)、查看當(dāng)前數(shù)據(jù)庫(kù)實(shí)例中所有的key:keys *7)、清空數(shù)據(jù)庫(kù)實(shí)例:flushdb8)、清空所有的數(shù)據(jù)庫(kù)實(shí)例:flushall9)、查看redis中所有的配置信息:config get *查看redis中的指定的配置信息:config get parameterRedis的五種數(shù)據(jù)結(jié)構(gòu)程序是用來(lái)處理數(shù)據(jù)的,Redis是用來(lái)存儲(chǔ)數(shù)據(jù)的;程序處理完的數(shù)據(jù)要存儲(chǔ)到redis中,不同特點(diǎn)的數(shù)據(jù)要存儲(chǔ)在Redis中不同類(lèi)型的數(shù)據(jù)結(jié)構(gòu)中 。字符串:zhangsan20truestring 單key:單value: username:zhangsan age:20list列表: 13900009999 zs@163.com 321321list單key:多有序value: contacts:13900009999,xxx,xxxxset集合:beijing shanghai chongqing tianjinset單key:多無(wú)序value:city:bj sh cq tjpojo:id:1001,name:zhangsan,age:20hash單key: 對(duì)象(屬性:值):student:id:1001,name:zhangsan,age:20zset單key:多有序vlaue:city:1000 tj,1200 cq,1500 sh,2000 bjRedis中的操作命令1)、redis中有關(guān)key的操作命令:a)查看數(shù)據(jù)庫(kù)中的key:keys pattern|->*:匹配0個(gè)或者多個(gè)字符|->?: 匹配1個(gè)字符|->[]:匹配[]里邊的1個(gè)字符keys *:查看數(shù)據(jù)庫(kù)中所有的keykeys k*:查看數(shù)據(jù)庫(kù)中所有以k開(kāi)頭的keykeys h*o:查看數(shù)據(jù)庫(kù)中所有以h開(kāi)頭、以o結(jié)尾的keykeys h?o: 查看數(shù)據(jù)庫(kù)中所有以h開(kāi)頭、以o結(jié)尾的、并且中間只有一個(gè)字符的keykeys h[abc]llo:查看數(shù)據(jù)庫(kù)中所有以h開(kāi)頭以llo結(jié)尾,并且h后邊只能取abc中的一個(gè)字符的keyb)判斷key在數(shù)據(jù)庫(kù)中是否存在:exists key 如果存在,則返回1;如果不存在,則返回0exists key [key key ....] 返回值是存在的key的數(shù)量exists k1exists k1 k2 k3 helloc)移動(dòng)指定key到指定的數(shù)據(jù)庫(kù)實(shí)例:move key indexmove k 1d)查看指定key的剩余生存時(shí)間:ttl key|->如果key沒(méi)有設(shè)置生存時(shí)間,返回-1|->如果key不存在,返回-2ttl k1ttl k2e)設(shè)置key的最大生存時(shí)間:expire key secondsexpire k2 20f)查看指定key的數(shù)據(jù)類(lèi)型:type keytype k1g)重命名key: rename key newkeyrename hello k2h)刪除指定的key:del key [key key .....]|->返回值是實(shí)際刪除的key的數(shù)量del k1 k2 k3 k42)、redis中有關(guān)string類(lèi)型數(shù)據(jù)的操作命令:a)將string類(lèi)型的數(shù)據(jù)設(shè)置到redis中:set 鍵 值set zsname zhangsanset zsage 20set totalRows 100set zsage 30 如果key已經(jīng)存在,則后來(lái)的value會(huì)把以前的value覆蓋掉.b)從redis中獲取string類(lèi)型的數(shù)據(jù):get 鍵get zsnameget zsageget totalRowsc)追加字符串:append key value|->返回追加之后的字符串長(zhǎng)度|->如果key不存在,則新創(chuàng)建一個(gè)key,并且把value值設(shè)置為value 。set phone 1389999append phone 8888d)獲取字符串?dāng)?shù)據(jù)的長(zhǎng)度:strlen keystrlen phonee)將字符串?dāng)?shù)值進(jìn)行加1運(yùn)算:incr key|->返回加1運(yùn)算之后的數(shù)據(jù)|->如果key不存在,首先設(shè)置一個(gè)key,值初始化為0,然后進(jìn)行incr運(yùn)算 。|->要求key所表示value必須是數(shù)值,否則,報(bào)錯(cuò)incr zsageincr ageincr zsname報(bào)錯(cuò)f)將字符串?dāng)?shù)值進(jìn)行減1運(yùn)算:decr key|->返回減1運(yùn)算之后的數(shù)據(jù)|->如果key不存在,首先設(shè)置一個(gè)key,值初始化為0,然后進(jìn)行decr運(yùn)算 。|->要求key所表示value必須是數(shù)值,否則,報(bào)錯(cuò)g)將字符串?dāng)?shù)值進(jìn)行加offset運(yùn)算:incrby key offset|->返回加offset運(yùn)算之后的數(shù)據(jù)|->如果key不存在,首先設(shè)置一個(gè)key,值初始化為0,然后進(jìn)行incrby運(yùn)算 。|->要求key所表示value必須是數(shù)值,否則,報(bào)錯(cuò)incrby zsage 10h)將字符串?dāng)?shù)值進(jìn)行減offset運(yùn)算:decrby key offset|->返回減offset運(yùn)算之后的數(shù)據(jù)|->如果key不存在,首先設(shè)置一個(gè)key,值初始化為0,然后進(jìn)行decrby運(yùn)算 。|->要求key所表示value必須是數(shù)值,否則,報(bào)錯(cuò)decrby zsage 10i)閉區(qū)間獲取字符串key中從startIndex到endIndex的字符組成的子字符串:getrange key startIndex endIndex|->下標(biāo)自左至右,從0開(kāi)始,依次往后,最后一個(gè)字符的下標(biāo)是字符串長(zhǎng)多-1;|->字符串中每一個(gè)下標(biāo)也可以是負(fù)數(shù),負(fù)下標(biāo)表示自右至左,從-1開(kāi)始,依次往前,最右邊一個(gè)字符的下標(biāo)是-1zhangsangetrange zsname 2 5angsgetrange zsname 2 -3 angsgetrange zsname 0 -1 zhangsanj)用value覆蓋從下標(biāo)為startIndex開(kāi)始的字符串,能覆蓋幾個(gè)字符就覆蓋幾個(gè)字符:setrange key startIndex valuesetrange zsname 5 xiaosan//zhangxiaosansetrange zsname 5 lao//zhanglaoosank)設(shè)置字符串?dāng)?shù)據(jù)的同時(shí),設(shè)置它最大生命周期:setex key seconds valuesetex k1 20 v1l)設(shè)置string類(lèi)型的數(shù)據(jù)value到redis數(shù)據(jù)庫(kù)中,當(dāng)key不存在時(shí)設(shè)置成功,否則,則放棄設(shè)置:setnx key valuesetnx zsage 20m)批量將string類(lèi)型的數(shù)據(jù)設(shè)置到redis中:mset 鍵1 值1 鍵2 值2 .....mset k1 v1 k2 v2 k3 v3 k4 v4 k5 v5n)批量從redis中獲取string類(lèi)型的數(shù)據(jù):mget 鍵1 鍵2 鍵3.....mget k1 k2 k3 k4 k5 k6 zsname zs age totalRowso)批量設(shè)置string類(lèi)型的數(shù)據(jù)value到redis數(shù)據(jù)庫(kù)中,當(dāng)所有key都不存在時(shí)設(shè)置成功,否則(只要有一個(gè)已經(jīng)存在),則全部放棄設(shè)置:msetnx 鍵1 值1 鍵2 值2 .....msetnx kk1 vv1 kk2 vv2 kk3 vv3 k1 v13)、redis中有關(guān)list類(lèi)型數(shù)據(jù)的操作命令:?jiǎn)蝛ey-多有序value,一個(gè)key對(duì)應(yīng)多個(gè)value;多個(gè)value之間有順序,最左側(cè)是表頭,最右側(cè)是表尾;每一個(gè)元素都有下標(biāo),表頭元素的下標(biāo)是0,依次往后排序,最后一個(gè)元素下標(biāo)是列表長(zhǎng)度-1;每一個(gè)元素的下標(biāo)又可以用負(fù)數(shù)表示,負(fù)下標(biāo)表示從表尾計(jì)算,最后一個(gè)元素下標(biāo)用-1表示;元素在列表中的順序或者下標(biāo)由放入的順序來(lái)決定 。通過(guò)key和下標(biāo)來(lái)操作數(shù)據(jù) 。a)將一個(gè)或者多個(gè)值依次插入到列表的表頭(左側(cè)):lpush key value [value value .....]lpush list01 1 2 3結(jié)果:3 2 1lpush list01 4 5結(jié)果:5 4 3 2 1b)獲取指定列表中指定下標(biāo)區(qū)間的元素:lrange key startIndex endIndexlrange list01 1 3結(jié)果:4 3 2lrange list01 1 -2 結(jié)果: 4 3 2lrange list01 0 -1 結(jié)果:5 4 3 2 1 c)將一個(gè)或者多個(gè)值依次插入到列表的表尾(右側(cè)):rpush key value [value value .....]rpush list02 a b c 結(jié)果:a b crpush list02 d e結(jié)果:a b c d elpush list02 m n結(jié)果: n m a b c d e d)從指定列表中移除并且返回表頭元素:lpop keylpop list02 e)從指定列表中移除并且返回表尾元素:rpop keyrpop list02 f)獲取指定列表中指定下標(biāo)的元素:lindex key indexlindex list01 2 結(jié)果:3 g)獲取指定列表的長(zhǎng)度:llen keyllen list01 h)根據(jù)count值移除指定列表中跟value相等的數(shù)據(jù):lrem key count value|->count>0:從列表的左側(cè)移除count個(gè)跟value相等的數(shù)據(jù);|->count<0:從列表的右側(cè)移除count個(gè)跟vlaue相等的數(shù)據(jù);|->count=0:從列表中移除所有跟value相等的數(shù)據(jù)lpush list03 a a b c a d e a b b結(jié)果:b b a e d a c b a alrem list03 2 a結(jié)果:b b e d c b a alrem list03 -1 a 結(jié)果:b b e d c b alrem list03 0 a結(jié)果:b b e d c bi)截取指定列表中指定下標(biāo)區(qū)間的元素組成新的列表,并且賦值給key:ltrim key startIndex endIndexlpush list04 1 2 3 4 5結(jié)果:5 4 3 2 1ltrim list04 1 3lrange list04 0 -1結(jié)果:4 3 2j)將指定列表中指定下標(biāo)的元素設(shè)置為指定值: lset key index valuelset list04 1 10l)將value插入到指定列表中位于pivot元素之前/之后的位置: linsert key before/after pivot vlauelinsert list04 before 10 50linsert list04 after 10 604)、redis中有關(guān)set類(lèi)型數(shù)據(jù)的操作命令:?jiǎn)蝛ey-多無(wú)序value,一個(gè)key對(duì)應(yīng)多個(gè)vlaue;value之間沒(méi)有順序,并且不能重復(fù);通過(guò)業(yè)務(wù)數(shù)據(jù)直接操作集合:a)將一個(gè)或者多個(gè)元素添加到指定的集合中:sadd key value [value value ....]*如果元素已經(jīng)存在,則會(huì)忽略 。*返回成功加入的元素的個(gè)數(shù)sadd set01 a b c a結(jié)果:a b csadd set01 b d eb)獲取指定集合中所有的元素:smembers keysmembers set01c)判斷指定元素在指定集合中是否存在:sismember key member*存在,返回1*不存在,返回0sismember set01 fsismember set01 ad)獲取指定集合的長(zhǎng)度:scard keyscard set01e)移除指定集合中一個(gè)或者多個(gè)元素:srem key member [member .....]*不存在的元素會(huì)被忽略*返回成功成功移除的個(gè)數(shù)srem set01 b d mf)隨機(jī)獲取指定集合中的一個(gè)或者多個(gè)元素:srandmember key [count]|->count>0:隨機(jī)獲取的多個(gè)元素之間不能重復(fù)|->count<0: 隨機(jī)獲取的多個(gè)元素之間可能重復(fù)sadd set02 1 2 3 4 5 6 7 8srandmember set02srandmember set02 3srandmember set02 -3g)從指定集合中隨機(jī)移除一個(gè)或者多個(gè)元素:spop key [count]spop set02h)將指定集合中的指定元素移動(dòng)到另一個(gè)元素:smove source dest membersmove set01 set02 ai)獲取第一個(gè)集合中有、但是其它集合中都沒(méi)有的元素組成的新集合:sdiff key key [key key ....]sdiff set01 set02 set03j)獲取所有指定集合中都有的元素組成的新集合:sinter key key [key key ....]sinter set01 set02 set03k)獲取所有指定集合中所有元素組成的大集合:sunion key key [key key .....]sunion set01 set02 set035)、redis中有關(guān)hash類(lèi)型數(shù)據(jù)的操作命令:?jiǎn)蝛ey:field-valuefield-value.....studentzs:id-1001name-zhangsanage-20 a)將一個(gè)或者多個(gè)field-vlaue對(duì)設(shè)置到哈希表中:hset key filed1 value1 [field2 value2 ....]*如果key field已經(jīng)存在,把value會(huì)把以前的值覆蓋掉hset stu1001 id 1001hset stu1001 name zhangsan age 20 b)獲取指定哈希表中指定field的值:hget key fieldhget stu1001 idhget stu1001 name c)批量將多個(gè)field-value對(duì)設(shè)置到哈希表中: hmset key filed1 value1 [field2 value2 ....]hmset stu1002 id 1002 name lisi age 20 d)批量獲取指定哈希表中的field的值:hmget key field1 [field2 field3 ....]hmget stu1001 id name age e)獲取指定哈希表中所有的field和value:hgetall keyhgetall stu1002 f)從指定哈希表中刪除一個(gè)或者多個(gè)field:hdel key field1 [field2 field3 ....]hdel stu1002 name age g)獲取指定哈希表中所有的filed個(gè)數(shù):hlen keyhlen stu1001hlen stu1002 h)判斷指定哈希表中是否存在某一個(gè)field:hexists key fieldhexists stu1001 namehexists stu1002 name i)獲取指定哈希表中所有的field列表:hkeys keyhkeys stu1001hkeys stu1002 j)獲取指定哈希表中所有的value列表:hvals keyhvals stu1001hvals stu1002 k)對(duì)指定哈希表中指定field值進(jìn)行整數(shù)加法運(yùn)算:hincrby key field inthincrby stu1001 age 5 l)對(duì)指定哈希表中指定field值進(jìn)行浮點(diǎn)數(shù)加法運(yùn)算:hincrbyfloat key field floathset stu1001 score 80.5hincrbyfloat stu1001 score 5.5 m)將一個(gè)field-vlaue對(duì)設(shè)置到哈希表中,當(dāng)key-field已經(jīng)存在時(shí),則放棄設(shè)置;否則,設(shè)置file-value:hsetnx key field valuehsetnx stu1001 age 306)、redis中有關(guān)zset類(lèi)型數(shù)據(jù)的操作命令:有序集合本質(zhì)上是集合,所有元素不能重復(fù);每一個(gè)元素都關(guān)聯(lián)一個(gè)分?jǐn)?shù),redis會(huì)根據(jù)分?jǐn)?shù)對(duì)元素進(jìn)行自動(dòng)排序;分?jǐn)?shù)可以重復(fù);既然有序集合中每一個(gè)元素都有順序,那么也都有下標(biāo);有序集合中元素的排序規(guī)則又列表中元素的排序規(guī)則不一樣 。a)將一個(gè)或者多個(gè)member及其score值加入有序集合:zadd key score member [score member ....]*如果元素已經(jīng)存在,則把分?jǐn)?shù)覆蓋zadd zset01 20 z1 30 z2 50 z3 40 z4zadd zset01 60 z2 b)獲取指定有序集合中指定下標(biāo)區(qū)間的元素:zrange key startIndex endIndex [withscores]zrange zset01 0 -1zrange zset01 0 -1 withscores c)獲取指定有序集合中指定分?jǐn)?shù)區(qū)間(閉區(qū)間)的元素:zrangebyscore key min max [withscores]zrangebyscore zset01 30 50 withscoresd)刪除指定有序集合中一個(gè)或者多個(gè)元素:zrem key member [member......]zrem zset01 z3 z4 e)獲取指定有序集合中所有元素的個(gè)數(shù):zcard keyzcard zset01 f)獲取指定有序集合中分?jǐn)?shù)在指定區(qū)間內(nèi)的元素的個(gè)數(shù):zcount key min maxzcount zset01 20 50 g)獲取指定有序集合中指定元素的排名(排名從0開(kāi)始): zrank key memberzrank zset01 z4===>2 h)獲取指定有序集合中指定元素的分?jǐn)?shù):zscore key memberzscore zset01 z4 i)獲取指定有序集合中指定元素的排名(按照分?jǐn)?shù)從大到小的排名):zrevrank key memberzrevrank zset01 z4===>1

經(jīng)驗(yàn)總結(jié)擴(kuò)展閱讀