前言
Redis中有5大資料型別,分別是字串String、串列List、集合Set、哈希Hash、有序集合Zset,本篇介紹Redis的字串String
Redis字串
- String是Redis最基本的型別,你可以理解成與Memcached一模一樣的型別,一個key對應一個value
- String型別是二進制安全的,意味著Redis的string可以包含任何資料,比如jpg圖片或者序列化物件,
- Stirng型別是Redis最基本的資料型別,一個Redis中字串value最多可以是512M
常用命令
-
set <key> <value> 添加鍵值對

*EX:key的超時秒數
*PX:key的超時毫秒數,與EX互斥
*NX:當資料庫中key不存在時,可以將key-value添加資料庫
*XX:當資料庫中key存在時,可以將key-value覆寫原來的資料添加到啊資料庫,與NX引數互斥 -
get
查詢對應鍵值 -
append key value將給定的value追加到原值的末尾 -
strlen key獲得值的長度 -
setnx key value只有在key不存在時,設定key的值 -
incr key- 將key中存盤的數字值加1
- 只能對數字值操作,如果為空,現在新增值為1
-
decr key;- 將key中存盤的數字值減1
注意:incr是對存盤在指定key的數值執行
原子的加1操作所謂
原子操作是指不會被執行緒調度機制打斷的操作這種執行緒一旦開始,就一直運行到結束,中間不會有任何切換到另一個執行緒的操作
(1) 在單執行緒中,能夠在單挑指令中完成的操作都可以認為是"原子操作",因為中斷只能發生于指令之間,
(2) 在多執行緒中,不能被其他行程(執行緒)打斷的操作就叫原子操作Redis單命令的原子性主要得益于Redis的單執行緒
-
mset <key1><value1><key2><value2>同時設定1個或多個key-value對 -
mget <key1><key2><key3>同時獲取1個或多個value -
msetnx <key1> <value1> <key2> <value2>同時設定1個或多個key-value對,當且僅當所有給定key都不存在 -
getrange <key><起始位置><結束位置>獲得值的范圍,類似java中的substring,前包,后包 -
setrange <key> <起始位置> <value> 用<value>覆寫<key>所存盤的字串值,從<起始位置>開始(索引從0開始) -
setex <key><過期時間><value>設定鍵值的同時,設定過期時間,單位為秒 -
getset <key><value>以舊換新,設定新值同時獲得舊值
String資料結構
String 的資料結構為簡單動態字串 (Simple Dynamic String, 縮寫 SDS),是可以修改的字串,內部結構實作上類似于 Java 的 ArrayList,采用預分配冗余空間的方式來減少記憶體的頻繁分配.

如圖中所示,內部為當前字串實際分配的空間 capacity 一般要高于實際字串長度 len,當字串長度小于 1M 時,擴容都是加倍現有的空間,如果超過 1M,擴容時一次只會多擴 1M 的空間,需要注意的是字串最大長度為 512M,
轉載請註明出處,本文鏈接:https://www.uj5u.com/shujuku/545011.html
標籤:NoSQL
上一篇:reids(2)概述與安裝
