Redis系列-儲存篇string主要操作函數小結

來源:互聯網
上載者:User

通過上兩篇的介紹,我們的redis伺服器基本跑起來。db都具有最基本的CRUD功能,我們沿著這個脈絡,開始學習redis豐富的資料結構之旅,當然先從最簡單且常用的string開始。

1、新增

a)set

文法:set key value

解釋:把值value賦給key,如果key不存在,新增;否則,更新

[root@xsf001 ~]# redis-cli redis 127.0.0.1:6379> set user.1.name zhangsan #設定user.1.name 為zhangsanOKredis 127.0.0.1:6379> set user.name 45      #設定user.1.name 為45OK
               b)setnx

文法:setnx key value

解釋:只insert不update,即,僅僅key不存在時,則設定key的值為value,並返回1,否則返回0  。setnx 是set if not exists 的縮寫

redis 127.0.0.1:6379> setnx user.1.name zhangsan   #user.1.name已經存在,則返回0(integer) 0redis 127.0.0.1:6379> setnx user.2.name zhangsan  #user.2.name不存在,則設定(integer) 1
c)setex

文法: setex key seconds value

解釋:設定key的到期時間和值。到期時間seconds單位是秒。設定到期時間和值是原子操作,如果redis僅僅當做緩衝,這個很命令很有用。

redis 127.0.0.1:6379> setex user.2.age 2 14  #把user.2.age 的值設14 並且2秒後到期失效OKredis 127.0.0.1:6379> get user.2.age  #失效前"14"redis 127.0.0.1:6379> get user.2.age #失效後(nil)
d)mset

文法:mset key value [key value ...]

解釋:同時設定多個key-value

redis 127.0.0.1:6379> mset user.4.name lisi user.4.age 34  #設定user.4.name=lisi,user.4.age=34OKredis 127.0.0.1:6379> get user.4.name"lisi"redis 127.0.0.1:6379> get user.4.age"34"

             e)msetnx

文法:msetnx key value [key value ...]

解釋:所有key都不存在才執行set操作

redis 127.0.0.1:6379> msetnx user.4.name lisi user.4.age 34  #key 都設定過,無法再次set(integer) 0redis 127.0.0.1:6379> msetnx user.4.name lisi user.4.std 3   #key user.4.name 曾設定過,無法再次設定(integer) 0redis 127.0.0.1:6379> msetnx user.4.tech lisi user.4.std 3   #key都沒有設定過,可以再次設(integer) 1

2、查詢

a)get

文法:get key

解釋:擷取key所set的值

redis 127.0.0.1:6379> get user.4.name  #擷取user.4.name 的值"lisi"redis 127.0.0.1:6379> get user.4.age"34"redis 127.0.0.1:6379> get user.4.tech"lisi"redis 127.0.0.1:6379> get user.4.std"3"
b)mget

文法: get key [key]

解釋:批量擷取key的值。程式一次擷取多個值,可以減少網路連接損耗。

redis 127.0.0.1:6379> mget user.4.name user.4.age user.4.std #批量擷取存在key的值1) "lisi"   #user.4.name的值2) "34"     #user.4.age 的值3) "3"      #user.4.std 的值redis 127.0.0.1:6379> mget user.4.name user.4.age user.4.std user.4.fri  #key user.4.fri 不存在仍然可以返回1) "lisi"2) "34"3) "3"4) (nil) #user.4.fri 的值
            c)getrange

文法:getrange key star end

解釋:擷取儲存在key中value的字串。字串的截取有star和end決定,字串的第一個字元編號是0,第二個是1,一次類推;如果是負數,-1是最後一個字元,-2是倒數第二個字元,一次類推。

redis 127.0.0.1:6379> get user.4.name"lisi"redis 127.0.0.1:6379> getrange user.4.name 0 3  # 0 表示開始"lisi"redis 127.0.0.1:6379> getrange user.4.name 1 2"is"redis 127.0.0.1:6379> getrange user.4.name 1 -2 #-2 表示倒數第二"is"redis 127.0.0.1:6379> getrange user.4.name -1 -2  # end 》 start""redis 127.0.0.1:6379> getrange user.4.name 1 66  #end 》 值的長度"isi"
  3、修改

a)getset

文法:getset key value

解釋:設定key的值,並返回key的舊值。

redis 127.0.0.1:6379> get user.4.name   #存在的key"lisi"redis 127.0.0.1:6379> getset user.4.name wangwu  #把存在的user.4.name設定為wagnwu"lisi"redis 127.0.0.1:6379> get user.4.name  "wangwu"redis 127.0.0.1:6379> get user.5.name  #不存在的key(nil)redis 127.0.0.1:6379> getset user.5.name lisi(nil)redis 127.0.0.1:6379> get user.5.name"lisi"
  b) append

