REmote DIctionary Server(redis)常用指令

Redis 簡(jiǎn)介REmote DIctionary Server(Redis)

是一個(gè)由Salvatore Sanfilippo寫的key-value存儲(chǔ)系統(tǒng)暂刘。
Redis是一個(gè)開源的使用ANSI C語言編寫斤斧、遵守BSD協(xié)議、支持網(wǎng)絡(luò)递胧、可基于內(nèi)存亦可持久化的日志型碑韵、Key-Value數(shù)據(jù)庫(kù),并提供多種語言的API缎脾。
它通常被稱為數(shù)據(jù)結(jié)構(gòu)服務(wù)器祝闻,因?yàn)橹担╲alue)可以是 字符串(String), 哈希(Hash), 列表(list), 集合(sets) 和 有序集合(sorted sets)等類型。

Redis 是完全開源的遗菠,遵守 BSD 協(xié)議联喘,是一個(gè)高性能的 key-value 數(shù)據(jù)庫(kù)。
Redis 與其他 key - value 緩存產(chǎn)品有以下三個(gè)特點(diǎn):
Redis支持?jǐn)?shù)據(jù)的持久化辙纬,可以將內(nèi)存中的數(shù)據(jù)保存在磁盤中豁遭,重啟的時(shí)候可以再次加載進(jìn)行使用。
Redis不僅僅支持簡(jiǎn)單的key-value類型的數(shù)據(jù)贺拣,同時(shí)還提供list蓖谢,set,zset譬涡,hash等數(shù)據(jù)結(jié)構(gòu)的存儲(chǔ)闪幽。
Redis支持?jǐn)?shù)據(jù)的備份,即master-slave模式的數(shù)據(jù)備份昂儒。

Redis 優(yōu)勢(shì)

性能極高 – Redis能讀的速度是110000次/s,寫的速度是81000次/s 沟使。
豐富的數(shù)據(jù)類型 – Redis支持二進(jìn)制案例的 Strings, Lists, Hashes, Sets 及 Ordered Sets 數(shù)據(jù)類型操作委可。
原子 – Redis的所有操作都是原子性的渊跋,意思就是要么成功執(zhí)行要么失敗完全不執(zhí)行。單個(gè)操作是原子性的着倾。多個(gè)操作也支持事務(wù)拾酝,即原子性,通過MULTI和EXEC指令包起來卡者。
豐富的特性 – Redis還支持 publish/subscribe, 通知, key 過期等等特性蒿囤。

Redis與其他key-value存儲(chǔ)有什么不同?

Redis有著更為復(fù)雜的數(shù)據(jù)結(jié)構(gòu)并且提供對(duì)他們的原子性操作崇决,這是一個(gè)不同于其他數(shù)據(jù)庫(kù)的進(jìn)化路徑材诽。Redis的數(shù)據(jù)類型都是基于基本數(shù)據(jù)結(jié)構(gòu)的同時(shí)對(duì)程序員透明底挫,無需進(jìn)行額外的抽象。

Redis運(yùn)行在內(nèi)存中但是可以持久化到磁盤脸侥,所以在對(duì)不同數(shù)據(jù)集進(jìn)行高速讀寫時(shí)需要權(quán)衡內(nèi)存建邓,因?yàn)閿?shù)據(jù)量不能大于硬件內(nèi)存。在內(nèi)存數(shù)據(jù)庫(kù)方面的另一個(gè)優(yōu)點(diǎn)是睁枕,相比在磁盤上相同的復(fù)雜的數(shù)據(jù)結(jié)構(gòu)官边,在內(nèi)存中操作起來非常簡(jiǎn)單,這樣Redis可以做很多內(nèi)部復(fù)雜性很強(qiáng)的事情外遇。同時(shí)注簿,在磁盤格式方面他們是緊湊的以追加的方式產(chǎn)生的,因?yàn)樗麄儾⒉恍枰M(jìn)行隨機(jī)訪問跳仿。
啟動(dòng)redis: redis-server.exe conf/redis-6379.conf
數(shù)據(jù)類型:hash, string, list, set, nil, sortedset /zset

操作指令

string類型指令

添加修改數(shù)據(jù):             set key value   >set username zhangsan 
獲取數(shù)據(jù):                   get key         >get username 
刪除數(shù)據(jù):                   del key         >del username
判定性添加數(shù)據(jù):        setnx key value     >setnx username zhangsan
添加修改多個(gè)數(shù)據(jù):           mset key1 value1 key2 value2 …
                     >mset k1 v1 k2 v2 k3 v3 ……
