1. 程式人生 > >redis字串基本操作

redis字串基本操作

redis之字串型別:
字串型別是redis中最基本的資料型別,同時它也是memcached中僅有的資料型別。redis字串型別的鍵能儲存任何形式的字串,包括二進位制資料,例如,儲存json化的物件甚至是一張圖片(可以將圖片編碼成二進位制的格式儲存)。另外、一個字串型別的值最多能儲存512兆的資料。字串型別是其他四種資料型別的基礎,其它資料型別和字串型別的差別從某種角度來說只是組織字串的形式不同,例如,列表型別是以列表的形式組織字串,集合型別是以集合的形式組織字串。

redis字串型別應用場景:
1、快取記憶體HTML片段或者頁面
2、快取記憶體關係型資料庫查詢的結果
3、快取使用者的會話session資訊(可以實現分散式的session共享)


4、統計網站的訪問者的總數量,每天使用者的註冊數,使用者活躍度/使用者簽到
5、限制api的訪問頻率
6、分散式鎖,防止多個請求同時到達,並且快取中無請求需要響應的資料,多個請求同時訪問db
7、防止重複提交,由於前端的請求可能響應會慢,使用者可能會多次點選請求,其實是沒有必要的

redis字串型別的基本命令
1、set key value [EX seconds] [PX milliseconds] [NX|XX]
功能:給key設定一個字串型別的值。預設情況下,如果該key已經存在與redis中,無論之前它是什麼資料型別,原來的key的值會被覆蓋,並且之前的生存時間會被遺棄;如果key不存在,則給key設value值。


引數介紹:
EX/PX:過期時間,EX代表以秒為單位,PX代表以毫秒為單位,EX和PX不能同時設定
NX:只有當key不存在時才允許設定,也就是使用改引數時只允許新建key
XX:只有當key存在時才允許設定,也就是使用改引數時只允許更新key
返回值:設定成功返回OK,設定失敗返回nil

2、mset key value [key value...]
功能:同時為多個key分別設定字串型別的值,如果其中有的key已經存在於redis之中,則這些key的值將會被新設定的值覆蓋。mset是原子的,要麼全都設定成功,要麼全都設定失敗。
返回值:成功返回OK,失敗返回nil

3、setex key seconds value


功能:給一個key設定字串型別的值並指定生存時間,當key已經存在於redis中的時候,原來的key的值無論是什麼型別都會被新的值覆蓋,並且其生存資訊也會被遺棄,因此可見,此命令就完全等同於set key value EX second。另外該命令是原子性的,設定失敗或者指定生存時間失敗都會恢復到初始狀態
返回值:如果成功,返回OK,失敗則返回錯誤資訊

4、psetex key milliseconds value
功能與setex一致,只不過指定的生存時間是以毫秒為單位的

5、setnx key value
功能:如果key不存在於redis中,為其設定字串型別的value;如果key存在,則設定失敗,相當於set key value nx
返回值:成功返回1,失敗返回0

6、msetnx key value [key value...]
功能:同時為多個不存在於redis中的key設定字串型別的值,如果其中某一個key存在於redis之中,則會設定失敗
返回值:設定成功返回1,失敗則返回0

7、setrange key offset value

8、append key value
功能:給字串型別的值後面追加新的value
返回值:
1、如果key不是字串型別的,則報錯
2、如果key不存在則先給key賦值"",然後追加新的字串

9、get key
功能:查詢字串型別的key的值
返回值:1、如果key不存在,返回nil
2、如果key不是字串型別,返回相應的錯誤資訊
3、key存在且是字串型別,返回key的值

10、mget key [key...]
功能:查詢所有key的字串型別的值,如果其中存在key不是字串型別或者不存在,返回nil,此命令執行不會失敗
返回值:如果key是字串型別,則返回key的值,如果key不存在或者key不是字串型別的值,則返回nil

11、getrange key start end
功能:擷取字串型別的key值的從offset的start到end的部分(前後都包含)
返回值:
1、如果key是字串型別的值,則返回擷取後的結果
2、如果key不是字串型別的值,保錯

12、strlen key
功能:獲取字串型別的鍵key對應的值的位元組長度(英文字母1位元組,中文在Windows中佔2個位元組,中文在Linux中佔3個位元組)
返回值:
1、如果key鍵不存在,返回0
2、如果key為非字串型別的鍵,報錯WRONGTYPE
3、如果key存在且為字串型別,得到key的字元長度

13、getset key value
功能:原子性的給一個key設定value並將舊值返回
返回值:
1、如果key存在且為字串型別,則返回key的舊值併為key設定新值為value
2、如果key不存在,返回nil
3、如果key不是字串型別,則返回相應的錯誤

14、incr key
功能:為字串型別的且能表示整數的key自增1,比返回自增後的結果。如果key不存在,則會初始化該key為0,然後自增1,並返回自增後的結果
返回值:
1、key不存在或者key是可以表示整數數字(可以為負整數或者0)的字串型別,返回自增1後的結果
2、如果key不是字串型別的資料,報錯

15、incrby key increment
功能與返回值都類似於incr key相似,只不過,這裡自增的量為increment(這裡increment必須為整形數,不管是負數還是整數亦或是0)

16、incrbyfloat key increment
功能:為值為數值的(不管是整數還是浮點數)自動增長increment(這裡increment只需要是數值型別即可,也可以用科學計數法表示)
返回值:
1、如果key可以表示為浮點數型別的值,則返回增加浮點型別的increment的結果
2、如果key不是數字型別,或者不是字串型別,報錯

17、decr key
功能:為整數型別的字串自減一,如果key不存在,則先設定key為0,然後再自減一
返回值:
1、如果key為整數型別的字串,則自減一
2、如果key不是整數型別的字串或者是其他型別的資料,報錯

18、decrby key decrment
功能:與incrby一樣,這裡只不過是減

19、setbit key offset value

20、getbit key offset
功能:對key所儲存的字串值,獲取指定偏移量上的位(bit)。當offset比字串值的長度大,或者key不存在時,返回0 。
返回值:字串值指定偏移量上的位


21、bitcount key [start end]
功能:計算位為1的個數

22、bitop operation destkey key [key ...]
operation:
1、and
2、or
3、not
4、xor

23、bitpos key bit [start] [end]