其實問題比較簡單,寫這個是爲了把理清下整個思路。
一、Node.js
前段時間學習Node.js的時候,看了下《Node入門》,一本挺薄的書。不過學習目的在於瞭解Node是什麼東西。
函數式編程還有回調函數。回調函數是傳入被調用的函數。JS是web頁面的交互,存在於不同的上下文中,Node.js是脫離瀏覽器在後端的上下文運行的一種,node,其實就是js在服務端的解釋器。
是的,然後利用HTML和Node.js也可以實現一個圖片上傳功能。作者開玩笑,要是在90年代,都可以算作是可以IPO的模型了,所以不要小看編程。只是已經有人實現了讓你覺得平常罷了。
後面再回想之前看NoSQL,想起了裏面所說的數據類型是鍵值的有redis和Memcached,文檔的有Mongodb。
這些東西和傳統的關係型數據庫完全不同。
二、Memcached
Memcached的圖標是隻妖怪貓。發現各種語言的圖標也是個有趣的東西,印象深刻的還有Go語言。使用Java對其進行基本的操作比較簡單。
新浪微博之前有用。
《Memcached全面剖析》是日本人寫的幾篇文章。大概講解了Memcached的一些機制。包括分配管理內存機制,
分佈式算法等。應用講了,他們自己公司Mixi用了Memcached和主從數據庫。數據庫還有備份庫。想想200臺服務器的內存當硬盤用,當然性能不同層次,也是驚訝。
三、Redis
是的,Redis更簡單易學。Redis 通常被描述爲一個基於內存的,可持久化的,鍵值對方式的存儲。但事實上,Redis有五種數據結構:字符串,哈希,列表,集合,有序集合。
實踐一章中的PHP,Ruby,Python都用過。最後挑了Node.js試試。
https://github.com/NodeRedis/node_redis,GitHub上也有。
node需安裝對應的包:npm install redis
注意下載到的目錄,js文件應該與置於同一目錄。
var redis = require("redis"),
client = redis.createClient();
client.on("error", function (err) {
console.log("Error " + err);
});
client.set("string key", "string val", redis.print);
client.hset("hash key", "hashtest 1", "some value", redis.print);
client.hset(["hash key", "hashtest 2", "some other value"], redis.print);
client.hkeys("hash key", function (err, replies) {
console.log(replies.length + " replies:");
replies.forEach(function (reply, i) {
console.log(" " + i + ": " + reply);
});
client.quit();
});
Error Error: Redis connection to 127.0.0.1:6379 failed的時候,是自己的redis-server沒有啓動起來,就這麼簡單。