文法:append key value

解釋:key存在,在舊值的後面追加value;key不存在,直接set

redis 127.0.0.1:6379> get user.4.name #存在的key"wangwu"redis 127.0.0.1:6379> append user.4.name 01(integer) 8redis 127.0.0.1:6379> get user.4.name"wangwu01"
redis 127.0.0.1:6379> get user.6.name #不能存在的key(nil)redis 127.0.0.1:6379> append user.6.name jim(integer) 3redis 127.0.0.1:6379> get user.6.name"jim"
c)setrange

文法:setrange key offset value

解釋:用value重寫key值的一部分,位移量由offset指定

redis 127.0.0.1:6379> get user.4.name  #key存在"wangwu01"redis 127.0.0.1:6379> setrange user.4.name 0 lisi(integer) 8redis 127.0.0.1:6379> get user.4.name"lisiwu01"redis 127.0.0.1:6379> setrange user.4.name 9 lisi  # offset 》字串長度(integer) 13redis 127.0.0.1:6379> get user.4.name"lisiwu01\x00lisi"redis 127.0.0.1:6379> setrange user.4.name 8 lisi(integer) 13redis 127.0.0.1:6379> get user.4.name"lisiwu01lisii"redis 127.0.0.1:6379> get user.6.std #key 不存在(nil)redis 127.0.0.1:6379> setrange user.6.std 0 3(integer) 1redis 127.0.0.1:6379> get user.6.std"3"
d)incr

文法:incr key

解釋:key中如果儲存的是數字,則可以通過incr遞增key的值,返回遞增後的值。如果key不能存在,視為初始值為0

redis 127.0.0.1:6379> get user.7.age #key不存在 ,初始值視為0,(nil)redis 127.0.0.1:6379> incr user.7.age (integer) 1redis 127.0.0.1:6379> get user.7.age"1"redis 127.0.0.1:6379> incr user.7.age(integer) 2

e)incrby

文法:incrby key increment

解釋:用指定的步長增加key儲存的數字。如果步長increment是負數,則減

redis 127.0.0.1:6379> get user.7.age"3"redis 127.0.0.1:6379> incrby user.7.age 15  #增加15(integer) 18redis 127.0.0.1:6379> get user.7.age"18"redis 127.0.0.1:6379> incrby user.7.fri 18  #key不能存在,原值視為0(integer) 18redis 127.0.0.1:6379> get user.7.fri"18"redis 127.0.0.1:6379> incrby  user.7.age -1  #步長為負(integer) 17redis 127.0.0.1:6379> get user.7.age"17"

f)decr

文法:decr key

解釋:遞減key儲存的數字,如果key不存在,初始值視為0

redis 127.0.0.1:6379> get user.7.age"17"redis 127.0.0.1:6379> decr user.7.age(integer) 16redis 127.0.0.1:6379> decr user.7.num #key 不存在,初始值視為0(integer) -1redis 127.0.0.1:6379> decr user.7.num(integer) -2

g)decrby

文法:decrby key decrement

解釋:用指定的步長遞減key的值,如果步長decrment是負值,則遞增

redis 127.0.0.1:6379> decrby user.7.num 4  #遞減(integer) -6redis 127.0.0.1:6379> decrby user.7.num -9 #負值,遞增(integer) 3

注意:遞增遞減系列的函數,只能對儲存的是數位key操作,不能是字串

  4)刪除

文法:del key [key]

解釋:刪除指定的key,返回刪除key的個數

redis 127.0.0.1:6379> del user.7.num(integer) 1redis 127.0.0.1:6379> get user.7.num(nil)redis 127.0.0.1:6379> del user.7.age user.7.fri #刪除多個key(integer) 2redis 127.0.0.1:6379> mget user.7.age user.7.fri1) (nil)2) (nil)

  5)其他

文法:strlen key

解釋:擷取key中所儲存值的長度

redis 127.0.0.1:6379> get user.1.name"45"redis 127.0.0.1:6379> strlen user.1.name  #user.1.name 長度(integer) 2redis 127.0.0.1:6379> strlen user.8.name #key不存在(integer) 0

通過上面的大量demo,對string的操作基本總結完畢。今天就到這裡吧。

更多資訊,請參考:http://redis.io/commands#string

如果感覺對您有所協助,請粉新浪微博:http://weibo.com/lovecoder   


相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.