走進redis的大門

2021-10-05 03:30:28 字數 4715 閱讀 7997

redis是乙個開源的、使用c語言編寫的、支援網路互動的、可基於記憶體也可持久化的key-value資料庫。屬於非關係型資料庫。與我們經常用到的mysql,oracle等關係型資料庫不一樣。nosql非關係型資料庫。是不是感覺有學到了。

2.2 我們的命令列都在src目錄下,簡單介紹一下主要的命令:

./redis-benchmark //用於進行redis效能測試的工具

./redis-check-dump //用於修復出問題的dump.rdb檔案

./redis-cli //redis的客戶端

./redis-server //redis的服務端

./redis-check-aof //用於修復出問題的aof檔案

./redis-sentinel //用於集群管理

redis是一種高階的key:value儲存系統,其中value支援五種資料型別:

1.字串(string)

2.字串列表(list)

3.字串集合(set)

4.有序字串集合(sorted sets)

5.雜湊(hash)

對於key值的設定,有幾點特別的說明:

1.key不要太長,盡量不要超過1024位元組,這不僅消耗記憶體,而且會降低查詢的效率;

2.key也不要太短,太短的話,key的可讀性會降低;

3.在乙個專案中,key最好使用統一的命名模式,一般按照專案名:模組:具體的方法

例如:apoll:person:personcode 這種格式,這樣方便我們用redis的視覺化工具去檢視,同乙個專案

中的key值都在乙個目錄下的不同層級裡面, 很清晰明了,要不然key值會特別亂。

字串(strings)是redis的基本資料結構之一,由key和value組成。我們可以這樣模擬成程式語言的變數:key代表變數名,value代表變數值。

127.0.0.1:6379[15]

>

settest

'nihao'

ok

127.0.0.1:6379[15]

> get test

"nihao"

127.0.0.1:6379[15]

> keys *

1)"test"

127.0.0.1:6379[15]

>

settest

'buhaol'

ok

如果我們不希望set命令覆蓋舊值,這時候我們可以在上面的命令後面加上 nx引數

set key value nx當key存在時,就不會覆蓋舊值

127.0.0.1:6379[15]

>

settest

'good' nx

(nil)

127.0.0.1:6379[15]

' really?'

(integer) 14

127.0.0.1:6379[15]

> get test

"buhaol really?"

--- 對數字而言

127.0.0.1:6379[15]

>

set test1 23

ok127.0.0.1:6379[15]

(integer) 4

127.0.0.1:6379[15]

> get test1

"2312"

127.0.0.1:6379[15]

>

set num1 12

ok127.0.0.1:6379[15]

> incr num1

(integer) 13

127.0.0.1:6379[15]

> get num1

"13"

127.0.0.1:6379[15]

> incrdy num1 12

(error) err unknown command

`incrdy`

, with args beginning with: `num1`

, `12`

, 127.0.0.1:6379[15]

> incrby num1 12

(integer) 25

127.0.0.1:6379[15]

> get num1

"25"

127.0.0.1:6379[15]

> decr num1

(integer) 24

127.0.0.1:6379[15]

> get num1

"24"

127.0.0.1:6379[15]

> decrby num1 11

(integer) 13

127.0.0.1:6379[15]

> get num1

"13"

5 刪除資料

del key如果key存在則返回1,否則返回0

127.0.0.1:6379[15]

> del num

(integer) 1

127.0.0.1:6379[15]

> get num

(nil)

127.0.0.1:6379[15]

> del num

(integer) 0

redis hash 是乙個string型別的field和value的對映表(key任然為key),hash特別適合用於儲存物件,每個 hash 可以儲存 232 - 1 鍵值對(43多億)。使用hash表不僅能夠減少redis中key的個數,還能優化儲存空間,占用的記憶體要比字串小很多

hset key field value

127.0.0.1:6379[15]

> hset hh name 'tom'

(integer) 1

127.0.0.1:6379[15]

> hget hh name

"tom"

--- 如果不想設定的field對應的value被覆蓋,可以使用hsetnx

hsetnx key field value

127.0.0.1:6379[15]

> hsetnx hh name 'tom'

(integer) 0

127.0.0.1:6379[15]

> hget hh name

"ben"

hset key field value [field1 value1]

127.0.0.1:6379[15]

> hset hh name ben age 18

(integer) 1

hget key field

127.0.0.1:6379[15]

> hget hh name

"tom"

hmget key field field1

127.0.0.1:6379[15]

> hmget hh name age

1)"ben"

2)"18"

hgetall key

127.0.0.1:6379[15]

> hgetall hh

1)"name"

2)"ben"

3)"age"

4)"18"

hvals key

hkeys key

127.0.0.1:6379[15]

> hvals hh

1)"ben"

2)"18"

127.0.0.1:6379[15]

> hkeys hh

1)"name"

2)"age"

hlen key

127.0.0.1:6379[15]

> hlen hh

(integer) 2

hexists key field 如果存在返回1 不存在返回0

127.0.0.1:6379[15]

> hexists hh name

(integer) 1

127.0.0.1:6379[15]

> hexists hh age

(integer) 1

127.0.0.1:6379[15]

> hexists hh age1

(integer) 0

hdel key field [field1] 可以多個

127.0.0.1:6379[15]

> hdel hh age

(integer) 1

127.0.0.1:6379[15]

> hlen hh

(integer) 1

127.0.0.1:6379[15]

> hget hh age

(nil)

暫時就寫這麼多,很晚了,要睡覺了

走進大門的173dmba飛鴿

走進大門的173dmba飛鴿,而兔子家族的人呢,高興極了,弟弟看中了超市的乙個小玩具,但是它吐出來芬芳的香氣在校門口就能聞的到,我去買東西,微風習習,弟弟的173dmba飛鴿眼珠一轉,當我的手輕撫過琴弦。173dmba飛鴿傳書 我就看到樹葉上還掛著露珠,我和爸爸相約去蒼梧綠園遊玩,贏了,我不給他買,...

秋雨梧桐的大門

時隔一年 我又回來了 看了一遍當年寫下的blog 眼淚不自覺的流到了指間 於是有了這篇文章。鳳凰台上鳳凰遊 我自一曲問天歌。和上一年一模一樣的境遇我是不是越活越倒退了?在螢幕前發呆的我,不禁苦笑。話語斑駁 卻了卻不了一番風雨.究竟我想成為乙個什麼樣的人呢?我一直都沒有答案。到了現在了 也依舊空白。可...

踏入C語言的大門

今天開始了對c語言的學習,雖然此前接觸過c語言,但是並沒與好好掌握它,這次又讓我重新接觸它,我相信在之後的日子裡,我會盡快掌握c語言的知識,提高自己的程式設計能 一 1 基本資料型別 空型別 字元型 數值型 陣列 結構 聯合 列舉 指標 2 數值型又分為實型和整型 絕大多數佔4個位元組 實型分為單精...