Any way to refactor this sails.js model code?

I am a former Rubyist, but now I'm working on a Sails.js website integrated with Redis. Below is some code I ripped out of it. It works, but I'm not that confident. We all know that duplication is evil. What's the right way to reduce the amount of duplication in this code?

// X Y Z W is faked for privacy 
childKey: function(userID) {
    return "X:" + userID +":Y:" + this.id 
},

parentKey: function(userID) {
    return "X:" + userID + ":Z:" + this.id
},

caseKey: function(userID) {
  return "X:" + userID + ":W:" this.id
},

// set is a noun
setMember: function(key, callback) {
    return client.smembers(key, callback);
},

setAdd: function(key, val) {
    return client.sadd(key, val.id, function(err, res){});
},


children: function(userID, callback) {
    return this.setMember(this.childKey(userID), callback);
},

parent: function(userID, callback) {
    return this.setMember(this.parentKey(userID), callback);
},

leaves: function(userID, callback) {
  return this.setMember(this.caseKey(userID), callback);
},


addChild: function(userID, dir) {
    return this.setAdd(this.childKey(userID), dir);
},

addParent: function(userID, dir) {
    return this.setAdd(this.parentKey(userID), dir);
},

addLeaf: function(userID, theCase) {
  return this.setAdd(this.caseKey(userID), theCase);
}

How about this:

var MySet = {
  // some properties (id, clients, etc.)
  // list of items keys
  _itemKeys: { child: 'Y', parent: 'Z', leaf: 'W' },

  // private methods
  _getKey: function(type, userId) {
    return "X:" + userId + ":" + this._itemKeys[type] + ":" this.id
  },

  _setMember: function(key, callback) {
    return this.client.smembers(key, callback);
  },

  _setAdd: function(key, val) {
    return this.client.sadd(key, val.id, function(err, res) {});
  },

  // public methods
  add: function(type, userId, param) {
    return this._setAdd(this._getKey(type, userId), param);
  },

  member: function(type, userId, callback) {
    return this._setMember(this._getKey(type, userID), callback);
  }
};

Now you can use it in following way:

MySet.add('child', 1, param);
MySet.add('parent', 1, param);
MySet.add('leaf', 1, param);

MySet.member('child', 1, function() {});
MySet.member('parent', 1, function() {});
MySet.member('leaf', 1, function() {});

Hope that helps.