獲取多個(gè)數(shù)據(jù):                  mget key1 key2 ……      > mget k1 k2 k3 ……
獲取數(shù)據(jù)字符個(gè)數(shù)(字符串長(zhǎng)度):strlen key  
>strlen username            (return 8)
>strlen k1                  (return 2)
追加信息到原始信息后面诡渴,若沒有就創(chuàng)建:
                    append key value
                    >append username 1      (zhangsan1)
                    >append password 123    (123)
設(shè)置整形數(shù)據(jù)自增/自減(默認(rèn)自增/自減1)
                    incr key 
                    >set num 1
                    >incr/decr num          (2)
                    >incr/decr num          (3)
設(shè)置整形數(shù)據(jù)值自增/自減指定數(shù)
                    incrby/decrby key increment 
                    >incrby/decrby num 10   (13)
                    incrbyfloat key increment
                    >incrbyfloat num 1.5    (14.5)
設(shè)置數(shù)據(jù)值具有指定的生命周期(支持自動(dòng)過期)
                    setex key seconds value
                    setex code 10 abcd
                    milliseconds 毫秒

hash基礎(chǔ)操作

添加修改數(shù)據(jù)        hset key field value
                    >hset user:001 name zhangsan
                    hmset key field1 value1 field2 value2 …
                    >hmset user:001 password 123 age 18
                    hsetnx key field value
                    hsetnx user:001 name lisi
根據(jù)key和field獲取單個(gè)/多個(gè)value
                    hget key field
                    >hget user:001 name
                    hgetall key *
                    >hgetall user:001
刪除數(shù)據(jù)            >hdel key field1 [field2 field3…]
                    >hdel user:001 name
                    >hdel user:001 password age
根據(jù)key獲取field的數(shù)量
                    hlen key 
                    >hmset user:001 name zhangsan password 123 age 18
                    hlen user:001
判斷指定field是否存在
                    hexists key field
                    >hexists user:001 name      (1)
                    >hexists user:001 name111   (0)
根據(jù)key獲取單個(gè)/所有的字段名field
                    hkey key
                    >hkey user:001
                    hvals key 
                    hvals user:001
設(shè)置指定字段的數(shù)值增加指定范圍
                    hincrby key field increment
                    hincrbyfloat key field increment
                    hget user:001 age           (18)
                    hincrby user:001 age 1      (19)
                    hincrby user:001 age -2     (17)

list基礎(chǔ)操作

添加數(shù)據(jù)—從左側(cè)添加
                    lpush key value1 [value2 value3 …]
                    >lpush list1 a b c      (3--cba)
從右側(cè)添加           rpush key value1 [value2 value3 …]
                    >rpush list1 d e f      (6--def) 
當(dāng)前數(shù)據(jù)為:cbadef
范圍獲取            lrang key start stop
                    lrang list1 0 -1        (cbadef)
                    lrang list1 0  2        (cba)
                    lrang list1 -3 -1       (def)
獲取規(guī)則            1.從左到右索引cbadef---(0,1,2,3,4,5,6) …
                    2.從右到左索引cbadef---(-6,-5,-4,-3,-2,-1…)
                    Index key index
                    index list1 0
                    index list1 1
                    index list1 -1
移除并返回最左側(cè)和最右側(cè)的元素
                    lpop key 
                    rpop key
                    >lpop list1         (c)
                    >lpop list1     (f)
根據(jù)key獲取value的個(gè)數(shù)
                    llen key 
                    llen list1      (4)

key的基礎(chǔ)操作

刪除操作:del key    >set aa bb 
                    >del aa
                    >get aa         (nil)
                    >hash hash1 k1 v1
                    >hgetall hash1  (k1, v1)
                    >del hash1
                    >hgetall hash1  (empty)
判斷key是否存在
                    >set aaa bbb
                    >exists aaa     (1)
                    >exists bbb     (0)
獲取key的類型
                    >set mystring hellostring
                    >hset myhash k1 v1
                    >type mystring
                    >type myhash
對(duì)list,set中的數(shù)據(jù)進(jìn)行排序
                    >sort key
                    >sort key desc
                    >lpush list1 11 2 33 7 5 18
                    >sort list1         (2,5,7,11,18,33)
                    >sort list1 desc    (33,18,11,7,5,2)
對(duì)list中的字符串進(jìn)行排序
                    >sort key alpha
                    >sort key desc alpha
                    >lpush list2 a b c d
                    >sort list2 alpha   (a,b,c,d)
重命名key
                    >set username zhangsan 
                    >set username2 lisi
                    >rename username username2
                    >get username       (nil)
                    >get username2      (zhangsan)
獲取key的有效時(shí)間
                    >del username zhangsan
                    >ttl username       (-1)
                    >ttl username2      (-2)
                    >setex username3 30 wangwu 
                    >ttl usernmae3      (21)
                    >pttl usernmae2     (15840)
