I've heard of a number of ways of solving this. I don't like json in blobs since you can't query or index the blob data effectively.
I propose the attribute table pattern, which I've used to decent amount of success. It's not as sexy as ff's, but it is simple, easily cached, and queried. Here's an example schema of attributes you could set against a userId.
CREATE TABLE `Attributes` (
`userId` int(11) NOT NULL,
`attributeId` int(11) NOT NULL,
`charValue` varchar(512) default NULL,
PRIMARY KEY (`userId`,`attributeId`),
) ENGINE=InnoDB;CREATE TABLE `AttributeMap` (
`attributeId` int(11) NOT NULL auto_increment,
`attributeName` varchar(64) NOT NULL,
PRIMARY KEY (`attributeId`),
KEY `attributeName` (`attributeName`)
) ENGINE=InnoDB;