REmote DIctionary Server(redis)常用指令

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

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

Redis 是完全開(kāi)源的,遵守 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ù)保存在磁盤(pán)中,重啟的時(shí)候可以再次加載進(jìn)行使用。
Redis不僅僅支持簡(jiǎn)單的key-value類(lèi)型的數(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,寫(xiě)的速度是81000次/s 。
豐富的數(shù)據(jù)類(lèi)型 – Redis支持二進(jìn)制案例的 Strings, Lists, Hashes, Sets 及 Ordered Sets 數(shù)據(jù)類(lèi)型操作。
原子 – Redis的所有操作都是原子性的,意思就是要么成功執(zhí)行要么失敗完全不執(zhí)行。單個(gè)操作是原子性的。多個(gè)操作也支持事務(wù),即原子性,通過(guò)MULTI和EXEC指令包起來(lái)。
豐富的特性 – Redis還支持 publish/subscribe, 通知, key 過(guò)期等等特性。

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

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

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

操作指令

string類(lèi)型指令

添加修改數(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)
追加信息到原始信息后面,若沒(méi)有就創(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)過(guò)期)
                    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的類(lèi)型
                    >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)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請(qǐng)結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡(jiǎn)書(shū)系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容