NoSQL-Redis從入門到精通

聲明:部分內容借鑑與網絡,實際操作內容都經過本人實測


NoSQL概述:

NoSQL四大分類:

四者對比: 

在分佈式數據庫中CAP原理CAP+BASE:

 

傳統的ACID:

A(Atomicity)    原子性

C(Consistency)  一致性

I(Isonlation)   獨立性

D(Durability)   持久性

 

 

CAP+BASE

C(Consisitency)   強一致性

A(Availability) 可用性

P(Partition tolerance) 分區容錯性

 


 

 


Redis簡介:

Redis是一個高性能的key-value數據庫。redis的出現,很大程度補償了memcached這類key-value存儲的不足,在部分場合可以對關係數據庫起到很好的補充作用。它提供了C++、Java、Python,Ruby,Erlang,PHP客戶端。

 

 



安裝:

yum -y install redis

或者

docker pull redis 

常用命令

五大數據類型:

String 字符串

Hash 哈希 類似java中的map

List 列表

Set 集合

Zset(sorded set) 有序集合

 

庫級別操作

DBSize

查看當前數據庫key的數量

FlushDB (ASYNC)

清除當前庫 帶ASYNC 將會單開線程在後臺執行(4.0新特性)

FlushALL (ASYNC)

清所有庫  帶ASYNC將會單開線程在後臺執行(4.0新特性)

Keys *

匹配key  如keys key1

Exists key

判斷某個key是否存在  存在返回1 不存在返回0

Move key db

當前庫就沒有了,被移除了

Expire key 秒鐘

 爲給定的key設置過期時間

Ttl key

 查看還有多少秒過期,-1表示永不過期,-2表示已過期

Type key

 查看你的key是什麼類型

SWAPDB 0 1

交換數據庫,原來的數據庫 0 變成數據庫 1 , 而原來的數據庫 1 則變成數據庫 0(4.0新特性) 

MEMORY useage key

查看key所佔用的內存情況

MEMORY MALLOC-STATS

子命令可以展示分配器內部狀態

MEMORY PURGE

子命令可以要求分配器釋放更多內存

 

 

-------

 

 

String字符串

Get、Set

設置  取得值

Select db

切換數據庫

Del key

UNLINK key

刪除key

這個命令是 DEL 命令的異步版本, 它可以將刪除指定鍵的操作放在後臺線程裏面執行, 從而儘可能地避免服務器阻塞(4.0新特性)

Append key str

追加內容

Strlen key

Key的內容長度

Incr key

對值進行自增  每次自增1  一定是數據才能加減

IncrBy key 大小

每次遞增多少

Decr

對值進行自減  每次自減1  一定是數據才能加減

DecrBy

每次遞減多少

Getrange key start end

獲取字符串從x下標 到y下標

Setrange key start content

從start開始設置值  直接覆蓋

Setex key 秒數 value1

給key賦值新值並設置秒數  會覆蓋以前的內容

Setnx key value1

如果key存在,設置無效   如果不存在 將會新增key

Mset k v k v k v

同時設置一個或多個 key-value 對

Mget k k k k k k

獲取所有(一個或多個)給定 key 的值

Getset

給key設置一個新的值 然後返回一箇舊值(這個不錯)

Msetsnx k v k v

同時設置一個或多個 key-value 對,當且僅當所有給定 key 都不存在

 

------------------------------------------------------------------------------------------------------------

 

List列表

LPUSH key v v v v

各個 value 值按從左到右的順序依次插入到表頭

RPUSH key v v v v

那麼各個 value 值按從左到右的順序依次插入到表尾

LRANGE key 0 -1

取得指定範圍內的值 0 -1取全部,0  1 表示取索引0和1的值

LPOP key

彈出當前棧頂第一個值  即移除

RPOP key

彈出當前棧最後一個值  即移除

LINDEX key index

取索引處的值

LLEN key

取list長度

LREM key 數量 value

刪除一個list內的幾個value

LTRIM key s e

截取元素  並重新賦值

RPOPLPUSH  key1 key2

把key1棧尾的值 壓到key2棧頂

Lset key index value1 value2

給指定索引處賦值 

LINSERT key before value value2

插入值  在key的value之前

LINSERT key after value value2

插入值  在key的value之後

     它是一個字符串鏈表,left、right都可以插入添加;

     如果鍵不存在,創建新的鏈表;

    如果鍵已存在,新增內容;

    如果值全移除,對應的鍵也就消失了。

    鏈表的操作無論是頭和尾效率都極高,但假如是對中間元素進行操作,效率就很慘淡了。

 

------------------------------------------------------------------------------------------------------------

 

Set集合

Sadd key v v v

新增set並賦值

Smembers key

查詢key的值

Sismember key value

查詢value是否在key中

Scard

獲取集合裏面的元素個數

Srem key value

把value從key中刪除

Srandmember key 數量

從key裏面隨機取出幾個數

Spop key

隨機彈出棧  一次一個

Smove key1 key2 value

把key1中的一個值移動到key2的棧頂

Sdiff key1 key2 key3 …

差集,在第一個set裏面而不在後面任何一個set裏面的項,相當於拿第一個做參考

Sinter

交集

Sunion

並集

 

Hash:哈希 KV模式不變,但V是一個鍵值對

Hset key k v

 設置一個帶mapkey

Hget key k

取出key中的k的值

Hmset key k v k v k v

批量設置

Hmget key k k k k k

批量取多個k的值

HgetAll key

取一個key的所有值

Hdel key k

刪除key中的k

Hlen key

 取長度

Hexists key k

key k是否存在

Hkeys key

key中的所有k

Hvals key

key所有的kvalue

HincrBy key k

key中的k自增1

HincrByfloat key k val

可以key中的kv增加val 對於float類型

Hsetnx key k v

key中的key設置值 如果存在 設置無效   不存在 新增至並設置值

Zset 有序集合

在set基礎上,加一個score值。 之前set是k1 v1 v2 v3,現在zset是k1 score1 v1 score2 v2。下面所說的分數就是score

Zadd key s v

給v再加上一個s值

Zrange key 0 -1

查詢範圍內key對應的v

Zrange key 0 -1 withscores

聯合score一起查

ZRANGEBYSCORE zset1 s1 s2

查詢在set1中分數在s1到s2之間的v(如果在分數前加上“(”表示不包含)

ZRANGEBYSCORE zset1 s1 s2 limit 2 1

limit 2 1  從下標2開始截取1個

ZREM key v

從key中刪除v

Zcard key

統計key的v的個數

ZCOUNT key s1 s2

查詢key中分數在s1到s2之間的

Zrank key v

取v的下標

Zscore key v

取v的分數

Zrevrank key v

倒序取v的下標

Zrevrange key 0 -1

倒序取全部的v

ZREVRANGEBYSCORE zset1 90 60

查詢key中分數在90到60之間的,因爲這裏是倒序的


 

Redis的配置文件詳解 請看下篇文章...

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