redis 字符串操作


redis 字符串創建SET操作

127.0.0.1:6379> set number "10086"
OK
127.0.0.1:6379> set book "the design and lmplementation edis"
OK

 redis 字符串值改變覆蓋操作;對一個已經設置了值得字符串再執行SET命令時將導致鍵的舊值會被新值覆蓋

127.0.0.1:6379> set cx rd
OK
127.0.0.1:6379> set cx fd
OK

  在執行第二遍的時鍵的值將從rd變成fd;redis 2.6.12版本開始。用戶可以通過SET 命令提供可選參數NX (不覆蓋已存在的,不存在自動創建)選項或者XX(覆蓋已存在的,但鍵不存在時不會自動創建)選擇來指示SET命令是否覆蓋已存在的值

127.0.0.1:6379> set key value [NX|XX]

  示例存在不覆蓋

127.0.0.1:6379> set cx hh NX   
(nil)

  存在覆蓋操作

127.0.0.1:6379> set cx hh XX
OK

  不存在提示nil

127.0.0.1:6379> set st hg XX
(nil)

  不存在創建

127.0.0.1:6379> set st hg NX
OK

  redis 獲取字符串GET操作

127.0.0.1:6379> GET key

   get 命令接受一個字符串鍵作為參數,然后返回該鍵相關的值

127.0.0.1:6379> get cx
"hh"
127.0.0.1:6379> get book
"the design and lmplementation edis"

  如果用戶給定的字符串鍵在數據庫中並沒有相關的值。那么Get命令將返回一個空值

127.0.0.1:6379> get data
(nil)

  獲取舊值並更新新值GETSET

      getset命令就像get與set的組合版本,getset命令首先獲取字符串鍵哦已有的值,接着為鍵設置新值,最后吧之前就值返回給用戶

127.0.0.1:6379> GETSET key value 

  用GETSET獲取cx舊值並為它設置新值

127.0.0.1:6379> get st
"hg"
127.0.0.1:6379> getset cx "18501207824"
"hh"
127.0.0.1:6379> get cx
"18501207824"

  如果被設置的鍵不存在於數據庫,那么getset命令將返回空作為鍵的舊值

127.0.0.1:6379> get qwe
(nil)
127.0.0.1:6379> getset qwe "123456"
(nil)
127.0.0.1:6379> get qwe
"123456"

  mset 一次為多個字符串設置值

    除了SET和getset命令之外。redis還提供了mset命令用於對字符串進行設置。與set和getset命令只能設置單個字符串不同,mset命令可以一次為多個字符串設置值

[root@maseter ~]# redis-cli 
127.0.0.1:6379> mset key value [key valkue ...] [

  同時設置rd 、rs 、rc三個值。

127.0.0.1:6379> mset rd "52" rc "58" rs "78"
OK
127.0.0.1:6379> get rd
"52"
127.0.0.1:6379> get rc
"58"
127.0.0.1:6379> get rs
"78"

  此外如果給定字符串已經存在有相關的值,那么Mset  命令也會使用新值覆蓋已經存在的舊值,使用mset覆蓋rc的舊值

127.0.0.1:6379> mset rd "52" rc "18501207824" rs "78"
OK
127.0.0.1:6379> get rc
"18501207824"

  mget 一次獲取多個字符串鍵的值

       mget 命令就是一個多鍵版本的get命令,mget接受一個或多個字符串鍵作為參數,並返回這些的值

127.0.0.1:6379> mget key [key ...] 

  獲取多個值

127.0.0.1:6379> mget rd rc rs qwe
1) "52"
2) "18501207824"
3) "78"
4) "123456"
127.0.0.1:6379> mget kl   不存在報空
1) (nil)

  msetnx只在鍵不存在時,一次為多個字符串賦值

       msetnx與mset命令一樣都可以對多個字符串進行設置

