Redis資料儲存型別(一)

2021-07-09 19:12:49 字數 3614 閱讀 2305

redis

支援儲存的value型別相對更多,包括string、list、set、zset和hash。這些資料型別都支援push/pop、add/remove及取交集並集和差集及更豐富的操作。

筆者總結了這五種資料儲存型別及常用命令。

string 是redis最簡單的資料儲存型別,以key-value的形式可對任何資料進行儲存,包括或序列化物件。【k-key  v-value】

常用命令 舉例

解釋setk v

set name max

設定key【name】的值為max

set name max2

name 的max值將會被max2覆蓋

get

get name

返回max2

setnx[not exist ]

setnx age 2

返回1-value設定ok,age 的值將永遠不會被覆蓋

setnx age 3

返回0 value 2 值並未被3覆蓋

get age

返回1 

setexk time v

setex hair 10 long

long 值10秒有效期

get hair 

10s之間返回龍,過了10s,返回nil空

msetk1 v1 k2 v2

批量設值(可再次為key賦值,value被覆蓋)

msetnxk1 v1 k2 v2

批量設值 ,不可為key再賦值

incrk

incr age

age 自增1

incrbyk 5

incrby age 5

以5為單位自增

decr/

decrby自減

strlenk

strlen age 

返回age的value位元組長度

redis的h

ashes型別是乙個string型別的field 和value的對映表,對比於string型別操作,使用hashes儲存會占用更少記憶體,而且更方便對整個物件進行訪問。它的操作和string 不同的是,hashes的命令引數一般第乙個都會指定table的名字,例如user

,具體使用如下

常用命令 舉例

解釋hsettable k v h

set user:001 name max

將user雜湊表中id為001的name值設定為max

hget

hget user:001 name

返回max

hsetnx

同string-setnx

hmset

hmset user:001 name1 aa name2 bb 

同string-mset

hincr/hincrby

同string

hdecr/hdecrby

同string

hexistskey

查詢key是否存在

hdelkey

hdel user:001 age

刪除key

hvals

hvals 

user:001 返回

所有value

hkeys

hkeys 

user:001   返回

所有key 值

hgetall

hgetall 

user:001   返回

所有key值  +value 值

redis中的listlist是乙個鍊錶結構,主要通過push 和pop獲值,list中的每乙個元素都是string型別的雙向鍊錶,可以通過從頭部或尾部新增刪除元素,所以對redis的list資料型別做操作,list既可以作為棧,也可以最為佇列。同樣的,對list進行資料操作,第乙個引數也大多都是list名字。

常用命令 舉例

解釋lpush

lpush mylist zz

將value zz從list 頭部加入

rpush

rpush mylist yy

將value yy從list 尾部加入

lrange

lrange mylist 0 -1 

獲取顯示list中第乙個元素到最後乙個

lpop

lpop mylist

從list頭部刪除乙個元素

rpop

rpop mylist

從list尾部刪除乙個元素

rpoplpush

rpoplpush mylist1 mylist2 從

mylist1 的尾部移出乙個元素新增到mylist2的頂部

linsert

linsert 

mylist value1

before value2

在v2之前插入v1元素

lset

lset mylist 0 value3  

將下標為0的值改為value3

lrem

lrem mylist 1 「zz」

刪除1個mylist中值為zz的元素

lindex

lindex mylist 0

定位mylist 下標為0【也就是頂部第乙個元素】的value

從上面對不同資料型別的操作總結和舉例來看,對比於關係型資料庫,redis對資料的crud操作更多的是根據資料型別分成5大塊,每一種型別對應自己的資料操作命令,string 是redis最基礎的資料型別,hashes 和list ,以及接下來會介紹的set和zset 都是在string的基礎之上,不論是操作命令,還是資料儲存的單位,都以string為最小單元。hash是基於string的類似於表的儲存結構,list也是表,不過它更特殊,具有鏈的屬性,上下、頭尾,所以在對list型別資料操作時,可當作佇列抑或棧。這些都是redis實現資料儲存的基礎,並且在對mongo有一定認識之後,對同樣是nosql資料庫的redis的使用也會一通百通,在相同中探索他們各自的應用場景和資料儲存特點。

redis 資料型別儲存

redis的字串是位元組序列。在redis中字串是二進位制安全的,這意味著他們有乙個已知的長度,是沒有任何特殊字元終止決定的,所以可以儲存任何東西,最大長度可達512兆。redis 127.0.0.1 6379 set name yiibai okredis 127.0.0.1 6379 get n...

Redis儲存資料 Hash型別

redis儲存hash型別的資料,就是map裡儲存map 儲存的map的key為欄位名,值為字段值 儲存資料 hset key 欄位名 字段值 127.0.0.1 6379 1 hset user username wlf integer 1 獲取資料hget key 欄位名 127.0.0.1 6...

redis儲存資料型別 Redis5資料型別詳解

redis5資料型別詳解 redis除了可以儲存鍵還可以儲存常見的5種資料型別,分別是 string list set hash zset。對於redis的命令有一部分是可以公用的,但是還有一些其他的命令是屬於特殊使用的。首先看看一張關於redis5種資料結構的對比 下邊就分別介紹5中國不同的資料結...