Redis 數據類型

Redis 簡介

Redis 是一個速度很是快的非關係數據庫, 它能夠存儲鍵與 5 種不一樣兩類型的值之間的映射. 能夠將存儲在內存中的鍵值對持久到硬盤, 可使用複製特性來擴展讀性能, 還可使用客戶端分片來擴展寫性能.redis

分片
分片是一種將數據劃分爲多個部分的方法, 對數據的劃分能夠基於鍵包含的 ID, 基於鍵的散列值, 或者基於以上兩種的某種組合.

經過對數據進行分片, 用戶能夠將數據存儲到多臺機器裏面, 也能夠從多臺機器裏面獲取數據, 這種方法在解決某些問題時能夠得到線性級別的性能提高.數據庫

Redis 實現了主從複製特性: 執行復制的從服務器會鏈接上主服務器, 接收主服務器發送的整個數據庫的初始副本; 以後主服務器執行的寫命令, 都會被髮送給全部鏈接着的從服務器去執行, 從而實時地更新從服務器的數據集.服務器

數據類型

Redis 中的字符串

STRING 能夠是字符串, 整數或者浮點數. 對整個字符串或者字符串的其中一部分執行操做; 對整個數和浮點數執行自增或者自減操做. 性能

三個簡單的例子:code

set key value (若是存在就是修改, 不存在則是添加)
get key (經過鍵獲取值)
del key (刪除, 適用於全部類型)

Redis 中的列表

LIST 一個鏈表, 鏈表上的每一個節點都包含了一個字符串. 從鏈表的兩端推出或彈出元素; 根據偏移量對鏈表進行修剪; 讀取單個或多個元素; 根據值查找或移除元素.對象

列表 (鏈表) 是有序的. 另外獲取元素時, 元素下標是從 0(零) 開始

幾個簡單的例子:內存

LPUSH 從左端插入元素.
RPUSH 從右端插入元素.
LPOP 從列表的左端彈出一個值, 並返回彈出的值(會移除元素).
RLOP 從列表的右端彈出一個值, 並返回彈出的值(會移除元素).
LRANGE 獲取列表在給定範圍上的全部值. lrange key 0 -1 表示從零開始獲取到最後.
LINDEX  獲取列表在給定位置上的單個元素.

Redis 中的集合

SET 包含字符串的無序收集器, 而且被包含的每一個字符串都是不可重複的. 添加, 獲取, 移除單個兒元素; 檢查一個元素是否存在集合中; 計算交集, 並集, 差集; 從集合裏面隨機獲取元素.rem

集合中的全部元素都是無序不可重的.

幾個簡單的例子:字符串

sadd 將元素添加到集合, 返回添加成功的元素個數.
smembers 返回集合包含的全部元素.
sismember 檢查指定元素是否在集合中, 若是存在返回1, 不然返回0.
srem 若是給定的元素存在集合中, 就移除, 返回被移除元素的數量.

Redis 中的散列

HASH 包含鍵值對的無序散列表. 添加, 獲取, 移除單個鍵值對或獲取全部鍵值對.get

咱們能夠把 Java 中的 map 集合看作是 redis 中的散列. 鍵爲 String, 值爲 Object, 也就是說散列適合存儲對象.

散列中的鍵( field)都是惟一而且是無序排列的, 沒一個鍵對應一個值.

幾個簡單的例子:

hset 若是給定的哈希表並不存在, 那麼一個新的哈希表(散列). 若是域 field (鍵)已經存在於哈希表中, 那麼它的舊值將被新值 value 覆蓋.
hget 默認狀況下返回給定域的值. 若是給定域不存在於哈希表中, 又或者給定的哈希表並不存在, 那麼命令返回 ```nil```.
hgetall 返回散列中全部的域和值.
hdel 移除散列中的域.

Redis 中的有序集合

ZSET 字符串成員與浮點數分值之間的有序映射, 元素的排列順序由分值的大小決定. 添加, 獲取, 刪除單個元素; 根據分值範圍或者成員來獲取元素.

有序集合和散列同樣, 都是用於存儲鍵值對: 有序集合的鍵被稱爲成員, 每一個成員都是各不相同的; 而有序集合的值被稱爲分值, 分值必須爲浮點數.

能夠根據成員訪問元素, 也能夠根據分值以及分值的排列順序來訪問元素的結構.

幾個簡單的例子:

zadd 將一個帶有給定分值的成員添加到有序集合裏面.
zrange 根據元素在有序排列中所處的位置, 從有序集合裏面獲取多個元素.
zrangebyscore 獲取全部元素.
zrem 移除元素
相關文章
相關標籤/搜索