class
  • Node.js安裝與NPM使用
  • require 、 module.exports
  • fs(文件操作)
  • EventEmitter(事件觸發)
  • util(工具類)
  • stream(流)
  • Assert(斷言)
  • Process(進程)
  • Repl(自訂命令列)
  • Path與URL
  • TCP, UDP
  • HTTP, HTTPS
  • ES6,ES7,ES8
  • Express框架
  • Koa框架
  • MySQL
  • MongoDB
  • RESTful API 與 API 文件撰寫
  • 使用Babel, ESLint
  • Webpack
  • WebSocket
  • Redis
  • React 基本概念1
  • React 基本概念1-1(搭配webpack)
  • React基本概念1-2(新增元件)
  • React 基本概念2
  • react-router
  • Redux 基本概念1
  • Redux 基本概念2
  • 結合Node.js與React.js搭建論壇網站1
  • 結合Node.js與React.js搭建論壇網站2
  • 結合Node.js與React.js搭建論壇網站3
  • 結合Node.js與React.js搭建論壇網站4
  • 結合Node.js與React.js搭建論壇網站5
  • 部署
  • 快取與緩存
  • Web安全機制
  • 單元測試
  • 自動化流程與搭建travis ci
  • 結合jenkins與bitBucket
  • 團隊合作Git flow與Telegram bot
Powered by GitBook
On this page
  • Redis
  • 2.使用
  • 3.Redis儲存類型
  • #使用Node.js溝通

Was this helpful?

Redis

PreviousWebSocketNextReact 基本概念1

Last updated 5 years ago

Was this helpful?

Redis

1.下載

windows下載

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");

https://github.com/dmajkic/redis/downloads
https://medium.com/@petehouston/install-and-config-redis-on-mac-os-x-via-homebrew-eb8df9a4f298#.su9r2yd8u
https://redis.readthedocs.io/en/2.4/list.html