您好,登錄后才能下訂單哦!
這篇“Redis String怎么使用”文章的知識點大部分人都不太理解,所以小編給大家總結了以下內容,內容詳細,步驟清晰,具有一定的借鑒價值,希望大家閱讀完這篇文章能有所收獲,下面我們一起來看看這篇“Redis String怎么使用”文章吧。
set key value [EX seconds] [PX milliseconds] [NX|XX]
1、set是語法,key是指定名稱, value是需要存儲的值
2、EX 指定過期的秒時間,PX指定過期的毫秒時間
3、NX:只有key不存在的時候,才設置成功
4、XX:只有key存在的時候,才設置成功
總結:5.0支持set命令指定過期時間和不存在的時候才設置成功,也就是通過一條命令就可以實現分布式鎖加鎖的功能,以前的版本設置key和設置過期時間需要分成兩個命令,原子性保證難度更大。
1、熱點數據緩存,分布式session
2、Setnx 分布式鎖
3、incr 計數器
4、Incr 全局id
5、Incr 限流
6、bit 操作,位圖功能,在線用戶統計 0/1標記
整型,字符型,float(單浮點型)
在Redis中,數據存儲在一個RedisObject類中
typedef struct redisObject { //這個類型可以是string,也可以是hash,zset等等 unsigned type:4; unsigned encoding:4; //記錄lru,lfu淘汰算法依賴的訪問時間和訪問頻率 unsigned lru:LRU_BITS; /* LRU time (relative to global lru_clock) or * LFU data (least significant 8 bits frequency * and most significant 16 bits access time). */ //引用計數器 int refcount; //指向真實數據結構對象 void *ptr; } robj;
對于String,Redis自定義了一種簡單動態字符串的數據結構來存儲字符串數。
源碼實現:多種數據結構,分別表示可以存儲不同長度的字符串。
通過源碼分析,擴容策略是字符串在長度小于 SDS_MAX_PREALLOC 之前,擴容空間采用加倍策略,也就是保留 100% 的冗余空間。當長度超過 SDS_MAX_PREALLOC 之后,為了避免加倍后的冗余空間過大而導致浪費,每次擴容只會多分配 SDS_MAX_PREALLOC大小的冗余空間。
惰性空間釋放用于優化 SDS 的字符串縮短操作:當 SDS 的 API 需要縮短 SDS 保存的字符串時, 程序并不立即使用內存重分配來回收縮短后多出來的字節, 而是使用 free 屬性將這些字節的數量記錄起來,并等待將來使用。
//僅僅設置長度,沒有真正清除數據 void sdsclear(sds s) { //單純設置長度為0 sdssetlen(s, 0); //第一個字符設置為結束符 s[0] = '\0'; }
真正的清除空間
sds sdsRemoveFreeSpace(sds s) { struct sdshdr *sh; sh = (void*) (s-(sizeof(struct sdshdr))); // 進行內存重分配,讓 buf 的長度僅僅足夠保存字符串內容 sh = zrealloc(sh, sizeof(struct sdshdr)+sh->len+1); // 空余空間為 0 sh->free = 0; return sh->buf; }
以上就是關于“Redis String怎么使用”這篇文章的內容,相信大家都有了一定的了解,希望小編分享的內容對大家有幫助,若想了解更多相關的知識內容,請關注億速云行業資訊頻道。
免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。