日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 运维知识 > 数据库 >内容正文

数据库

Redis学习笔记【04】 - 字符串

發布時間:2024/1/18 数据库 40 豆豆
生活随笔 收集整理的這篇文章主要介紹了 Redis学习笔记【04】 - 字符串 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

一、簡介

字符串類型是redis最基礎的數據結構。首先鍵都是字符串類型,而其它幾種數據結構類型都是在字符串類型基礎上構建的,所以字符串類型能為其他四種數據結構的學習奠定基礎。

字符串類型的值實際可以是字符串(簡單的字符串、復雜的字符串(例如:JSON、XML))、數字(整數、浮點數)、甚至是二進制(圖片、音頻、視頻),但值最大不能超過512MB。

二、命令

1、常用命令

1)設置值

set key value [ex seconds] [px milliseconds] [nx|xx]

下面操作設置鍵hello,返回結果為OK則代表設置成功:

127.0.0.1:6379> set hello npsee OK

set命令有幾個選項:

  • ex seconds:為鍵設置秒級過期時間。
  • px milliseconds:為鍵設置毫秒級過期時間。
  • nx:鍵必須不存在,才可以設置成功,用于更新。
  • xx:與nx相反,鍵必須存在,才可以設置成功,用于更新。

除了set選項,redis還提供了setex和setnx兩個命令,其作用和ex和nx選項是一樣的:

setex key seconds value setnx key value

例:

2)獲取值

get key

如果要獲取的鍵不存在,則返回nil(空)。

3)批量設置值

mset key value [key value ...]

如:

127.0.0.1:6379> mset a 1 b 2 c 3 d 4 OK

4)批量獲取值

mget key [key ...]

如:

127.0.0.1:6379> mget a b c d e 1) "1" 2) "2" 3) "3" 4) "4" 5) (nil)

如果有些鍵不存在,那么它的值為nil,結果是按照傳入鍵的順序返回

5)計數

incr key

incr命令用于對值做自增操作,返回的結果分為有一種情況:

  • 值不是整數,返回錯誤。
  • 值是整數,返回自增后的結果。
  • 鍵不存在,按照值為0自增,返回結果為1。

如:

127.0.0.1:6379> exists key (integer) 0 127.0.0.1:6379> incr key (integer) 1 127.0.0.1:6379> incr key (integer) 2 127.0.0.1:6379> set hello nosee OK 127.0.0.1:6379> incr hello (error) ERR value is not an integer or out of range

除了incr命令,redis提供了decr(自減)、incrby(自增指定數字)、decrby(自減指定數字)、incrbyfloat(自增浮點數)。

2、不常用命令

1)追加值

append key value

append可以向字符串尾部追加值,如:

127.0.0.1:6379> get hello "nosee" 127.0.0.1:6379> append hello 123 (integer) 8 127.0.0.1:6379> get hello "nosee123"

2)字符串長度

strlen key

如:

127.0.0.1:6379> get hello "nosee123" 127.0.0.1:6379> strlen hello (integer) 8

下面操作返回結果6,因為每個中文占用3個字節:

127.0.0.1:6379> set hello '不見' OK 127.0.0.1:6379> strlen hello (integer) 6

3)設置并返回原值

getset key value

getset和set一樣會設置值,但不同的是,它同時會返回鍵原來的值,如:

127.0.0.1:6379> getset test no (nil) 127.0.0.1:6379> getset test see "no"

4)設置指定位置的字符

setrange key offeset value

下面操作將值由pest變成best:

127.0.0.1:6379> set hello pest OK 127.0.0.1:6379> setrange hello 0 b (integer) 4 127.0.0.1:6379> get hello "best"

5)獲取部份字符串

getrange key start end

偏移量從0開始計算,如:

127.0.0.1:6379> get hello "best" 127.0.0.1:6379> getrange hello 1 2 "es"

3、字符串類型命令時間復雜度

命令時間復雜度
set key valueO(1)
get keyO(1)
del key [key …]O(k),k是鍵的個數
mset key value [key value …]O(k),k是鍵的個數
mget key [key …]O(k),k是鍵的個數
incr keyO(1)
decr keyO(1)
incrby key incrementO(1)
decrby key decrementO(1)
incrbyfloat key incrementO(1)
append key valueO(1)
strlen keyO(1)
setrange key offset valueO(1)
getrange key start endO(n),n是字符串長度,由于獲取字符串非常快,所以如果字符串不是很長,可以視同為O(1)

三、內部編碼

字符串類型的內部編碼有三種類型:

  • int:8個字節的長整形。
  • embstr:小于等于39個字節的字符串。
  • raw:大于39個字節的字符串。

redis會根據當前值的類型和決定使用哪種內部編碼實現。

127.0.0.1:6379> set hello 4562 OK 127.0.0.1:6379> object encoding hello "int" 127.0.0.1:6379> set hello 'hi, noseee!' OK 127.0.0.1:6379> object encoding hello "embstr" 127.0.0.1:6379> set hello 'hi, noseee! my name is calvin chan. what is you name?' OK 127.0.0.1:6379> object encoding hello "raw" 127.0.0.1:6379> strlen hello (integer) 53

參考:

《Redis開發與運維》 付磊 & 張益軍

總結

以上是生活随笔為你收集整理的Redis学习笔记【04】 - 字符串的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。