Redis快速入門

2021-09-12 18:13:17 字數 4380 閱讀 5327

在了解redis之前,我們需要先了解一下非關係型資料庫。

當前主流的關係型資料庫有oracle、db2、microsoft sql server、mysql等。

非關係型資料庫有cloudant、mongodb、redis、hbase等。

那麼,到底什麼是非關係型資料庫呢?

非關係型資料庫:nosql(nosql = not only sql ),意即"不僅僅是sql"。表示在應用開發時,不是必須使用關係型資料庫,可以使用nosql替代關係型資料庫的部分功能。

對比關係型資料庫,非關係型資料庫有以下優點:

(1)無需經過sql層的解析,讀寫效能很高;

(2)基於鍵值對,資料沒有耦合性,容易擴充套件;

(3)儲存資料的格式:nosql的儲存格式是key,value形式、文件形式、形式等等,文件形式、形式等等,而關係型資料庫則只支援基礎型別。

目前nosql還不能完全替代關係型資料庫,一般使用關係型資料庫結合nosql資料庫進行完成專案。一般有以下幾種應用場景:

(1)當資料比較複雜時不適用nosql資料庫;

(2)關係型資料庫依然作為資料儲存的主要軟體;

(3)nosql資料庫當作快取工具來使用(nosql讀寫效能遠高於關係型資料庫),把使用頻率較高的內容不僅僅儲存到關係型資料庫中還儲存到nosql中。

(1)redis概念

redis是乙個開源的使用ansi c語言編寫、遵守bsd協議、支援網路、可基於記憶體亦可持久化的日誌型、key-value資料庫,並提供多種語言的api。

(2)redis特點

(3)redis持久化策略

redis的持久化方式有2種,持久化策略有4種。

aof:資料追加模式

如果只希望資料儲存在記憶體中的話,倆種策略都可以關閉

也可以同時開啟倆種策略,當redis重啟時,aof檔案會用於重建原始資料

(1)key(鍵)

exists key:檢查給定 key 是否存在。

del key [key ...]:刪除給定的乙個或多個 key 。

type key:返回 key 所儲存的值的型別。

flushall:清空所有資料庫

(2)string(鍵)

set key value [ex seconds] [px milliseconds] [nx|xx]:將字串值 value 關聯到 key 。

incr key:將 key 中儲存的數字值增一。

incrby key increment:將 key 所儲存的值加上增量 increment 。(操作流程及返回值類似)

decr key:將 key 中儲存的數字值減一。

decrby key decrement:將 key 所儲存的值減去減量 decrement 。(操作流程及返回值類似)

incrbyfloat key increment:為 key 中所儲存的值加上浮點數增量 increment 。(操作流程及返回值類似)

strlen key:返回 key 所儲存的字串值的長度。

mget key [key ...]:返回所有(乙個或多個)給定 key 的值。

mset key value [key value ...]:同時設定乙個或多個 key-value 對。

(3)hash(鍵)

hmset key field value [field value ...]:同時將多個 field-value (域-值)對設定到雜湊表 key 中。

hget key field:返回雜湊表 key 中給定域 field 的值。

hmget key field [field ...]:返回雜湊表 key 中,乙個或多個給定域的值。

hgetall key:返回雜湊表 key 中,所有的域和值。

hexists key field:檢視雜湊表 key 中,給定域 field 是否存在。

hsetnx key field value:將雜湊表 key 中的域 field 的值設定為 value ,當且僅當域 field 不存在。若域 field 已經存在,該操作無效。

hincrby key field increment:為雜湊表 key 中的域 field 的值加上增量 increment 。

hdel key field [field ...]:刪除雜湊表 key 中的乙個或多個指定域,不存在的域將被忽略。

hkeys key:返回雜湊表 key 中的所有域。

hvals key:返回雜湊表 key 中所有域的值。

hlen key:返回雜湊表 key 中域的數量。

(4)list(鍵)

內部使用雙向鍊錶實現,所以獲取越接近兩端的元素速度越快,但通過索引訪問時會比較慢。

