1. 程式人生 > >Redis之初識Redis

Redis之初識Redis

前言:一直對Redis很感興趣,很多做技術的人就算沒有學過redis,但至少聽說過redis;redis是一個遠端基於記憶體的資料庫,不僅效能強勁,而且還具有複製特 性以及解決問題而生的一種獨一無二的資料模型。redis提供了5種不同型別的資料結構,這些資料結構致力於幫助使用者解決問題,此外,通過複製、持久化和客戶端 分片等特性,使用者可以很方便的將redis擴充套件成一個能包含數百GB資料每秒可以處理上百萬次請求的系統。
由於redis是記憶體資料庫,我們必須要考慮這樣的一種問題“當伺服器被關閉的時候,伺服器儲存的資料將何去何從呢?”redis有兩種不同形式的持久化方法,它們都 可以使用小而緊湊的格式將儲存在記憶體的資料寫入硬碟;第一種持久化方法就是時間點轉儲;第二種就是將所有修改了資料庫的命令都寫入到一個只追加檔案裡面, 使用者可以根據資料的重要程度,將只追加寫入設定為不同步、每秒同步一次或寫入一個命令就同步一次。(後面會詳細介紹。。。)
接下來介紹一下redis的資料結構一共5種
1、string string可以是字串、整數或者浮點數。redis的string和其他程式語言的string很相似。有一點我們需要清楚,redis是一種key-value的非關係型資料庫 假設key name為hello,那麼接下來我們需要set它的value set hello world //將hello的value設定為world get hello //獲取hello的value del hello //刪除這個key-value
string的常見命令 set 設定key-value中訂value get 獲取key-value的value del 刪除key-value 2、list redis對連結串列結構的支援是的它在key-value的世界獨樹一幟。一個列表結構可以有序的儲存多個字串,和表示字串時使用的方法一樣。 假設key name為list-key
rpush list-key item // rpush list-key item2 lrange list-key 0 -1//0為開始index,-1為結束index,可以取出裡面所有的元素 lindex list-key 1//結果是item2 lpop list-key //結果是item
list的常見命令 rpush 將value推入list的右端 lrange 獲取給定範圍的value lindex 獲取給定的index的value lpop 從列表的左側彈出一個value,返回value
3、set redis的set和list都可以儲存多個字串,唯一不同的地方在於,set不能儲存相同的字串,但是list可以儲存相同。set主要是通過hashtable來保證 自己儲存的每個字串都是不相同的(這些hashtable只有key沒有value) 假設key-value是set-key
sadd set-key item sadd set-key item2 sadd set-key item3 smember set-key //將返回所有的value sismember set-key item//返回1(表示存在,否則是0表示不存在) srem set-key item2
set常見的命令 sadd 將value新增到list中 smember 返回所有的value sismember 檢查某個value是否存在 srem 刪除某個value(若value不存在,返回0)
4、hash redis的hash可以儲存多個key-value之間的對映沒,和string一樣,hash儲存的value既可以字串也可以存數字,並且使用者可以對hash儲存的數字進行自增 或者自減操作。 假設key-name為hash-key
hset hash-key sub-key1 value1//新增key-value hset hash-key sub-key2 value2 hgetall hash-key//get all key-value hdel hash-key sub-key1 //delete sub-key1 hget hash-key sub-key2
hash的常見命令 hset 在hash裡面關聯起給定的key-value hget 獲取給定的key的value hgetall 獲取所有的value hdel 刪除給定的key-value
5、zset zset和hash一樣都是用於儲存key-value;zset的key被稱為member,每個member都是不同的;而zset的value被稱為score(score必須為float)。zset 是redis裡面唯一既可以根據member訪問元素,又可以根據score以及score的排列順序來訪問元素的一種資料結構。 假設member為zset-key
zadd zset-key 10 member1//向zset新增元素 zadd zset-key 12 member2 zrange zset-key 0 -1 withscore//獲取所有的元素 zrangebyscore zset-key 0 11 withscore//結果是“member1” 10 zrem zset-key member1
zset常見的命令
zadd 新增元素 zrange 獲取給定index範圍的元素 zrangebyscore 獲取給定的score範圍的元素 zrem 刪除給定的元素