Redis學習(三)--------Redis入門及介紹

Redis

一、什麼是Redis

Redis 是一個速度非常快非關係型數據庫。
它可以存儲鍵(key)及五種不同類型的值(value)之間的映射,可以將存儲在內存中的鍵值對數據持久化到硬盤,可以使用複製特性來擴展讀性能,還可以使用客戶端分片來擴展寫性能。
它是完全開源免費的,用C語言編寫的,遵守BSD協議,是一個高性能的(key/value)分佈式內存數據庫,基於內存運行並支持持久化的NoSQL數據庫,是當前最熱門的NoSql數據庫之一,也被人們稱爲數據結構服務器

二、Redis和一些數據庫及緩存服務器的特性和功能

名稱 類型 數據存儲選項 查詢類型 附加功能
Redis 使用內存存儲的非關係型數據庫 字符串(STRING)、列表(LIST)、Set(集合)、Hash(哈希)、zset(sorted set:有序集合) 每種數據類型都有自己的專屬命令,另外還有批量操作和不完全事務支持 發佈與訂閱,主從複製,持久化,腳本
memcached 使用內存存儲的鍵值緩存 鍵值之間的映射 創建命令、讀取命令、更新命令、刪除命令以及其他九個命令 爲提升性能而設的多線程服務器
Mysql 關係型數據庫 每個數據庫可以包含多個表,每個表可以包含多個行,可以處理多個表的視圖,支持空間和第三方擴展 SELECT、INSERT、UPDATE、DELETE、函數、存儲過程 支持ACID性質(需要使用InnoDB)、主從複製和主主複製
MongDB 使用硬盤存儲的非關係文檔存儲 每個數據庫可以包含多個表,每個表可以包含無schema的BSON文檔 創建命令、讀取命令、更新命令、刪除命令、條件查詢命令等 支持map-reduce操作,主從複製,分片,空間索引

Redis 與其他 key - value 緩存產品有以下三個特點
1、Redis支持數據的持久化,可以將內存中的數據保持在磁盤中,重啓的時候可以再次加載進行使用
2、Redis不僅僅支持簡單的key-value類型的數據,同時還提供list,set,zset,hash等數據結構的存儲
3、Redis支持數據的備份,即master-slave模式的數據備份

三、爲什麼要用Redis

  • 使用Redis來解決問題,不僅可以讓代碼變得更簡短、更易懂、更易維護,而且使代碼的運行速度更快(因爲用戶不需要通過讀取數據庫來更新數據)。除此之外,在其他許多情況下,Redis的效率和易用性也比關係型數據庫要好的多。
  • 在Redis裏面,用戶可以直接使用原子的INCR命令及其變種來計算聚合數據,並且因爲Redis將數據存儲在內存裏面,而且發送給Redis的命令請求並不需要經過典型的查詢分析器或者查詢優化器進行處理,所以對Redis存儲的數據執行隨機寫的速度總是非常迅速的。
  • 使用Redis而不是關係型數據庫或者其他硬盤存儲數據庫,可以避免寫入不必要的臨時數據,也免去了對臨時數據進行掃描或者刪除的麻煩,並最終改善程序的性能。

Redis數據結構簡介

Redis可以存儲鍵與5種不同數據結構類型之間 的映射,這5種數據類型分別爲STRING(字符串)、LIST(列表)、Set(集合)、Hash(哈希)、zset(sorted set:有序集合)。
Redis五種數據結構對比

結構類型 結構存儲的值 結構的讀寫能力
STRING 可以是字符串、整數或者浮點數 對整個字符串或者字符串的其中一部分執行操作;對整數或者浮點數進行自增或者自減操作
LIST 一個鏈表,鏈表上的每個節點都包含了一個字符串 從鏈表的兩端推入或者彈出元素;根據偏移量對鏈表進行修剪;讀取單個或者多個元素;根據值查找或者移除元素
SET 包含字符串的無序收集器,並且被包含的每個字符串都是獨一無二、各不相同的 添加獲取移除單個元素;檢查一個元素是否存在於集合中;計算交集、並集、差集;從集合裏面隨機獲取元素
HASH 包含鍵值對的無序散列表 添加、獲取、移除單個鍵值對;獲取所有鍵值對
ZSET 字符串成員與浮點數分值之間的有序映射,元素的排列順序由分值的大小決定 添加、獲取、刪除單個元素;根據分值範圍或者成員來獲取元素

STRING 字符串基本命令

GET 獲取存儲在給定鍵中的值

SET 設置存儲在給定鍵中的值

DEL 刪除存儲在給定鍵中的值(這個命令可以用於所有類型)

LIST 列表基本命令

RPUSH 將給定值推入列表的右端

LRANGE 獲取列表在給定範圍上的 所有值

LINDEX 獲取列表在給定位置上的單個元素

LPOP 從列表左端彈出一個值,並返回被彈出的值

SET集合基本命令

SADD 將給定元素添加到集合

SMEMBERS 返回集合包含的所有元素

SISMEMBER 檢查給定元素是否存在於集合中

SREM 如果給定的元素存在與集合中,那麼移除這個元素

HASH 哈希 基本命令

HSET 在散列裏面關聯起給定的鍵值對

HGET 獲取指定散列鍵的值

HGETALL 獲取散列包含的所有鍵值對

HDEL 如果給定鍵存在於散列裏面,那麼移除這個鍵

ZSET有序集合 基本命令

ZADD 將一個帶有給定分值的成員添加到有序集合裏面

ZRANGE 根據元素在有序排列中所處的位置,從有序集合裏面獲取多個元素

ZRANGEBYSCORE 獲取有序集合在給定範圍內的所有元素

ZREM 如果給定成員存在於有序集合,那麼移除這個成員

總結

Redis 是一個可以用來解決問題的工具,它擁有其他數據庫不具備的數據結構,又擁有內存存儲(這使得Redis 的速度非常快)、遠程(這使得Redis 可以與多個客戶端和服務端進行連接)、持久化(這使得服務器可以在重啓之後仍然保持重啓之前的數據)和可擴展(通過主從複製和分片)等多個特性,這使得用戶可以以熟悉的方式爲各種不同的問題構建解決方案。

【推薦閱讀】

《Redis 實戰》

如有總結不當,有問題,錯誤的地方請大家予以指正,共同學習,共同進步

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章