Redis是一個key-value類型的資料庫,而key全部都是字串,value可以是集合、hash、list等等。
Redis是通過MULTI/DISCARD/EXEC/WATCH這4個命令來實現事務功能。對事務,我們必須知道事務安全性是一個非常重要的。
事務提供了一種“將多個命令打包,然後一次性、按順序執行”的機制,並且在事務執行期間不會中斷——意思就是在事務完成之前,用戶端的其他命令都是阻塞狀態。
var redis = require("redis");var client = redis.createClient();client.on("error", function(err) {console.log("Error " + err);});client.on("connect", runSample);function runSample() {// 設定一個字串類型的值,傳回值:OKclient.set("string key", "Hello World", function(err, reply) {console.log(reply.toString());});// 擷取一個字串類型的值,返回字:valueclient.get("string key", function(err, reply) {console.log(reply.toString());});// 另外一種方式擷取一個字串類型的值,返回字:valuevar multiCmd = client.multi();multiCmd.get("string key");multiCmd.exec(function(err, reply) {console.log(reply.toString());});// 設定失效時間client.expire('string key', 3);// 有效時間驗證var myTimer = setInterval(function() {client.get('string key', function(err, reply) {if (reply) {console.log('I live: ' + reply.toString());} else {clearTimeout(myTimer);console.log('I expired');client.quit();}});}, 1000);// 檢查一個值在失效之前存留了多長時間var myTimer = setInterval(function() {client.get('string key', function(err, reply) {if (reply) {console.log('I live: ' + reply.toString());client.ttl('string key', writeTTL);} else {clearTimeout(myTimer);console.log('I expired');client.quit();}});}, 1000);// 集合操作var key = "set key";client.sadd(key, uid);client.sadd(key, "a");client.sadd(key, "b");// 擷取key集合中是否包含“1”,如果包含,返回1,否則返回0client.sismember(key, "a", showData);//client.quit();}function writeTTL(err, data) {console.log("I live for this long yet: " + data);}function showData(err, data) {if (err) {console.log("err:" + err);} else {console.log("reply:" + data);}}
參考資料:
Redis命令參考
在 Node.js 中讀寫 Redis 的資料(失效時間和TTL)
Github node_redis
Redis設計與實現
文檔資訊
- 著作權聲明:自由轉載-非商用-非衍生-保持署名 | Creative Commons BY-NC-ND 3.0
- 原文網址:http://blog.csdn.net/cdztop/article/details/32784295