redis字串系列之四

2021-09-24 02:17:45 字數 2893 閱讀 5329

目錄

incr

incrby

incrbyfloat

decr

decrby

1.語法

incr key

2.解析

為鍵key儲存的數字值上加一。

如果鍵不存在,那麼它的值會被初始化為0,然後執行incr命令

如果鍵值不能解釋為數字 那麼incr會返回乙個錯誤

本操作的值限制在64位有符號數字之內

3.備註:

incr命令是乙個針對字串的操作,因為redis沒有專用的整數型別,所以鍵key儲存的值

在執行incr命令時會被解釋為十進位制的64位有符號整數

4.返回值:

incr命令會返回鍵key在執行加一操作之後的值

5.例子:

set m 19

incr m

get m

1.語法

incrby key increment

2.解析

為鍵key儲存的數字值上增量increment

如果鍵key不存在,鍵key的值被初始化為0,然後執行incrby命令

如果鍵key儲存的值不能解釋為數字,會返回乙個錯誤

3.返回值

在加上增量increment之後,鍵key當前的值

4.例子

鍵存在並且值為數字:

set m 29

incrby m 21

get m

鍵不存在:

exists a 

incrby a 20

get a

鍵存在,但是無法解釋為數字

set book "php"

incrby book

1.語法

incrbyfloat key increment

2.解析

為鍵key儲存的值加上浮點數增量increment

如果鍵不存在,那麼incrbyfloat會將鍵key的值設定為0,然後再執行加法操作。

如果命令執行成功,那麼鍵key的值會被更新為執行加法計算之後的新值,新值會以字串的形勢返回

無論是鍵key的值還是增量increment,都可以使用像2.0e7,3e5,90e-2這樣的指數符號來表示

但是,執行incrbyfloat命令之後的值總是以同樣的形式儲存。

就是說,他們總是由乙個數字,乙個小數點(可選的)和乙個任意長度的小數部分組成(比如3.14/65.32)

小數部分尾隨的0會被移除,如果可能的話,命令還會將浮點數轉換為整數(比如3.0會被儲存成3)

此外,無論加法計算所得的浮點數的實際精度有多長,incrbyfloat命令的計算結果最多隻保留小數點後的17位

當以下任意條件發生時,命令返回乙個錯誤

鍵key的值不是字串型別(因為redis中的數字和浮點數都以字串的形式儲存的)

鍵key當前的值或者給定的增量increment不能被解釋為雙精度浮點型

3.返回值:

在加上增量increment之後 鍵key的值

4.例子:

set decimal 3.0

get decimal

incrbyfloat decimal 2.56

get decimal

1.語法

decr key

2.解析

鍵key儲存的數字值減去一

如果鍵key不存在,那麼鍵key的值被初始化為0 然後再執行decr操作

如果鍵key儲存的值不能解釋為數字 那麼decr命令將會返回乙個錯誤

本操作限制在64位有符號數字的表示範圍內

3.返回值:

decr命令會返回鍵key在執行減一操作時候的值

4.例子:

對儲存數字值的鍵key執行decr:

set m 10

decr m

對不存在的鍵執行decr:

exists m

decr m

1.語法

decrby key decrement

2.解析

將鍵key儲存的整數值減去decrement

如果鍵key不存在,那麼鍵key的值被初始化為0,然後執行decrby操作

如果鍵key儲存的值不能被解釋為數字 那麼decrby命令將返回乙個錯誤

64位有符號數字的範圍內

3.返回值:

decrby 命令會返回鍵在執行減法操作之後的值

例子:對已經存在的鍵執行decrby:

set m 100

decrby m 20

對不存在的鍵執行decr:

exists m

decrby m 20

很多儲存系統和程式語言內部使用cas機制實現計數功能,會有一定的cpu開銷,但在redis中完全不存在這個問題,因為redis是單執行緒架構,任何命令到了redis服務端都要順序執行。

Redis系列 字串 String (六)

redis 字串資料型別的相關命令用於管理 redis 字串值,基本語法如下 redis 127.0 0.1 6379 command key nameredis 127.0 0.1 6379 set runoobkey redis okredis 127.0 0.1 6379 get runoob...

redis字串系列之二

目錄 getgetset strlen 1.語法 get key 返回與鍵key相關聯的字串值 2.返回值 如果鍵不存在,返回nil,否則返回鍵的值 如果鍵的值並非字串型別,那麼返回乙個錯誤,因為get命令只能用於字串。3.示例 對不存在的鍵或者字串型別的鍵執行get get m set m hel...

Redis之字串實戰

字串是redis中最簡單的資料結構,可以儲存文字,也可以儲存數字,還可以儲存二進位制資料。針對型別不同,我們可以把它劃分為3大類,基於普通字串的操作 數字以及二進位制的操作。如下表常見命令 基本操作 數字操作 二進位制操作 set和get incrby 增加 和decrby 減少 setbit 設定...