惯性聚合 高效追踪和阅读你感兴趣的博客、新闻、科技资讯
阅读原文 在惯性聚合中打开

推荐订阅源

月光博客
月光博客
IT之家
IT之家
Hugging Face - Blog
Hugging Face - Blog
J
Java Code Geeks
让小产品的独立变现更简单 - ezindie.com
让小产品的独立变现更简单 - ezindie.com
钛媒体:引领未来商业与生活新知
钛媒体:引领未来商业与生活新知
博客园 - 叶小钗
MyScale Blog
MyScale Blog
G
Google Developers Blog
Microsoft Azure Blog
Microsoft Azure Blog
freeCodeCamp Programming Tutorials: Python, JavaScript, Git & More
大猫的无限游戏
大猫的无限游戏
博客园 - 三生石上(FineUI控件)
Google DeepMind News
Google DeepMind News
Engineering at Meta
Engineering at Meta
The Cloudflare Blog
Martin Fowler
Martin Fowler
酷 壳 – CoolShell
酷 壳 – CoolShell
N
Netflix TechBlog - Medium
MongoDB | Blog
MongoDB | Blog
I
InfoQ
WordPress大学
WordPress大学
奇客Solidot–传递最新科技情报
奇客Solidot–传递最新科技情报
H
Help Net Security

博客园 - 斌伯

26上半年流水账 【DX12龙书】第十一章 模板 顺序无关半透明资料 【DX12龙书】第十章 混合 【DX12龙书】第九章 纹理贴图 【DX12龙书】第八章 光照 【DX12龙书】第七章 利用Direct3D绘制几何体(续) 【DX12龙书】第六章 利用Direct3D绘制几何体 【DX12龙书】第五章 渲染管线 【DX12龙书】第四章 Direct3D的初始化 Godot开发环境与学习资源 源码开放的引擎研究 海龟交易法操作商品期货 重新开始 ACTGame项目 我所理解的网络游戏<?>:战斗逻辑设计 我所理解的网络游戏<一>:网游的顶层设计 《Real Time Rendering》第四章 图形变换 《程序员的自我修养》学习笔记(一):简介 《Real Time Rendering》第三章 图形处理单元 《TCP/IP协议详解》学习笔记(一):概述 《Windows via C/C++》学习笔记(二):Working with Characters and String 《Real Time Rendering》第二章 图形渲染管线 《Real Time Rendering》第三版 翻译 《Windows via C/C++》学习笔记(一):Error handling
使用node_redis进行redis数据库crud操作
斌伯 · 2017-01-26 · via 博客园 - 斌伯

正在学习使用pomelo开发游戏服务器,碰到node.js操作redis,记录一下

假设应用场景是操作一个用户表的数据

引入node_redis库,创建客户端

var redis  = require("redis");
var client = redis.createClient();

创建用户数据

var players = new Array();

players.push({"id":49, "name":"test player11","vip":12,"rmb":23,"psd":"password1234"});
players.push({"id":932, "name":"test player12","vip":11,"rmb":23,"psd":"password1234"});
players.push({"id":936, "name":"test player13","vip":10,"rmb":23,"psd":"password1234"});
players.push({"id":626, "name":"test player14","vip":9,"rmb":23,"psd":"password1234"});

var player;
client.get('uidx', function (err, uidx)
{
    for(var i = 0; i < players.length; ++i)
    {
        client.incr('uidx');
        uidx++;

        player = players[i];

        client.hmset("user:"+ uidx, player
            , function (err) {
            });

        // client.hmset("user:"+ uidx
        //     ,'userId', player.id
        //     ,'username',player.name
        //     ,'password', player.psd
        //     , function (err) {
        //     });

        client.hmset("userId:"+ player.id
            ,'uidx', uidx
            , function (err) {
            });
    }
});

根据玩家编号查询

var playerID = 49;
client.hget('userId:'+ playerID, 'uidx', function(err, uidxQuery){
    if (err)
    {
        console.log(err);
        return;
    }
    else
    {
        //client.hget('user:'+ uidxQuery, 'username', function (err, username) {
        client.hgetall('user:'+ uidxQuery, function (err1, user) {
            if (err1)
            {
                console.log(err);
                return;
            }
            else
            {
                if (user)
                {
                    console.log(user.username);
                }
                else
                {
                    console.log("no user id is " + playerID);
                }
            }
        })
    }
});

根据玩家编号更新数据

var playerID = 49;
var player = {"id":49, "name":"angle","vip":81,"rmb":41,"psd":"waitforu"};
client.hget('userId:'+ playerID, 'uidx', function(err, uidx)
{
    if (err)
    {
        console.log(err);
        return;
    }
    else
    {
        client.hmset("user:"+ uidx, player, redis.print);
    }
});

根据玩家编号删除数据

var playerID = 49;
client.hget('userId:'+ playerID, 'uidx', function(err, uidx)
{
    if (err)
    {
        console.log(err);
        return;
    }
    else
    {
        client.del("user:"+ uidx);
        client.del('userId:'+ playerID);
    }
});