全民學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
flushdb
與flushall
區別:
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"