127.0.0.1:6379> msetnx key value [key value ...] [key

  msetnx 給多個字符串設置值

127.0.0.1:6379> msetnx as "1658" df "854" cv "8582"
(integer) 1

  msetnx 給多個字符串設置值,有一個值存在,整體不執行

127.0.0.1:6379> set p1 "4"
OK
127.0.0.1:6379> mget p1 p2 p3 p4 p5 p6
1) "4"
2) (nil)
3) (nil)
4) (nil)
5) (nil)
6) (nil)
127.0.0.1:6379> msetnx p1 "12" p2 "23" p3 "67" p4 "45" p5 "69" p6 "43"
(integer) 0
127.0.0.1:6379> mget p1 p2 p3 p4 p5 p6
1) "4"
2) (nil)
3) (nil)
4) (nil)
5) (nil)
6) (nil)

  msetnx 給多個字符串設置值

127.0.0.1:6379> msetnx  p2 "23" p3 "67" p4 "45" p5 "69" p6 "43"
(integer) 1
127.0.0.1:6379> mget p1 p2 p3 p4 p5 p6
1) "4"
2) "23"
3) "67"
4) "45"
5) "69"
6) "43"

  sterlen:獲取字符串值得字節長度

127.0.0.1:6379> set ol "qweriptfcxc"
OK
127.0.0.1:6379> strlen ol
(integer) 11

  如果不存在將返回0

127.0.0.1:6379> strlen oi
(integer) 0

    字符串索引;獲取字符串指定索引范圍getrange

        通過使用getrange命令,用戶可以獲取字符串值從start索引開始,到end索引結束

127.0.0.1:6379> set re "hellp world"
OK
127.0.0.1:6379> get re
"hellp world"
127.0.0.1:6379> getrange re 3 7
"lp wo"
127.0.0.1:6379> getrange re 0 4
"hellp"
127.0.0.1:6379> getrange re -11 -7
"hellp"

  對字符串值的指定索引范圍進行設置setrange,一個一個字符替換

127.0.0.1:6379> get re
"hellp world"
127.0.0.1:6379> setrange re 6 Redis      6表示從哪個字符開始替換
(integer) 11
127.0.0.1:6379> get re
"hellp Redis"

  自動擴展被修改的字符串;當用戶給定的新內容比被替換的內容更長時,setrange命令就會自動擴展被修改的字符串,從而保證新內容順利寫入

127.0.0.1:6379> get re
"hellp Redis"
127.0.0.1:6379> setrange re 6 ", this is a massage send from peter."
(integer) 42
127.0.0.1:6379> get re
"hellp , this is a massage send from peter."

  在值內填充空字節;setrange除了會根據用戶給定的新內容自動擴展字符串,還會根據用戶給定的index索引擴展字符串,當用戶給定的index索引超出字符串長度時,字符串值末尾直到索引index-1之間的部位將用空白字節填充,換句話這些字節的所有二進制位會被設置0

127.0.0.1:6379> set gf "hello"
OK
127.0.0.1:6379> get gf
"hello"
127.0.0.1:6379> setrange gf 10 world
(integer) 15
127.0.0.1:6379> get gf
"hello\x00\x00\x00\x00\x00world"

  append 追加內容到值末尾

127.0.0.1:6379> append key suffix 

  append 在執行追加操作后,會返回字符串值當前的長度作為返回值

127.0.0.1:6379> get ch
"redis"
127.0.0.1:6379> append ch " is a database"
(integer) 19
127.0.0.1:6379> get ch
"redis is a database"

  處理不存在的鍵時;如果用戶給定的鍵不存在,那么append命令會將鍵的值初始為空字符串,然后再追加操作,最終結果與set命令為鍵設置值很像

127.0.0.1:6379> get tu
(nil)
127.0.0.1:6379> append tu "1854358"
(integer) 7
127.0.0.1:6379> get tu
"1854358"

  使用incrby與decrby:對整數執行加減法操作

      當字符串鍵存儲的值能被Redis解釋為整數時,用戶就可以通過incrby命令和decrby命令對存儲整數值進行加減法操作,不能多浮點型數字(小數)進行加減操作