rpush key value [value ...]:將乙個或多個值 value 插入到列表 key 的表尾(最右邊)。

lpop key:移除並返回列表 key 的頭元素。

rpop key:移除並返回列表 key 的尾元素。

llen key:返回列表 key 的長度。

lrange key start stop:返回列表 key 中指定區間內的元素,區間以偏移量 start 和 stop 指定。

返回值:乙個列表,包含指定區間內的元素。

lrem key count value:根據引數 count 的值,移除列表中與引數 value 相等的元素。

返回值:被移除元素的數量。因為不存在的 key 被視作空表(empty list),所以當 key 不存在時, lrem 命令總是返回 0。

lindex key index:返回列表 key 中,下標為 index 的元素。

lset key index value:將列表 key 下標為 index 的元素的值設定為 value 。

ltrim key start stop:對乙個列表進行修剪(trim),就是說,讓列表只保留指定區間內的元素,不在指定區間之內的元素都將被刪除。

rpoplpush source destination:命令 rpoplpush 在乙個原子時間內,執行以下兩個動作:

(5)set(鍵)

集合型別值具有唯一性,常用操作是向集合新增、刪除、判斷某個值是否存在,集合內部是使用值為空的雜湊表實現的。

srem key member [member ...]:移除集合 key 中的乙個或多個 member 元素,不存在的 member 元素會被忽略。

smembers key:返回集合 key 中的所有成員。不存在的 key 被視為空集合。

sismember key member:判斷 member 元素是否集合 key 的成員。

sdiff key [key ...]:返回乙個集合的全部成員,該集合是所有給定集合之間的差集。

sinter key [key ...]:返回乙個集合的全部成員,該集合是所有給定集合的交集。

sunion key [key ...]:返回乙個集合的全部成員,該集合是所有給定集合的並集。

scard key:返回集合 key 的基數(集合中元素的數量)。

集合運算後儲存結果

語法:srandmember key [count]:如果命令執行時,只提供了 key 引數,那麼返回集合中的乙個隨機元素。

spop key:移除並返回集合中的乙個隨機元素。

(6)sortedset(鍵)

zscore key member:返回有序集 key 中,成員 member 的 score 值。

zrange key start stop [withscores]:返回有序集 key 中,指定區間內的成員。

zrevrange key start stop [withscores]:返回有序集 key 中,指定區間內的成員。

zrangebyscore key min max [withscores] [limit offset count]:返回有序集 key 中,所有 score 值介於 min 和 max 之間(包括等於 min 或 max )的成員。

zrevrangebyscore key max min [withscores] [limit offset count]:返回有序集 key 中, score 值介於 max 和 min 之間(預設包括等於 max 或 min )的所有的成員。有序集成員按 score 值遞減(從大到小)的次序排列。

zincrby key increment member:為有序集 key 的成員 member 的 score 值加上增量 increment 。

requirepass 將要設定的密碼
如果給redis設定了密碼,需要通過以下方式訪問:

./redis-cli -h ip位址 -p 埠號 -a 密碼

Redis快速入門

redis是一種高階key value資料庫。它跟memcached類似,不過資料可以持久化,而且支援的資料型別很豐富。有字串,鍊錶,集合和有序集合。支援在伺服器端計算集合的並,交和補集 difference 等,還支援多種排序功能。所以redis也可以被看成是乙個資料結構伺服器。wget解壓縮 t...

redis快速入門

redis是乙個速度極快的nosql資料庫,資料存在記憶體中沒有磁碟的io它是io多路復用的,由c語言編寫,只存k v形式的資料,有五種資料型別 安裝redis 開啟redis server.exe啟動redis服務在6379埠 開啟客戶端redis cli.exe string 設定乙個strin...

Redis快速入門及應用

redis的使用難嗎?不難,redis用好容易嗎?不容易。redis的使用雖然不難,但與業務結合的應用場景特別多 特別緊,用好並不容易。我們希望通過一篇文章及demo,即可輕鬆 快速入門並學會應用。一 redis 簡介 redis是乙個開源的key value儲存,但又不僅僅是key value儲存...