c
c
class
Search…
⌃K

Redis

Redis

1.下載

Linux
sudo apt install redis-server
Mac using homebrew

2.使用

輸入redis-server啟動redis
再開一個terminal 輸入redis-cli可產生client端

3.Redis儲存類型

Redis 字串(String)
Redis 哈希(Hash)
Redis 列表(List)
Redis 集合(Set)
Redis 有序集合(sorted set)
Redis 發布與訂閱(Pub Sub)

1.Redis 字串(String)

(簡單的設定key與value)
試著在client端輸入 `set food noodle`後`get food`

2.Redis 哈希(Hash)

(類似於javascript的object)
設定
HMSET website google www.google.com yahoo www.yahoo.com
取得
HGET website google
HGET website yahoo

3.Redis 列表(List)

(類似於Array)
設定
LPUSH fruits apple
LPUSH fruits banana
取得
0 -1 代表從哪個位置取到哪個位置(-1 代表最尾端)
LRANGE fruits 0 -1
(LPUSH代表從左端推入也可用RPUSH從右端推入) (另外也有POP方法可推出元素)

4.Redis 集合(Set)

常用來計算交集,聯集與差集
1.新增
SADD class1 "Eason" "Tim" "Jack"
SADD class2 "Eason" "John" "Peter"
2.計算交集
SINTER class1 class2
3.計算聯集
SUNION class1 class2
4.計算差集
SDIFF class1 class2

#使用Node.js溝通

基本上使用set 與get 即可用來存儲js相關字串或物件及array,但記得要先轉為string,記得要加上第三個參數callback不然可能無法使用
另外操作的過程不用像mongodb一樣寫在ready裡面
const redis = require("redis");
const Redisclient = redis.createClient();
exports.connect = () => {
Redisclient.on("ready", function (err) {
console.log("Ready");
});
Redisclient.on("error", function (err) {
console.log("Error " + err);
});
}
exports.Redisclient = Redisclient;
var Redis = require('./test1').connect;
var Redisclient = require('./test1').Redisclient;
Redis();
const payload = [{a:12,b:13},{a:12,b:13},{a:12,b:13}];
Redisclient.set("short", JSON.stringify(payload), () => {
});
Redisclient.get("short",function (err, reply) {
console.log(JSON.parse(reply)); // Will print `OK`
});
使用Pub與Sub
將test1.js 與 test2.js都改為如下程式碼,之後在terminal輸入訊息,兩邊terminal都會顯示
var redis = require("redis");
var sub = redis.createClient(), pub = redis.createClient();
sub.on("message", function (channel, message) {
console.log(message);
});
process.stdin.on("data",function(data){
pub.publish("channel001", data);
});
sub.subscribe("channel001");