為指定key設(shè)置有效時(shí)間
                    >hset hash1 k1 v1
                    >ttl hash1
                    >expire hash1 30        (1)
                    >ttl hash1          (20)
                    >hset hash2 k2 v2
                    >ttl hash2
                    >expire hash2 3000
                    >ttl hash2          (26)
                    >pttl hash2             (21380)
切換key從時(shí)效性轉(zhuǎn)換為永久性
                    setex username 60 zhangsan
                    ttl username            (55)
                    persist username        (1)
                    ttl username            (-1)
                    
                    
存:zadd key score value
确朴铩:方式一:僅獲取value 不帶分?jǐn)?shù)score 
    zrange key start end 
    方式二:獲取value和score
    zrange key start end withscores
刪:zrem key value

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末玩徊,一起剝皮案震驚了整個(gè)濱河市,隨后出現(xiàn)的幾起案子谨究,更是在濱河造成了極大的恐慌恩袱,老刑警劉巖,帶你破解...
    沈念sama閱讀 218,284評(píng)論 6 506
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件胶哲,死亡現(xiàn)場(chǎng)離奇詭異畔塔,居然都是意外死亡,警方通過查閱死者的電腦和手機(jī)鸯屿,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 93,115評(píng)論 3 395
  • 文/潘曉璐 我一進(jìn)店門澈吨,熙熙樓的掌柜王于貴愁眉苦臉地迎上來,“玉大人寄摆,你說我怎么就攤上這事谅辣。” “怎么了婶恼?”我有些...
    開封第一講書人閱讀 164,614評(píng)論 0 354
  • 文/不壞的土叔 我叫張陵桑阶,是天一觀的道長(zhǎng)。 經(jīng)常有香客問我勾邦,道長(zhǎng)蚣录,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 58,671評(píng)論 1 293
  • 正文 為了忘掉前任眷篇,我火速辦了婚禮萎河,結(jié)果婚禮上,老公的妹妹穿的比我還像新娘。我一直安慰自己虐杯,他們只是感情好玛歌,可當(dāng)我...
    茶點(diǎn)故事閱讀 67,699評(píng)論 6 392
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著擎椰,像睡著了一般沾鳄。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上确憨,一...
    開封第一講書人閱讀 51,562評(píng)論 1 305
  • 那天译荞,我揣著相機(jī)與錄音,去河邊找鬼休弃。 笑死吞歼,一個(gè)胖子當(dāng)著我的面吹牛,可吹牛的內(nèi)容都是我干的塔猾。 我是一名探鬼主播篙骡,決...
    沈念sama閱讀 40,309評(píng)論 3 418
  • 文/蒼蘭香墨 我猛地睜開眼,長(zhǎng)吁一口氣:“原來是場(chǎng)噩夢(mèng)啊……” “哼丈甸!你這毒婦竟也來了糯俗?” 一聲冷哼從身側(cè)響起,我...
    開封第一講書人閱讀 39,223評(píng)論 0 276
  • 序言:老撾萬榮一對(duì)情侶失蹤睦擂,失蹤者是張志新(化名)和其女友劉穎得湘,沒想到半個(gè)月后,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體顿仇,經(jīng)...
    沈念sama閱讀 45,668評(píng)論 1 314
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡淘正,尸身上長(zhǎng)有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 37,859評(píng)論 3 336
  • 正文 我和宋清朗相戀三年,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了臼闻。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片鸿吆。...
    茶點(diǎn)故事閱讀 39,981評(píng)論 1 348
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡,死狀恐怖述呐,靈堂內(nèi)的尸體忽然破棺而出惩淳,到底是詐尸還是另有隱情,我是刑警寧澤乓搬,帶...
    沈念sama閱讀 35,705評(píng)論 5 347
  • 正文 年R本政府宣布思犁,位于F島的核電站,受9級(jí)特大地震影響缤谎,放射性物質(zhì)發(fā)生泄漏抒倚。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 41,310評(píng)論 3 330
  • 文/蒙蒙 一坷澡、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧,春花似錦频敛、人聲如沸项郊。這莊子的主人今日做“春日...
    開封第一講書人閱讀 31,904評(píng)論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽着降。三九已至,卻和暖如春拗军,著一層夾襖步出監(jiān)牢的瞬間任洞,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 33,023評(píng)論 1 270
  • 我被黑心中介騙來泰國(guó)打工发侵, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留交掏,地道東北人。 一個(gè)月前我還...
    沈念sama閱讀 48,146評(píng)論 3 370
  • 正文 我出身青樓,卻偏偏與公主長(zhǎng)得像,于是被迫代替她去往敵國(guó)和親懂衩。 傳聞我的和親對(duì)象是個(gè)殘疾皇子廊驼,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 44,933評(píng)論 2 355

推薦閱讀更多精彩內(nèi)容