【redis專題(2)】命令語法介紹之string

REDIS有6大數據結構:string,link,sortedset,sets,hash,Geo。 這6個結構我將用6篇文章來記錄各自是怎麼用的,而後再用一篇文章來講一下各自的應用場景;redis

string

set key value [ex 秒數] / [px 毫秒數]  [nx] /[xx]  
set a 1 ex 10 , 10秒有效
Set a 1 px 9000  , 9秒有效

將key和value對應。若是key已經存在了,它會被覆蓋,而無論它是什麼類型。數據庫

注: 若是ex,px同時寫,之後面的有效期爲準
set a 1 ex 100 px 9000, 實際有效期是9000毫秒(9秒)數據結構

nx: 表示key不存在時,執行操做
xx: 表示key存在時,執行操做app

mset multi set
mset key1 v1 key2 v2 ....

一次性設置多個鍵值dom

刪除一個key並返回key的數量大數據

del key
# Example
redis> SET key2 "World"
OK
redis> DEL key1 key2 key3
(integer) 2
redis>

rename oldkey newskey

將key重命名爲newkey,若是key與newkey相同,將返回一個錯誤。若是newkey已經存在,則值將被覆蓋。code

renamenx oldkey newskey

nx -> not exits 當且僅當 newkey 不存在時,將 key 更名爲 newkey 。當 key 不存在時,返回一個錯誤。ci

setrange key offset value
redis 127.0.0.1:6379> set greet hello
OK
redis 127.0.0.1:6379> setrange greet 2 x
(integer) 5
redis 127.0.0.1:6379> get greet
"hexlo"

# 若是偏移量>字符長度, 該字符自動補0\x00
redis 127.0.0.1:6379> setrange greet 6 !
(integer) 7
redis 127.0.0.1:6379> get greet
"heyyo\x00!"

做用: 把字符串的offset偏移字節,改爲value字符串

append key value

做用: 把value追加到key的原值上get

getset key newvalue
redis 127.0.0.1:6379> set cnt 0
OK
redis 127.0.0.1:6379> getset cnt 1
"0"
redis 127.0.0.1:6379> getset cnt 2
"1"

做用:設置新值並返回舊值

incr key

做用: 指定的key的值加1,並返回加1後的值

  1. 不存在的key當成0,再incr操做
  2. 範圍爲64有符號

incrby key number
redis 127.0.0.1:6379> incrby age 90
(integer) 92

做用: key每次遞增number,但僅限於整數

incrbyfloat key floatnumber
redis 127.0.0.1:6379> incrbyfloat age 3.5
"95.5"

做用: key每次遞增floatnumber,但僅限於整數

decr key
redis 127.0.0.1:6379> set age 20
OK
redis 127.0.0.1:6379> decr age
(integer) 19
decrby key number
redis 127.0.0.1:6379> decrby age 3
(integer) 16
setbit key offset value
redis 127.0.0.1:6379> set char A
OK

redis 127.0.0.1:6379> setbit char 2 1 

#大寫字母轉換成小寫字母;
#大寫字母和小寫字母在ascii表中的區別:                

A:0100 0001 a:0110 0001

B:0100 0010 b:0110 0010

差別:在第二位0和1的差異;

做用: 設置offset對應二進制位上的值
返回: 該位上的舊值

注意:
1:若是offset過大,則會在中間填充0,
2:offset最大大到多少
3:offset最大2^32-1,可推出最大的的字符串爲512M

bitop operation destkey key1 [key2 ...]

對key1,key2..keyN進行operation位元操做,並將結果保存到 destkey 上。

operation 能夠是 AND 、 OR 、 NOT 、 XOR的任意一種:

  1. BITOP AND destkey key [key ...] ,對一個或多個 key 求邏輯並,並將結果保存到 destkey 。
  2. BITOP OR destkey key [key ...] ,對一個或多個 key 求邏輯或,並將結果保存到 destkey 。
  3. BITOP XOR destkey key [key ...] ,對一個或多個 key 求邏輯異或,並將結果保存到 destkey 。
  4. BITOP NOT destkey key ,對給定 key 求邏輯非,並將結果保存到 destkey 。
redis 127.0.0.1:6379> setbit lower 7 0 # 00000000 空字符
(integer) 0
redis 127.0.0.1:6379> setbit lower 2 1 #00100000 空格
(integer) 0
redis 127.0.0.1:6379> get lower
" "
redis 127.0.0.1:6379> set char Q
OK
redis 127.0.0.1:6379> get char  #01010001 
"Q"
redis 127.0.0.1:6379> bitop or char char lower #求邏輯或 #01010001 #00100000 #01110001
(integer) 1
redis 127.0.0.1:6379> get char  #01110001 
"q"

# 注意: 對於NOT操做, key不能多個

GET key

返回key的value。若是key不存在,返回特殊值nil。若是key的value不是string,就返回錯誤,由於GET只處理string類型的values。

KEYS pattern

查找全部符合給定模式 pattern 的 key 。

  • KEYS * 匹配數據庫中全部 key 。
  • KEYS h?llo 通配單個字符 如 hello , hallo 和 hxllo 等。
  • KEYS h*llo 通配任意多個字符(包括沒有) 如hllo 和 heeeeello 等。
  • KEYS h[ae]llo 通配括號內的某1個字符 如hello 和 hallo ,但不匹配 hillo 。

特殊符號用 隔開。

randomkey

從當前數據庫返回一個隨機的key。

type key

返回 key 所儲存的值的類型。

exists key

返回key是否存在。若是存在返回1,不存在就返回0

mget key1 key2 ..keyn

一次性獲取多個建

getrange key start stop
redis 127.0.0.1:6379> set title 'chinese'
OK
redis 127.0.0.1:6379> getrange title 0 3
"chin"
redis 127.0.0.1:6379> getrange title 1 -2
"hines"

做用: 是獲取字符串中 [start, stop]範圍的值
注意: 對於字符串的下標,左數從0開始,右數從-1開始

  1. start>=length, 則返回空字符串
  2. stop>=length,則截取至字符結尾
  3. 若是start 所處位置在stop右邊, 返回空字符串

getbit key offset
redis 127.0.0.1:6379> set char A
OK
redis 127.0.0.1:6379> getbit char 1
(integer) 1
redis 127.0.0.1:6379> getbit char 2
(integer) 0
redis 127.0.0.1:6379> getbit char 7
(integer) 1

做用: 獲取值的二進制表示,對應位上的值(從左開始,從0編號)

關於二進制運算:

AND: 與運算,邏輯乘  0x0=0    0x1=1x0=0  1x1=1

OR:     或運算,邏輯加 0+0=0   0+1=1+0=1   1+1=1

NOT: 邏輯非        非1=0  非0=1

XOR: 0異或0=0 0異或1=1 1異或0=1 1異或1=0
相關文章
相關標籤/搜索