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值的設定,有幾點特別的說明:字串(strings)是redis的基本資料結構之一,由key和value組成。我們可以這樣模擬成程式語言的變數:key代表變數名,value代表變數值。1.key不要太長,盡量不要超過1024位元組,這不僅消耗記憶體,而且會降低查詢的效率;
2.key也不要太短,太短的話,key的可讀性會降低;
3.在乙個專案中,key最好使用統一的命名模式,一般按照專案名:模組:具體的方法
例如:apoll:person:personcode 這種格式,這樣方便我們用redis的視覺化工具去檢視,同乙個專案
中的key值都在乙個目錄下的不同層級裡面, 很清晰明了,要不然key值會特別亂。
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個位元組 實型分為單精...