全民學NoSQL之KV類型資料庫Redis

  • 2019 年 10 月 6 日
  • 筆記

全民學NoSQL之KV類型資料庫Redis

0.導語

每個人都應該懂點NoSQL知識; 每個人都應該學點Redis知識; 每個人都應該看一下這篇文章;

Let's Go,發車了,第一彈:Redis的字元串類型使用。

1.安裝

官網地址:

https://redis.io/

編譯與安裝:

wget http://download.redis.io/releases/redis-5.0.5.tar.gz  tar xzf redis-5.0.5.tar.gz  cd redis-5.0.5  make  

服務端啟動:

src/redis-server  

客戶端啟動:

src/redis-cli  redis> set foo bar  OK  redis> get foo  "bar"  

3.字元串類型使用

鍵不存在:

setnx k1 asda  

不存在的才創建,存在不修改

set k1 asd nx  

存在的修改,不存在不創建

set k1 asd xx  

獲取類型

type k1  

獲取標記

k1:"aaa",k2:5  127.0.0.1:6379> object encoding k1  "embstr"  127.0.0.1:6379> object encoding k2  "int"  

MSET設置多個鍵的字元串值

127.0.0.1:6379> MSEt k3 1151 k4 1231  OK  

鍵不存在時,設置字元串。只有全部不存在才生效。

127.0.0.1:6379> msetnx k1 ass k2 asda k5 "asda"  (integer) 0  127.0.0.1:6379> keys *  1) "k1"  2) "k2"  3) "k3"  4) "key1"  5) "k4"  127.0.0.1:6379> get k1  "asd"  127.0.0.1:6379> msetnx k6 asda k5 "asda"  (integer) 1  127.0.0.1:6379> keys *  1) "k1"  2) "k2"  3) "k3"  4) "key1"  5) "k5"  6) "k4"  7) "k6"  

查找鍵:

keys pattern  

pattern取值:

  • *任意長度字元
  • 任意一個字元
  • []字符集合,表示可以是集合中的任意一個

鍵類型:

  • type key
  • object encoding key

鍵是否存在:

  • exists key

鍵重命名:

  • rename key newkey
  • renamenx key newkey

鍵刪除:

  • del key [key …]

xxx為0-15編號,程式碼資料庫編號

redis-cli -n xxx  

例如:

light@city:~/bigdataproj/soft$ redis-cli -n 1  127.0.0.1:6379[1]> set k1 11  OK  127.0.0.1:6379[1]> quit  light@city:~/bigdataproj/soft$ redis-cli -n 2  127.0.0.1:6379[2]> keys *  (empty list or set)  127.0.0.1:6379[2]> quit  

flushdbflushall區別:

flushdb只會清空當前資料庫

light@city:~/bigdataproj/soft$ redis-cli  127.0.0.1:6379> keys *  (empty list or set)  127.0.0.1:6379> flushdb  OK  127.0.0.1:6379> keys *  (empty list or set)  127.0.0.1:6379> quit  light@city:~/bigdataproj/soft$  light@city:~/bigdataproj/soft$ redis-cli -n 1  127.0.0.1:6379[1]> keys *  1) "k1"  

flushall會清空所有資料庫

light@city:~/bigdataproj/soft$ redis-cli  127.0.0.1:6379> keys *  (empty list or set)  127.0.0.1:6379> flushall  OK  127.0.0.1:6379> quit  light@city:~/bigdataproj/soft$ redis-cli -n 1  127.0.0.1:6379[1]> keys *  (empty list or set)  

select資料庫之間切換

light@city:~/bigdataproj/soft$ redis-cli  127.0.0.1:6379> select 1  OK  127.0.0.1:6379[1]> keys *  1) "k1"  127.0.0.1:6379[1]> select 15  OK  127.0.0.1:6379[15]> keys *  (empty list or set)  127.0.0.1:6379[15]> set k15 2  OK  127.0.0.1:6379[15]> keys *  1) "k15"  127.0.0.1:6379[15]>  

中文存儲獲取:

先修改鍵keys值為中,然後使用–raw登陸,就可以看到中文。

light@city:~/bigdataproj/soft$ redis-cli  127.0.0.1:6379> set keys 中 xx  OK  127.0.0.1:6379> get keys  "xe4xb8xad"  127.0.0.1:6379> strlen keys  (integer) 3  127.0.0.1:6379> quit  light@city:~/bigdataproj/soft$ redis-cli --raw  127.0.0.1:6379> get keys  中  

getset獲取原來值,並修改。

127.0.0.1:6379> get k1  1  127.0.0.1:6379> getset k1 b  1  127.0.0.1:6379> get k1  b  

megt獲取多個key值

127.0.0.1:6379> mget k1 k2  b  1  

append追加

127.0.0.1:6379> get k1  b  127.0.0.1:6379> append k1 hj  3  127.0.0.1:6379> get k1  bhj  

setrange覆蓋字元串 setrange key offset value

127.0.0.1:6379> get k1  bhj  127.0.0.1:6379> setrange k1 1 2  3  127.0.0.1:6379> get k1  b2j  

getrange獲取子串 getrange key start end 可以正也可以負向獲取

127.0.0.1:6379> get k1  b2j  127.0.0.1:6379> getrange k1 0 1  b2  127.0.0.1:6379> getrange k1 0 -1  b2j  127.0.0.1:6379> getrange k1 -2 -1  2j  

步長增減

  • INCR key
  • DECR key

incr遞增key

127.0.0.1:6379> set k1 99  OK  127.0.0.1:6379> INCR k1  100  127.0.0.1:6379> INCR k1  101  127.0.0.1:6379> INCR k1  102  127.0.0.1:6379> INCR k1  103  127.0.0.1:6379> INCR k1  104  127.0.0.1:6379> incrby k1 5  109  127.0.0.1:6379> INCRBYFLOAT k1 5.5  114.5  

點陣圖操作

setbit key offset value

setbit k1 1 1就是01000000對應的數字是64,對應的字元就是@,後面setbit k1 7 1再這個基礎上偏移7位設置1後就是01000001對應的數字是65,對應的字元就是A。

127.0.0.1:6379> setbit k1 1 1  (integer) 0  127.0.0.1:6379> get k1  "@"  127.0.0.1:6379> setbit k1 7 1  (integer) 0  127.0.0.1:6379> get k1  "A"