亚洲激情专区-91九色丨porny丨老师-久久久久久久女国产乱让韩-国产精品午夜小视频观看

溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

Redis String怎么使用

發布時間:2022-02-07 09:36:58 來源:億速云 閱讀:179 作者:iii 欄目:關系型數據庫

這篇“Redis String怎么使用”文章的知識點大部分人都不太理解,所以小編給大家總結了以下內容,內容詳細,步驟清晰,具有一定的借鑒價值,希望大家閱讀完這篇文章能有所收獲,下面我們一起來看看這篇“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 String怎么使用Redis String怎么使用

五、String存儲原理

在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自定義了一種簡單動態字符串的數據結構來存儲字符串數。

源碼實現:多種數據結構,分別表示可以存儲不同長度的字符串。

Redis String怎么使用

Redis String怎么使用

通過源碼分析,擴容策略是字符串在長度小于 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怎么使用”這篇文章的內容,相信大家都有了一定的了解,希望小編分享的內容對大家有幫助,若想了解更多相關的知識內容,請關注億速云行業資訊頻道。

向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

AI

吉林市| 弋阳县| 曲靖市| 商丘市| 河东区| 枞阳县| 密云县| 拉萨市| 确山县| 侯马市| 龙州县| 安化县| 博客| 进贤县| 大名县| 临武县| 冀州市| 郴州市| 永寿县| 阿克| 托克托县| 河源市| 宽甸| 泰安市| 黎川县| 洞口县| 东兰县| 甘谷县| 庄浪县| 温宿县| 通江县| 西林县| 桐城市| 游戏| 凤山县| 宁阳县| 霍州市| 雷山县| 广州市| 河北省| 康定县|