127.0.0.1:6379> incrby key increment 

  incrby加法操作

127.0.0.1:6379> set h 90
OK
127.0.0.1:6379> get h
"90"
127.0.0.1:6379> incrby h 400
(integer) 490
127.0.0.1:6379> incrby h 700
(integer) 1190
127.0.0.1:6379> incrby h 650
(integer) 1840
127.0.0.1:6379> get h
"1840"

  decrby減法操作

127.0.0.1:6379> set y 10086
OK
127.0.0.1:6379> decrby y 500
(integer) 9586
127.0.0.1:6379> decrby y 568
(integer) 9018
127.0.0.1:6379> decrby y 18
(integer) 9000

  處理不存在的鍵,對其進行加減操作

127.0.0.1:6379> get v
(nil)
127.0.0.1:6379> incrby v 90
(integer) 90
127.0.0.1:6379> get v
"90"
127.0.0.1:6379> get e
(nil)
127.0.0.1:6379> decrby e 60
(integer) -60
127.0.0.1:6379> get e
"-60"

  incr decr對整數執行加1減1操作

127.0.0.1:6379> set q 9
OK
127.0.0.1:6379> incr q
(integer) 10
127.0.0.1:6379> incr q
(integer) 11
127.0.0.1:6379> incr q
(integer) 12
127.0.0.1:6379> incr q
(integer) 13
127.0.0.1:6379> get q
"13"
127.0.0.1:6379> get i  一個空鍵
(nil)
127.0.0.1:6379> incr i
(integer) 1
127.0.0.1:6379> incr i
(integer) 2
127.0.0.1:6379> incr i
(integer) 3
127.0.0.1:6379> get i
"3"

  decr 進行減一操作

127.0.0.1:6379> get q
"13"
127.0.0.1:6379> decr q
(integer) 12
127.0.0.1:6379> decr q
(integer) 11
127.0.0.1:6379> decr q
(integer) 10
127.0.0.1:6379> decr q
(integer) 9
127.0.0.1:6379> get j
(nil)
127.0.0.1:6379> decr j
(integer) -1
127.0.0.1:6379> decr j
(integer) -2
127.0.0.1:6379> decr j
(integer) -3
127.0.0.1:6379> get j
"-3"

  對整數執行浮點數的加法操作incrbyfloat

127.0.0.1:6379> incrbyfloat key increnent 

  incrbyfloat命令可以把一個浮點數增量到字符串鍵存儲的數值上

127.0.0.1:6379> set j 4.5
OK
127.0.0.1:6379> incrbyfloat j 2.55
"7.05"
127.0.0.1:6379> get j
"7.05"

  incrbyfloat命令遇到不存在的鍵時,會先將鍵的值初始為0,然后在執行行營的操作 

127.0.0.1:6379> get f
(nil)
127.0.0.1:6379> incrbyfloat f 2.55
"2.55"
127.0.0.1:6379> get f
"2.55"

  使用incrbyfloat命令執行浮點數減操作

127.0.0.1:6379> set o 8.15
OK
127.0.0.1:6379> incrbyfloat 0 -2.7
"-2.7"
127.0.0.1:6379> incrbyfloat o -2.7
"5.45"
127.0.0.1:6379> get 0
"-2.7"
127.0.0.1:6379> get o
"5.45"

  使用incrbyfloat命令處理浮點數加整數

127.0.0.1:6379> set j 99
OK
127.0.0.1:6379> get j
"99"
127.0.0.1:6379> incrbyfloat j 5.9
"104.9"
127.0.0.1:6379> get j
"104.9"
127.0.0.1:6379> incrbyfloat j 2.1
"107"

  注意:雖然redis並不限制字符串存儲的浮點數的小數長度,但使用incrbyfloat命令處理浮點數的時候,命令最多只會保留計算結果小數點后17未數字。超出范圍將被截斷

127.0.0.1:6379> set t 0.123456789123456789123
OK
127.0.0.1:6379> incrbyfloat t 0
"0.12345678912345679"

  

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM