上篇部落格介紹了兩種資料型別string和hash,下面我們接著來看~
redis 是乙個鍊錶結構,主要的功能是push、pop/獲取乙個範圍的所有值等等,操作中key理解為鍊錶的名字。redis的list型別其實就是乙個每個子元素都是string型別的雙向鍊錶。我們可以通過push、pop操作從鍊錶的頭部或者尾部新增刪除元素,這樣list既可以作為棧,又可以作為佇列。
棧和佇列的含義:佇列是先進先出,而棧是先進後出。
演示幾個比較重要的操作(在window環境下進行的操作):
lpush:在key對於的list頭部新增字串元素。(是體現的棧)
rpush: 在key對於的list頭部新增字串元素(是體現佇列)。
lrange 0 -1預設從頭部取到尾部(從尾到頭為向上的方向),如圖所示:
linsert:在key對應的特定位置前或者後新增字串。
lset:設定list中指定下標的元素值。
lrem:從key對於的list中刪除n個和value相同的元素。(n<0從尾刪除,n=0全部刪除)
ltrim保留指定範圍內的資料。
lpop是從頭彈出元素而rpop是從尾彈出元素。
rpoplpush:從第乙個list的尾部進行彈出並且新增到第二個的頭部。
lindex:返回名稱為key的list中index位置的元素。key均為索引。
llen:返回key對於list長度。
redis的set是string型別的無序集合。集合是通過雜湊表實現的,所以新增,刪除,查詢的複雜度都是o(1)。對集合我們可以取並集、交集、差集。通過這些操作我們可以實現sns中的好友推薦和blog的tag功能。
好友推薦就是取的好友中的差集比如qq中你有的好友我沒有,但是我們互加好友就可以擁有。
sadd:向名稱為key的set中新增元素。相同元素無法插入,因為集合中不存在重複元素值,smembers是檢視元素。
0表示是無法插入的,1表示插入成功。
srem:刪除元素,刪除名稱為key的set中的元素。
spop:(隨機)lpop是從頭,rpop是從尾,而spop是隨機的,因為集合是無序的,不再演示。
sdiff:返回所有給定key與第乙個key的差集。誰在前面以誰為標準。(sdiffmyset myset1)sdiffstore,表示返回差集並且儲存到乙個新的set中去,(sdiff mysetmyset1 myset2(儲存差集集合))
sinter是交集,sinterstore,取出交集並且儲存到乙個集合中,與差集的獲取儲存一樣,只是這裡是交集。sunion是並集,sunionstore是求出並集並且儲存到乙個集合中。
smove:從第乙個key對應的set中移除member並且新增到第二個對應的set中。(smove myset myset1「hello」)
scard:返回名稱為key的set的元素個數。
sismember
:測試member是否為名稱為key的set的元素。
srandmember:隨機返回名稱為key的set的乙個元素,但不刪除元素。
sorted sets是set的乙個公升級,在set基礎上增加了順序屬性,這一屬性在新增修改元素的時候可以指定,每次指定後,zset會自動重新按新的值調整順序。可以理解為有兩列的mysql表,一列儲存value,一列儲存順序,操作中key理解我zset的名字。
zadd:有序新增,不同於set,這裡會有乙個順序值。
zrem是刪除元素,刪除名稱為key的zset的元素member。不再演示,同與set相同。
zincrby:自增屬性,與string型別中一樣,不再贅述。
zrank
:返回名稱為key的zset中元素的排名,按照score從小到大,也就是下標。zrevrank,反轉,按照score從大到小。
zrangebyscore:返回指定範圍。根據下標返回(zrangebyscore myset 2 3 withscores)
zcount:返回所有的元素及下標。zcard返回所有元素的個數。
zremrangebyrank:根據下標刪除再從小到大顯示。rank是根據索引的刪除,而score是根據順序來進行刪除。
到此五種資料型別介紹完畢,你知道了多少呢,動手實踐吧~
NoSQL資料庫之 Redis
redis是基於記憶體的nosql資料庫。前身是memcached,但是memcached不支援持久化,沒有豐富的資料型別。redis存放的資料是key values鍵值對。1 解壓 tar zxvf redis 3.0.5.tar.gz 預編譯,需要gcc環境。apt get install gc...
NoSql資料庫之redis資料庫簡介及安裝
一 redis資料庫簡介 redis是用c語言開發的乙個開源的高效能鍵值對 key value 資料庫。它通過提供多種鍵值資料型別來適應不同場景下的儲存需求,目前為止redis支援的鍵值資料型別如 下 1 字串型別 string 2 雜湊型別 hash 3 列表型別 list 4 集合型別 set ...
NoSQL資料庫Redis幾個認識誤區
前幾天微博發生了一起大的系統故障 很多技術的朋友都比較關心,其中的原因不會超出james hamilton在on designing and deploying internet scale service 1 概括的那幾個範圍,james第一條經驗 design for failure 是所有網際...