Redis簡介
Redis是一個內存數據庫(非關係型數據庫),性能比較強
Redis不使用表,不會要求用戶對Redis存儲的不同數據進行關聯
Redis既可以作爲主數據庫也可以作爲其他存儲系統的輔助數據庫使用
一些數據庫和緩存服務器的特性與功能:
名稱 | 類型 | 數據存儲選項 | 查詢類型 | 附加功能 |
Redis | 使用內存存儲 的非關係數據庫 | 字符串、列表、集合、 散列表、有序集合 | 每種數據類型都有自 己的專屬命令, 另外還有批量操作和 不完全的事務支持 | 發佈與訂閱, 主從複製, 持久化, 腳本 |
Memcached | 使用內存存儲 的鍵值緩存 | 鍵值之間的映射 | 創建命令、讀取命令、 更新命令、刪除命令以 及其他幾個命令 | 爲提升性能而設 的多線程服務器 |
MySQL | 關係數據庫 | 每個數據庫可以包含多個表, 每個表可以包含多個行; 可以處理多個表的視圖(view); 支持空間(spatial)和第三方擴展 | SELECT 、 INSERT 、 UPDATE 、 DELETE 、 函數、存儲過程 | 支持ACID性質 (需要使用InnoDB), 主從複製和主主複製 |
PostgreSQL | 關係數據庫 | 每個數據庫可以包含多個表, 每個表可以包含多個行; 可以處理多個表的視圖; 支持空間和第三方擴展; 支持可定製類型 | SELECT 、 INSERT 、 UPDATE 、 DELETE 、 內置函數、自定義的存儲過程 | 支持ACID性質,主從複製, 由第三方支持的多主複製 |
MongoDB | 使用硬盤存儲 的非關係文檔存儲 | 每個數據庫可以包含多個表, 每個表可以包含多個無schema 的BSON文檔 | 創建命令、讀取命令、 更新命令、刪除命令、 條件查詢命令,等等 | 支持map-reduce操作, 主從複製,分片, 空間索引 |
Redis提供的5種結構:
結構類型 | 結構存儲的值 | 結構的讀寫能力 |
STRING | 可以是字符串,整數或者浮點數 | 對整個字符串或者字符串的其中一部分執行操作; 對整數和浮點數執行自增或者自減操作 |
LIST | 一個鏈表,鏈表的每個節點都包含了一個字符串 | 從鏈表的兩端推入或者彈出元素 ;根據偏移量對鏈表進行修剪(trim); 讀取單個或者多個元素; 根據值查找或者移除元素 |
SET | 包含字符串的無序收集器,並且被包含的而每個字符串都 | 添加、獲取、移除單個元素; 檢查一個元素是否存在於集合中; 計算交集、並集、差集; 從集合裏面隨機獲取元素 |
HASH | 包含鍵值對的無序散列表 | 添加、獲取、移除單個鍵值對; 獲取所有鍵值對 |
ZSEF(有序集合) | 字符串成員(member)與浮點數分值(score)之間的有序映射 ,元素的排列順序由分值的大小決定 | 添加、獲取、刪除單個元素; 根據分值範圍或者成員來獲取元素 |
運行Redis
打開Redis的安裝目錄,找到Redis的客戶端,點擊運行
Redis的字符串(string)
Redis字符串實例:
#密碼:auth "你的密碼"
auth "123456"
#設置值(k:hello,v:world)
set hello world
#獲取值(k:hello)
get hello
#刪除值(k:hello)
del hello
#獲取值(k:hello)
get hello
Redis列表(list)
Redis列表實例:
#RPUSH(將元素推入列表的右端)
rpush list-key item
#LPUSH(將元素推入列表的左端)
lpush list-key item4
rpush list-key item1
rpush list-key item2
rpush list-key item3
#lrange獲取列表在給定範圍上的所有值
lrange list-key 0 -1
#取出列表上面的單個元素
lindex list-key 1
#lpop從列表左端彈出1個元素
lpop list-key
#rpop從列表右端彈出1個元素
rpop list-key
Redis集合(set)
Redis集合實例:
#添加元素到集合
sadd set-key item
sadd set-ket item1
sadd set-key item2
sadd set-key item3
sadd set-key item4
sadd set-key item5
#返回集合所有元素
smembers set-ket
#檢查某個元素是否都在集合中
sismember set-key item6
sismember set-key item5
#如果指定的元素在集合中則移除
srem set-key item5
Redis散列(hash)
Redis散列實例:
#在散列裏面關聯給定的鍵值對
hset hash-key sub-key value1
hset hash-key sub-key2 value2
hset hash-key sub-key3 value3
#獲取指定的散列鍵的值
hgetall hash-key
#獲取散列中所有的鍵值對
hget hash-key sub-key1
#如果指定的鍵存在於散列裏面,那麼移除這個鍵
hdel hash-key sub-key2
Redis有序集合(sorted set)
Redis有序集合:
#講一個帶有定分值的成員添加到有序集合裏面
zadd zset-key 728 member1
zadd zset-key 982 member0
zadd zset-key 982 member0
#根據元素在有序排列中所處的位置,從有序集合裏面獲取多個元素
zrange zset-key 0 -1 withscores
#獲取有序集合在給定分值內的所有元素
zrangebyscore zset-key 0 800 withscores
#移除有序集合中指定的成員
zrem zset-key member1